A PebblesDB fork with a few enhancements
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
db
doc
graphs
helpers/memenv
include/pebblesdb
issues
learning
m4
port
results
scripts
table
third-party
util
.gitignore
.gitmodules
.travis.yml
AUTHORS
CMakeLists.txt
LICENSE
Makefile.am
NEWS
README
README.md
TODO
benchmark.cc
benchmark.md
collate.sh
configure.ac
design-sentinels.txt
leveldb-dump-all.cc
leveldb-verify.cc
libpebblesdb.pc.in
reliability.sh
tracea_load.txt
tracea_run.txt

README.md

HyperPebblesDB

Build Status

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.

Features not in PebblesDB

  • Continuous code integration using Travis-CI
  • New emptyGuards option in db_bench that gives detailed SSTables distribution under each guard across all levels
  • db_bench enables "fillseq" and "fillrandom" even when using existing database
  • db_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

Dependencies

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 of ldconfig, use update_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.

Installation

$ cd HyperPebblesDB/ 
$ autoreconf -i  
$ ./configure
$ make 
$ make install  
$ldconfig

Caveat