Implementation of a buffer pool based database system. The development of the system was carried out over the duration of one year as part of a university project at the Chair of Applied Computer Science III, University of Mannheim.
There are several tools you will need to install and execute the application. In the following is a list with all required tools and technologies required for installing and running the system:
- UNIX-like operating system: All development and testing was carried out on UNIX-like operating systems. As various UNIX system calls are used throughout the program, the system will not run under Windows.
- GNU Make: As development and testing was carried out on UNIX-like operating systems, the de-facto standard build and install system GNU Make is used.
- C++17 compatible compiler: As C++17 features are frequently used and all tests were carried out with GCC 7.3.0, we recommend to use this compiler or a never version
- Intel Processor: As we use various Intel intrinsics, the system is currently only able to run on Intel processors
- Little Endian Architecture
Implementation of the buffer pool.
For further informations, take a look at src/buffer/README.md
Implementation of a command line interface. By executing queries via the command line interface, the system can be controlled.
For further informations, take a look at src/cli/README.md
Various helper files and functionalities.
For further informations, take a look at src/infra/README.md
Implementation of various low level page interpreter working on the bits and bytes of pages.
For further informations, take a look at src/interpreter/README.md
Implementation of the database instance manager and main-method.
For further informations, take a look at src/main/README.md
Implementation of raw partitions (partitions for raw/block devices), file partitions (working on files in the file system) and the partition manager (managing all partitions).
For further informations, take a look at src/partition/README.md
Implementation of free space management segments (segments with a free space management of pages) and segments for the N-ary storage model (NSM).
For further informations, take a look at src/segment/README.md
Implementation of the threadpool.
For further informations, take a look at src/threading/README.md
The build and installation process will be described in the following. Follow the Quick Start Guide for a fast installation and get the system running.
-
Make sure all the Requirements are satisfied
-
Clone the source with
git
:
git clone https://github.com/WeberNick/masterDB.git
- Build and install:
cd masterDB/src
make
- Run
./main/main
- Getting Help
./main/main --help
- Partition Manager: Maintains all the different partitions of the database system
- File Partitions: Using files managed by the filesystem
- Raw Partitions: Using a raw device without any filesystem on it
- Segment Manager: Maintains all the different segments in the database system
- Free Space Management (FSM) Segments: Segments with a free space management of their pages
- Slotted Pages (SP) Segments: Segments with slotted pages
- Buffer Manager: Maintains the buffer pool of the system. On memory pressure, a random eviction policy is applied
- Threading: The system is multi threaded using a thread pool
- Interpreter: Various interpreter are implemented to work with different page layouts
- Tracing: Tracing can be activated by setting a command line argument
- Command Line Interpreter: The system is controlled via a command line interface
- Implement higher level functionalities such as a query execution engine
- Implement a lock manager and transaction manager
- Implement index structures
- ...