BeeDB/README.md

79 lines
3.1 KiB
Markdown
Raw Normal View History

2020-04-26 16:38:08 +02:00
# BeeDB
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`)
## Non-SQL Commands
* `:explain [plan,graph]`: prints the query plan, either as a table or a graph (a list of nodes and edges)
* `:get [option-name]`: prints either all or the secified option of the database configuration
* `:set option-name numerical-value`: changes the specified option. Only numerical values are valid
* `:show [tables,indices,columns]`: A quick way to show available tables, their columns or indices
## Examples
##### Import
`./beedb -l movies.sql`
##### Run a single query
`./beedb -q "SELECT * FROM movie;"`
##### Open the BeeDB Console
`./beedb`
##### Run a query and open console afterwards
`./beedb -q "SELECT * FROM movie;" -c`
# For developers
* If you want to commit to the repository please `make git-hook` before commit.
# Credits
* Thanks to Hyrise for the SQL parser (MIT, [See on GitHub](https://github.com/hyrise/sql-parser))
* Thanks to p-ranav for argparse (MIT, [See on GitHub](https://github.com/p-ranav/argparse))