cole-indexandcole-starare COLE and COLE with asynchronous mergepatricia-trieis the implementation of the MPTlippis the the updatable learned index with node persistencenon-learn-cmiis the column-based Merkle index (CMI) that uses non-learned indexexpis the evaluation backend of all systems including the throughput and the provenance queries
- Install Rust.
sudo apt install -y curl
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
- Run
sudo apt updateandsudo apt -y install git make clang pkg-config libssl-dev libsqlite3-dev llvm m4 build-essential
cd ~
git clone https://github.com/hkbudb/cole
- Build the latency testing binary and provenance testing binary
cd ~/cole
cargo build --release --bin latency
cargo build --release --bin prov
- If the program is built successfully, you should find two executable programs
latencyandprovin the directory~/cole/target/release/
- Download the latest release of YCSB to the $HOME directory:
cd ~
curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz
tar xfvz ycsb-0.17.0.tar.gz
- Install Java
sudo apt -y install default-jdk
sudo apt -y install default-jre
- Use script
build_ycsb.shto generatereadonly,writeonly, andreadwriteevendatasets
cd ~/cole/exp
./build_ycsb.sh
-
After the build process finishes, three
txtfiles will be generate:cole/exp/readonly/readonly-data.txtcole/exp/writeonly/writeonly-data.txtcole/exp/readwriteeven/readwriteeven-data.txt
-
Next, prepare the dataset for provenance queries:
cd ~/cole/exp/
./build_prov_ycsb.sh
- After the build process finishes, a file named
cole/exp/prov/prov-data.txtwill be generated.
cd ~/cole/exp/
python3 run.py
- Use functions like
test_overall_kvstore(),test_overall_smallbank(), andtest_prov()incole/exp/run.pyto evaluate the workload ofKVStore,SmallBank, and provenance query performance. - You may select different scales
scale = [1000, 10000, 100000, 1000000, 10000000]or different indexesindexes = ["mpt", "cole", "cole_star", "non_learn_cmi"]
The result json files can be found in each workload directory (e.g., smallbank, writeonly, prov)
*-storage.jsonstores the storage information*-ts.jsonstores the block timestamp information including start timestamp, end timestamp, and block latency, which can be used to compute the system throughput and latency