Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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.

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