LevelDB implementation notes, doc/impl.md — describes the on-disk
layout (MANIFEST, log files, table files) and the recovery procedure that
db-09 mirrors almost verbatim.
https://github.com/google/leveldb/blob/main/doc/impl.md
Patrick O'Neil et al., The Log-Structured Merge-Tree (LSM-Tree), Acta
Informatica 33, 1996. The original paper; introduces the C0/C1 levels,
the merge step, and the amortized write-cost analysis.
Pebble's docs/rocksdb.md for an excellent diff-style walkthrough of how
a modern engine differs from LevelDB while preserving the same correctness
invariants.
Pillai, Chidambaram, et al., All File Systems Are Not Created Equal,
OSDI '14. The "fsync the file, then fsync the directory" rule we follow
for SST publish and MANIFEST rewrite comes from this work.
db-03 (WAL) — record framing, torn-tail tolerance, WalIter.
db-05 (MemTable) — sorted map with explicit tombstones.
db-06 (SSTable) — on-disk sorted-string file format with a footer and
trailing checksum.
db-08 (BlockCache + MergingIterator) — k-way merge with
newer-source-wins and optional tombstone dropping; canonical
SerializeStream used by Db::serialize_view.