Skip to content

xxks-kkk/HyperPebblesDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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