SeamlessDB is a cloud-native database prototype designed for academic research, featuring efficient transaction breakpoint resumption within a compute-state-storage three-tier architecture.
We implement our designs mentioned in the paper (SeamlessDB: a Cloud-Native Database for Resilient Failover with Breakpoint Resumption) based on this system.
- Compiler: g++ 11.4.0
- Operating System: Ubuntu 22.04
- Hardware:
- Mellanox InfiniBand NIC (e.g., ConnectX-5) that supports RDMA
- Mellanox InfiniBand Switch
- brpc
sudo apt-get install -y git g++ make libssl-dev libgflags-dev libprotobuf-dev libprotoc-dev protobuf-compiler libleveldb-dev
cd src/thirdparty/brpc
cmake -B build && cmake --build build -j6
- RocksDB: v6.6.4
# build storage pool, state pool, rw/ro server, proxy
bash build.sh
# build seamless client
cd seamless_client
mkdir build && cd build
cmake .. && cmake --build .
Before running the program, you need to fill in the configuration file first. All configuration files are in here and we provide a default configuration. You have to replace the 'ip' and 'port' values. Moreover, you need to modify the 'ip' and 'port' settings for the storage pool in rw_server.cpp.
cd build
# launch stoarge pool
./bin/storage_pool
# launch state_pool
./bin/state_pool
# launch rw/ro_server
./bin/rw_server active/backup rw/ro
# launch client
cd seamless_client
./build/bin/seamless_client
# launch proxy(be sure that storage pool, state pool and rw server have been launched)
./bin/proxy rw/ro
We use scripts to run experiments. Before running experiments, you have to make sure that the storage pool, state pool, and rw server have been launched.
./bin/storage_pool
./bin/state_pool
./bin/rw_server active ro
./bin/rw_server backup ro
cd scripts
# You have to update the normal execution latency in run_test.sh
bash run_test 40 # represents that the active_no will be killed at 40% failover point
run tpcc-experiments:
./bin/storage_pool
./bin/state_pool
./bin/rw_server active rw
./bin/rw_server backup rw
cd scripts
bash TPC-C_test.sh