Back to overview

Kvell: The Design and Implementation of a Fast Persistent Key-Value Store

Type of publication Peer-reviewed
Publikationsform Proceedings (peer-reviewed)
Author LepersBaptiste, BalmauOana, GuptaKaran, ZwaenepoelWilly,
Project Building Flexible Large-Graph Processing Systems on Commodity Hardware
Show all

Proceedings (peer-reviewed)

Title of proceedings Proceedings SOSP
DOI 10.1145/3341301.3359628

Open Access

Type of Open Access Repository (Green Open Access)


Modern block-addressable NVMe SSDs provide much higher bandwidth and similar performance for random and sequential access. Persistent key-value stores (KVs) designed for earlier storage devices, using either Log-Structured Merge (LSM) or B trees, do not take full advantage of these new devices. Logic to avoid random accesses, expensive operations for keeping data sorted on disk, and synchronization bottlenecks make these KVs CPU-bound on NVMe SSDs. We present a new persistent KV design. Unlike earlier designs, no attempt is made at sequential access, and data is not sorted when stored on disk. A shared-nothing philosophy is adopted to avoid synchronization overhead. Together with batching of device accesses, these design decisions make for read and write performance close to device bandwidth. Finally, maintaining an inexpensive partial sort in memory produces adequate scan performance. We implement this design in KVell, the first persistent KV able to utilize modern NVMe SSDs at maximum bandwidth. We compare KVell against available state-of-the-art LSM and B tree KVs, both with synthetic benchmarks and production workloads. KVell achieves throughput at least 2x that of its closest competitor on read-dominated workloads, and 5x on write-dominated workloads. For workloads that contain mostly scans, KVell performs comparably or better than its competitors. KVell provides maximum latencies an order of magnitude lower than the best of its competitors, even on scan-based workloads.