BeeDB is a software project that teaches students the architecture and implementation of DataBase Management Systems.
This project is related to the Basic Module *Architecture & Implementation of DBMS*. The course is usually teached every summer term, see [dbis page of TU Dortmund](http://dbis.cs.tu-dortmund.de/cms/en/teaching/index.html) for more information.
**Attention: Please do not publish and share your solution with other students!**
## Dependencies
*`git`
*`cmake` (at least version `3.9`)
*`build-essential`
*`bison` and `flex`
## How to build
*`cmake .`
*`make`
**OR**, if you prefer a separate `build` folder:
*`mkdir build && cd build`
*`cmake ..`
*`make`
Default build is in `Debug` mode.
If you want to build in `Release` mode use `cmake . -DCMAKE_BUILD_TYPE=Release` or set `CMAKE_BUILD_TYPE` in `CMakeLists.txt`.
## How to use
Usage: beedb [options] db-file
Positional arguments:
db-file File the database is stored in. Default: bee.db
Optional arguments:
-h --help show this help message and exit
-l --load Load SQL file into database.
-q --query Execute Query.
-c --console Run console after loading file or executing query.
--buffer-manager-frames Number of frames within the frame buffer.
--scan-page-limit Number of pages the SCAN operator can pin at a time.
--enable-index-scan Enable index scan and use whenever possible.
--enable-hash-join Enable hash join and use whenever possible.
--stats Print all execution statistics
## Configuration
Some configuration outside the console arguments is stored in the file `beedb.ini`.
* The number of pages stored as frames in the buffer manager (`buffer manager.frames`)
* The replacement strategy of frames in the buffer manager (`buffer manager.strategy`)
* The `k` parameter for `LRU-K` replacement strategy (`buffer manager.k`)
* The number of how many pages can be pinned by a scan at a time (`scan.page-limit`)
* Enable or disable usage of index scan (`scan.enable-index-scan`)
* Enable or disable usage of hash join (`join.enable-hash-join`)