Skip to content
A RocksDB plugin for key-value separation, inspired by WiscKey.
C++ CMake Other
Branch: master
Clone or download
wujy-cs and yiwu-arbug Limit blob file read IO with rate_limiter (#54)
Limit Titan blob file read IO with rate_limiter, to avoid burst of IO starve online workloads.
Latest commit d7b4091 Aug 5, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmake fix building on ARM64 (#23) Jun 14, 2019
include/titan update discardable size before delete files in ranges (#43) Jul 25, 2019
scripts Add clang-format script and CI job (#9) May 15, 2019
tools misc: unified scope for unique_ptr (#24) Jun 17, 2019
.clion.source.upload.marker Turn titan into read-only on error during gc and version_change (#42) Jul 18, 2019
.gitignore Fix mac build (#41) Jul 16, 2019
.travis.yml Fix mac travis: check if libs existed before install (#47) Jul 22, 2019
CMakeLists.txt Fix mac build (#41) Jul 16, 2019
LICENSE Initial commit May 2, 2019 Update Jun 24, 2019
codecov.yml change codecov comment style (#8) May 16, 2019

Titan: A RocksDB Plugin to Reduce Write Amplification

Build Status codecov

Titan is a RocksDB Plugin for key-value separation, inspired by WiscKey. For introduction and design details, see our blog post.

Build and Test

Titan relies on RocksDB source code to build. You need to checkout RocksDB source code locally, and provide the path to Titan build script.

# To build:
mkdir -p build
cd build
cmake .. -DROCKSDB_DIR=<rocksdb_source_dir>
make -j<n>

# Build static lib (i.e. libtitan.a) only:
make titan -j<n>

# Release build:
cmake .. -DROCKSDB_DIR=<rocksdb_source_dir> -DCMAKE_BUILD_TYPE=Release

# Building with sanitizer (e.g. ASAN):
cmake .. -DROCKSDB_DIR=<rocksdb_source_dir> -DWITH_ASAN=ON

# Building with compression libraries (e.g. snappy):
cmake .. -DROCKSDB_DIR=<rocksdb_source_dir> -DWITH_SNAPPY=ON

# Run tests after build. You need to filter tests by "titan" prefix.
ctest -R titan

# To format code, install clang-format and run the script.
bash scripts/


Currently Titan is only compatible with RocksDB 5.18.

You can’t perform that action at this time.