GO TO A SECTION

↑ ↓ to navigate · Enter to openExplore all sections →
FDEInterviews logo
arXiv preprint

Rethinking LSM-tree based Key-Value Stores: A Survey

RocksDB, Cassandra and TiKV all write through an LSM-tree. This 2025 survey maps where they hurt: compaction stalls, read amplification, new devices, distribution and tenants.

Breakdown by FDE Interviews · 16 min read · Updated

About the original · 2025
AUTHORS
Lv, Li, Xu, Gao, Yang, Wang, Xue
FROM
Xiamen University, MBZUAI, OceanBase (Ant Group)
PUBLISHED
Jul 2025 · arXiv preprint
CITED BY
2Semantic Scholar · Oct 2026
IN THIS BREAKDOWN · 10 SECTIONS

You can read 14% of this breakdown.

01

The paper in one minute

A log-structured merge-tree takes every write into memory, logs it, and later writes it to disk in large sorted batches. Random writes become sequential ones. LevelDB and RocksDB are built this way, and so are the storage layers of Bigtable, Cassandra, HBase, TiKV and OceanBase. Yina Lv, Qiao Li and colleagues from Xiamen University, MBZUAI and OceanBase at Ant Group survey what the last five years of research did about the bill that comes with it.

That bill is compaction. Data lands on disk as immutable sorted files (SSTables) in level L0, and background jobs keep merging them into larger levels to remove old versions and deleted keys. Compaction uses the same CPU, disk bandwidth and memory as user requests. When it falls behind, the store throttles or stops writes (a write stall). Compact eagerly and the same data is rewritten many times (write amplification); compact lazily and a read has to look in many files (read amplification).

The survey sorts more than 100 papers from 2020 to 2025 into five questions: how to schedule and shape compaction, how to speed up point and range reads, how to use NVMe, zoned and persistent-memory devices, how the design changes when it is distributed across nodes, and how to keep tenants from hurting each other. It ends with a comparison of single-node, shared-nothing and shared-storage architectures and five open problems. It contains no benchmarks of its own beyond one timing.

THE IDEA, VISUALLY
WRITE PATH, READ PATH AND COMPACTION put / delete WAL logged first MemTable 64 MB in RocksDB Immutable MemTable get(k) MEMORY DISK flush 3 SSD, zoned SSD, persistent memory L0 18–35 10–50 20–80 tiered: newest files, key ranges overlap L1 L2 Ln ⋮ leveled: one sorted run per level each level about T times larger 1 compaction: read the victim and its overlaps, merge, rewrite del a delete is a tombstone; the data is gone only when it reaches Ln 2 Bloom filter: skip runs without k INSIDE EACH SSTABLE data blocks (sorted pairs) index Bloom filter footer 4 Shards and replicas on many nodes; compaction offloaded to storage 5 Tenants share one device: a tree each, or one tree split logically Levels after the survey's Figure 1; key ranges illustrative. FIVE RESEARCH QUESTIONS (TABLE 1) 1 Compaction: where are we today? write stall, unpredictable latency, write amplification SILK · ADOC · TRIAD · Dostoevsky · Endure 2 Point lookups and range queries read amplification: many runs and filters checked per key Monkey · ElasticBF · Bourbon · SuRF · REMIX 3 Emerging storage devices idle NVMe parallelism, zoned SSDs, persistent memory LOCS · WALTZ · NoveLSM · MatrixKV 4 Single node to distributed network overhead, no global resource management Hailstorm · Nova-LSM · Caas-LSM · LightPool 5 I/O isolation between tenants no isolation on the I/O path, or idle reserved capacity Iso-KVSSD · OceanBase · Jaliminche et al.
Writes go to a log and an in-memory MemTable, then flush to disk as sorted files that compaction merges level by level; reads check memory first and use Bloom filters to skip files. The survey's five research questions sit on that path: compaction, reads, new storage devices, distribution and tenants.
Research notes: the problem, approach and results
5

research questions organizing the survey, each with root causes and fixes (Table 1)

100+

papers from 2020 to 2025 reviewed (Section 1); 154 references in all

~100 s

for one ELMo-Tune tuning run with DeepSeek V3 under db_bench, the authors' own test (Section 3.1.1)

THE PROBLEM

LSM-trees turn random writes into sequential ones, which is why so many key-value stores use them. The price is compaction: background merging that competes with user traffic for CPU, I/O and memory, causing write stalls, unpredictable latency, write amplification and, if deferred, read amplification. New devices, compute-storage disaggregation and many tenants per node change where those costs land.

THE IDEA

Organize the last five years of LSM-tree research around five questions (compaction, point and range reads, emerging storage, single node to distributed, multi-tenant isolation), give each its root causes and families of fixes in one table, and compare single-node, shared-nothing and shared-storage key-value architectures.

THE RESULT

A map, not a benchmark: Table 1 lists the fixes per problem with example systems, Table 2 the trade-offs of each architecture, and Section 6 five open directions. The authors' one experiment found LLM-based tuning with ELMo-Tune takes about a hundred seconds per run, too slow for real-time use.

02

Why it matters to an FDE

You will rarely choose an LSM engine, but you will often run on one. RocksDB sits under Kafka Streams state stores and Flink's RocksDB state backend, CockroachDB uses an LSM engine of its own, and Cassandra, HBase and TiKV are LSM stores. When a customer's pipeline misbehaves under load, the cause is often one of the survey's five problems wearing a different name.

Write latency spikes during a backfill. That is a write stall: the backfill outran compaction, L0 filled up, and the engine slowed or stopped writes to let it catch up.

Deleted data that does not free space. A delete writes a small marker (a tombstone), and the data goes away only when compaction carries that marker to the bottom level. Disk usage can rise after a big delete, and a privacy deletion is not physically complete when the API returns.

Reads that get slower over the day. More files per lookup means more filter checks and more block reads, especially for range scans, which Bloom filters cannot help.

One tenant's batch job slowing everyone. Shared devices and shared compaction threads leak load across tenants unless the design isolates them.

Knowing which problem you are looking at tells you which setting, metric or architecture change to ask about.

THE FULL BREAKDOWN

Understand the mechanism. Try it on a real problem.

Unlock this breakdown and 199 more papers.

Premium opens every paper in full, plus every answer, concept, course and guide on the site. One payment for six months of access.

6 months · One payment · No auto-renewal

Get Premium · ₹2,000 / $25
  • ◇4 diagrams
  • </>1 runnable code experiment
  • ▦4 results tables
  • ?6 interview questions with answers
  1. 03Key takeaways

    The six ideas to keep, the vocabulary, and three misreadings of LSM behavior

    Free account
  2. 04How it works

    Write and read paths, the four compaction choices, stalls, deletes and the distributed version

    Premium
  3. 05The numbers that matter

    The survey's few numbers, the Bloom filter formula checked, and the architecture table

    Premium
  4. 06Try it yourself

    Check the Bloom formula, build leveled and tiered toy stores, and model three stall policies

    Premium
  5. 07Where it breaks

    What the survey cannot tell you, and five places it contradicts itself or its sources

    Premium
  6. 08Using it on a deployment

    Diagnosing an LSM store under load: what to collect, a worked stall example and the metrics to watch

    Premium
  7. 09Interview angles

    Six questions this paper prepares you for, with answer hints

    Premium
Back to the paper library →