This is a fork of PebblesDB, a write-optimized key-value store built with FLSM (Fragmented Log-Structured Merge Tree) data structure. FLSM is a modification of the standard log-structured merge tree data structure which aims at achieving higher write throughput and lower write amplification without compromising on read throughput.
Features not in PebblesDB
- Continuous code integration using Travis-CI
db_benchthat gives detailed SSTables distribution under each guard across all levels
db_benchenables "fillseq" and "fillrandom" even when using existing database
db_benchsupport "ycsb" option by reading a trace file generated from the YCSB benchmark (check "scripts/trace_gen.sh" for details)
- Support guard-based parallel compaction, which can be turn on/off with
- Support Succinct Range Filter (SuRF) as an alternative to bloom filter. Check SuRF paper for details
- Better internal documentation
- Verified portability on both Mac & Linux using g++-5
HyperPebblesDB is fully-tested on Linux. It requires
- To install on Linux, please use
sudo apt-get install libsnappy-dev libtool.
- For MacOSX, use
brew install snappyand instead of
HyperPebblesDB was built, compiled, and tested with g++-4.7, g++-4.9, and g++-5. It may not work with other versions of g++ and other C++ compilers.
$ cd HyperPebblesDB/ $ autoreconf -i $ ./configure $ make $ make install $ldconfig
- HyperPebblesDB is not fully-compatible with RocksDB. It lacks of features list under Features Not in LevelDB.