Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tikv/titan
A RocksDB plugin for key-value separation, inspired by WiscKey.
https://github.com/tikv/titan
database rocksdb
Last synced: 3 days ago
JSON representation
A RocksDB plugin for key-value separation, inspired by WiscKey.
- Host: GitHub
- URL: https://github.com/tikv/titan
- Owner: tikv
- License: apache-2.0
- Created: 2019-05-02T18:59:17.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-08-01T23:20:01.000Z (3 months ago)
- Last Synced: 2024-08-02T23:54:06.097Z (3 months ago)
- Topics: database, rocksdb
- Language: C++
- Homepage: https://pingcap.com/blog/titan-storage-engine-design-and-implementation/
- Size: 737 KB
- Stars: 477
- Watchers: 36
- Forks: 164
- Open Issues: 31
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Titan: A RocksDB Plugin to Reduce Write Amplification
[![Build Status](https://travis-ci.org/tikv/titan.svg?branch=master)](https://travis-ci.org/tikv/titan)
[![codecov](https://codecov.io/gh/tikv/titan/branch/master/graph/badge.svg)](https://codecov.io/gh/tikv/titan)Titan is a RocksDB Plugin for key-value separation, inspired by
[WiscKey](https://www.usenix.org/system/files/conference/fast16/fast16-papers-lu.pdf).
For introduction and design details, see our
[blog post](https://pingcap.com/blog/titan-storage-engine-design-and-implementation/).## 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# To specify custom rocksdb
cmake .. -DROCKSDB_DIR=
# or
cmake .. -DROCKSDB_GIT_REPO= -DROCKSDB_GIT_BRANCH=# Build static lib (i.e. libtitan.a) only:
make titan -j# Release build:
cmake .. -DROCKSDB_DIR= -DCMAKE_BUILD_TYPE=Release# Building with sanitizer (e.g. ASAN):
cmake .. -DROCKSDB_DIR= -DWITH_ASAN=ON# Building with compression libraries (e.g. snappy):
cmake .. -DROCKSDB_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
Current version of Titan is developed and tested with TiKV's [fork][6.29.tikv] of RocksDB 6.29.
Another version that is based off TiKV's [fork][6.4.tikv] of RocksDB 6.4 can be found in the [tikv-6.1 branch][tikv-6.1].[6.4.tikv]: https://github.com/tikv/rocksdb/tree/6.4.tikv
[6.29.tikv]: https://github.com/tikv/rocksdb/tree/6.29.tikv
[tikv-6.1]: https://github.com/tikv/titan/tree/tikv-6.1