This repository implements VeriBench, a benchmark framework for database systems with verifiability. VeriBench evaluates all main components of a verifiability-enabled database, namely authenticated data structure, query processing, verification, and auditing. It provides comprehensive performance analysis with verification-aware micro- and macro-benchmarks. Meanwhile, VeriBench provides user friendly extensible APIs. Users can easily add their customized workloads and new ledger databases for benchmarking.
-
/workload
- Contains workload interface and implementations. The implementation of workload is placed under specific folder and implementing common APIs specified inworkload.h
. In this repository, we provide default implementation for YCSB, SmallBank, and TPCC. -
/analyzer
- Provides scripts to process the log generated during workload execution. -
/dbadapter
- Contains DB adapter interface and implementations. Users can add new adapter for the database to be evaluated by implementing a list of common database APIs defined indbadapter.h
. Users shall put their implementation files in a separate folder, and providestart_server.sh
andstop_server.sh
in theconf
folder. -
/dbs
- (Optional) Contains executables and shared libraries of the database under evaluation. The database can be installed anywhere else with thedb_bin_dir
specidified in theconf.sh
-
/exps
- Contains the program and scripts to start the experiments.conf.sh
- The configurations and environment to run the experiments.run_exps.sh
- Script to start the experiments
- gcc (≥ 5.5)
- cmake (≥ 3.12)
- Intel Threading Building Block (tested with tbb_2020 version)
$ mkdir build && cd build
$ cmake .. && make
Fill in the configurations in /exps/conf.sh
$ cd exps
$ ./run_exps.sh