The purpose of this program is to benchmark the sortedness performance on various indexes.
This research project is part of the Data-intensive Systems and Computing (DiSC) lab at Boston University.
-
Clone this repo
git clone https://github.com/BU-DiSC/bliss_benchmark.git
-
Create the build directory
cd bliss_benchmark && mkdir build
-
Create CMake configuration
cmake ..
-
Compile the program
make
To run the program, use:
./bliss_bench [OPTIONS]
The program currently accepts the following parameters:
-d, --data_file arg Path to the data file
-p, --preload_factor arg Preload factor (default: 0.5)
-w, --write_factor arg Write factor (default: 0.25)
-r, --read_factor arg Read factor (default: 0.1)
-m, --mixed_read_write_ratio arg Read write ratio (default: 0.5)
-s, --seed arg Random Seed value (default: 0)
-v, --verbosity [=arg(=1)] Verbosity [0: Info| 1: Debug | 2: Trace] (default: 0)
-i, --index arg Index type (alex|lipp) (default: btree)
If you are interested in contributing to this benchmarking effort, please reach out to Aneesh Raman / Andy Huynh / Manos Athanassoulis.
We primarily import indexes as CMake libraries, before integrating them into the benchmarking framework.
Import the library in external/CMakeLists.txt
. Then, link the library to the bliss
executable in the CMakeLists.txt
file in the root project directory.
Every index in the framework uses an adapter to interact with the benchmark. These adapters are found under src/bliss
.
- The abstract class for the adapter is found at
src/bliss/bliss_index.h
. - Add the adapter code for the new index
<abc>
in its own file calledbench_abc.h
undersrc/bliss
.
The benchmark code is found at bliss_bench.cpp
. To add the index to the benchmark:
- Include the relevant header file, e.g.,
#include bliss/bench_abc.h
. - In the
main()
function, add the additional condition when checkingconfig.index
for parsing the new index.
Currently, we support basic unit tests with put()
and get()
operations in the benchmark.
For the newly integrated index (e.g., abc
), add relevant unit tests under the tests/
folder.
- Create a new directory under
tests/
for the indexabc
by prefixing the folder withtest_*
(i.e.,mkdir tests/test_abc
). - Each index folder gets its own
CMakeLists.txt
file that will link with the outertests/CMakeLists.txt
file. - Copy the
CMakeLists.txt
file from one of the existing indexes intotests/abc
(i.e.,cp tests/test_btree/CMakeLists.txt tests/test_abc/
). - Modify
tests/CMakeLists.txt
to include the new subdirectory (i.e., add a new line withadd subdirectory(test_abc)
).
You can create one or multiple cpp files under tests/test_abc/
for your unit tests.
- Name every unit test file prefixed with the index name (e.g.,
abc_tests.cpp
). - Include the header file
bliss_index_tests.h
in your test file to import common util code.
You may refer to tests/test_btree/btree_tests.cpp
for samples.
You may report bugs/issues directly on Github here.
For additional information, contact: