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.
HyperPebblesDB is part of LevelDB family, and thus it is API-compatible with LevelDB and HyperLevelDB. Please read full paper on PebblesDB and corresponding slides for further details.
- Continuous code integration using Travis-CI
- New
emptyGuards
option indb_bench
that gives detailed SSTables distribution under each guard across all levels db_bench
enables "fillseq" and "fillrandom" even when using existing databasedb_bench
support "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
options.parallel_guard_compaction
- 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 libsnappy
and libtool
.
- To install on Linux, please use
sudo apt-get install libsnappy-dev libtool
. - For MacOSX, use
brew install snappy
and instead ofldconfig
, useupdate_dyld_shared_cache
.
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.