A RocksDB plugin for key-value separation, inspired by WiscKey.
Go to file
Bisheng Huang f5c7e39e1e
Add raw blob size to blob index (#334)
Signed-off-by: Bisheng Huang <hbisheng@gmail.com>
2025-07-02 11:58:24 +08:00
cmake Upgrade RocksDB (#319) 2024-10-08 18:14:10 +08:00
include/titan Upgrade RocksDB (#319) 2024-10-08 18:14:10 +08:00
scripts travis: update environment and enable compression (#191) 2020-10-20 20:29:06 -07:00
src Add raw blob size to blob index (#334) 2025-07-02 11:58:24 +08:00
tools Upgrade RocksDB (#319) 2024-10-08 18:14:10 +08:00
util print git hash (#40) 2019-07-11 13:19:58 +08:00
.gitignore add `seqno` into iterator (#198) 2020-12-11 19:29:19 +08:00
.travis.yml Optimize Travis CI (#211) 2021-04-28 13:03:48 +08:00
CMakeLists.txt Upgrade RocksDB (#319) 2024-10-08 18:14:10 +08:00
LICENSE Initial commit 2019-05-02 11:59:18 -07:00
README.md Update compatibility part of README (#333) 2025-06-03 16:08:03 +08:00
codecov.yml Store Titan stats in rocksdb statistics (#120) 2020-03-27 11:38:04 +08:00

README.md

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 ..
make -j<n>

# To specify custom rocksdb
cmake .. -DROCKSDB_DIR=<rocksdb_source_dir>
# or
cmake .. -DROCKSDB_GIT_REPO=<git_repo> -DROCKSDB_GIT_BRANCH=<branch>

# 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/format-diff.sh

Compatibility with RocksDB

Titan Version TiKV Version RocksDB Version (TiKV fork)
master 8.5.0 + 8.10.tikv
tikv-7.5 7.5.0 + 6.29.tikv
tikv-7.1 7.1.0 + 6.29.tikv
tikv-6.5 6.5.0 + 6.29.tikv
tikv-6.1 6.1.0 + 6.4.tikv