Codebase for the Thesis: Evaluation of a Radix Tree Cache for Database Management Systems
PDF of the thesis can be found in the root.
Author: Matteo Wohlrapp
This repository has 2 branches. 'Main' contains the version that is explained in the thesis and that is also used for the evaluation. 'Multithreading' is not complete and only provides support for read and update operations. Furthermore, the locking mechanism is not sophisticated enough to create a performance gain. Refer to the appendix of the thesis for performance data.
Docker is not necessary to run the executable, but if you want to use it, the following commands can be used:
- Build the images:
docker build -t radixtree .
- Run the docker container:
If you want to debug, you need to run
docker run -v <path_to_project>:/app -p 8000:8000 -it --cap-add=SYS_PTRACE --security-opt seccomp=unconfined radixtree
otherwise, the following is enough,
docker run -v <path_to_project>:/app -p 8000:8000 -it radixtree
- Navigate into the build folder:
cd build - Run
cmake ..to create the makefile. Version 10.0.0-4ubuntu1 of the clang compiler is used. If you want to build in debug, usecmake -DCMAKE_BUILD_TYPE=Debug .. - Run
maketo generate the executable and tests.
- Navigate into the build folder:
cd build - Run
cmake -D BUILD_DOC=ON ..to create the makefile. Version 10.0.0-4ubuntu1 of the Clang compiler is used. - Run
maketo generate the executable and tests andmake doc_doxygento generate the documentation.
There are multiple options to run the code. Check the help menu to find out more:
-sruns the script that is also used for the benchmarks in the evaluation section of the thesis and saves the results to a CSV file. Before running, create aresultsfolder under root if not already available-w{,a,b,c,e,x}runs single workloads. Either the predefined ones or an individual one, defined through the command line parameters-r <number>executes a 'run confiugration', which is basically a way for you to specify what you want to compute. Just modifyrun_config_one.ccorrun_config_two.cc. The data manager will be created automatically
In the tests folder, there are multiple numerous unit tests, testing all important components. You can run them by executing the ./Alltests executable.
Additionally, there is a debugger, defined in Debugger.h, that offers a function to traverse both the radix- and the B+ tree and print information about the nodes. You can use it in one of the run_config files and pass the data manager in order to extract information about the trees.
In the analysis folder in the root, you can find a Matlab script that generates graphs from the data in the CSV files generated when running with -s.
The graphs are generated and saved as tickz files in the analysis folder. The files present are for the run specified in the Matlab script.