Closed AmitKumarDas closed 2 years ago
// This paper presents a novel data structure, the Fragmented
// Log-Structured Merge Trees (FLSM), which combines ideas
// from the Skip List and Log-Structured Merge trees
// data structures along with a novel compaction algorithm.
// FLSM strikes at the root of write amplification by drastically
// reducing (and in many cases, eliminating) data rewrites,
// instead fragmenting data into smaller chunks that are
// orga nized using guards on storage.
//
// Guards allow FLSM to find keys efficiently. Write operations on
// LSM stores are often stalled or blocked while data is compacted
// (rewritten for better read performance); by drastically reducing write
// IO, FLSM makes compaction significantly faster, thereby
// increasing write throughput.
// Building a high-performance key-value store on top of
// the FLSM data structure is not without challenges; the
// design of FLSM trades read performance for write
// throughput.
//
// This paper presents PebblesDb, a modification of the
// HyperLevelDB key-value store that achieves the trifecta
// of low write amplification, high write throughput, and high
// read throughput. PebblesDb employs a collection of techniques
// such as parallel seeks, aggressive seek-based compaction, and
// sstable-level bloom filters to reduce the overheads inherent
// to the FLSM data structure. Although many of the techniques
// PebblesDb employs are well-known, together with the FLSM
// data structure, they allow PebblesDb to achieve
// excellent performance on both read-dominated and
// write-dominated workloads.