minovakovi / akdb

An experimental relational DBMS developed by students @ Faculty of Organization and Informatics, University of Zagreb
6 stars 15 forks source link

AKDB

AKDB

https://minovakovi.github.io/akdb/

An experimental relational DBMS developed by students @ Faculty of Organization and Informatics, University of Zagreb

What is AKDB?

AK (Russian: Автомат Калашникова, English: Avtomat Kalasnikova) DB is a simple relational database management system developed by professor Markus Schatten of Faculty of Organization and Informatics in Varaždin, Croatia. It is also regularly developed, maintained and fixed by graduate students attending 'Physical Database Modeling' course every spring.

The development started in 2009 and is still ongoing, as building a custom DBMS is not an easy task. Most of it is written in C, with some Python for Server stuff and documentation which is generated automatically and can be viewed in HTML or LaTeX form. More on that in Installation and Build pages.

TESTING

Since the project is still in development, tests are required to ensure its stability and functionality. There are couple of dozen tests that check whether certain parts of the application work correctly.

This will write out the list of current tests that can be performed. As of 1st of June 2022 they are numbered and divided into few categories:

Auxiliary:

  1. TRAJAN ( AK_tarjan )
  2. OBSERVABLE ( AK_observable )
  3. OBSERVABLE PATTERN ( AK_observable_patte )
  4. MEMPRO ( auxi: AK_mempro )
  5. DICTIONARY ( AK_dictionary )
  6. PARSER ( AK_iniparser )

Disk manager:

  1. ALLOCATION BIT ( AK_allocationbit )
  2. ALLOCATION TABLE ( AK_allocationtable )
  3. THREAD SAFE BLOCK ( AK_thread_safeblock )

File system:

  1. ID ( AK_id )
  2. LO ( AK_lo )
  3. FILES ( AK_files_test )
  4. FILE IO ( AK_fileio_test )
  5. OP RENAME ( AK_op_rename )
  6. FILE SORTING ( AK_filesort )
  7. FILE SEARCH ( AK_filesearch )
  8. SEQUENCE ( AK_sequence )
  9. TABLE TEST ( AK_table_test )

Index:

  1. BITMAP ( AK_bitmap )
  2. BINARY TREE ( AK_btree )
  3. HASH ( AK_hash )

Memory manager:

  1. MEMORY MANAGER ( AK_memoman )
  2. BLOCK MEMORY ( AK_block )

Optimization:

  1. RE ASSOCIATION ( AK_rel_eq_assoc )
  2. RE COMMUTATION ( AK_rel_eq_comut )
  3. RE SELECTION ( AK_rel_eq_selection )
  4. RE PROJECTION ( AK_rel_eq_projectio )
  5. QUERY OPTIMIZATION ( AK_query_optimizati )

Relational operators:

  1. UNION ( AK_op_union )
  2. JOIN ( AK_op_join )
  3. PRODUCT ( AK_op_product )
  4. AGGREGATION ( AK_aggregation )
  5. GROUP BY (AK_group_by)
  6. HAVING (AK_selection_having)
  7. INTERSECTION ( AK_op_intersect )
  8. SELECTION ( AK_op_selection )
  9. SELECTION PATTERN ( AK_op_selection_patt )
  10. CHECK EXPRESSION ( AK_expressioncheck )
  11. DIFFERENCE ( AK_op_difference )
  12. PROJECTION ( AK_op_projection )
  13. THETA JOIN ( AK_op_theta_join )

SQL tests:

  1. COMMAND ( AK_command )
  2. DROP ( AK_drop )
  3. VIEW ( AK_view )
  4. NNULL ( AK_nnull )
  5. SELECT ( AK_select )
  6. TRIGGER ( AK_trigger )
  7. UNIQUE ( AK_unique )
  8. FUNCTION ( AK_function )
  9. PRIVILEGES ( AK_privileges )
  10. REFERENCE ( AK_reference )
  11. CONSTRAINT BETWEEN ( AK_constraint_betwee )
  12. CHECK ( AK_check_constraint )
  13. CONSTRAINT NAMES ( AK_constraint_names )
  14. INSERT ( AK_insert )

Transaction:

  1. TRANSACTION ( AK_transaction )

Recovery:

  1. RECOVERY ( AK_recovery )