SplinterDB
SplinterDB is an embedded key-value store that combines a size-tiered B-epsilon tree with concurrent caching and memtables for NVMe storage.
Design: the 2020 engine keeps records in ordered branch trees and moves branch references before compaction. Its point-query argument assumes indexes and filters fit in RAM; filter false positives can cause extra reads. Short scans pay to initialize multiple branch iterators. [1]
Memory: the usual evaluation target was 4 GiB, including a 3.25 GiB cache and other engine structures. The pinned workload trace had a separate allowance, and PebblesDB could use full machine memory. These are not equal whole-process memory caps. [1]
Lookup: in revision 73f89d8879e2, SPLINTERDB_LOOKUP_MIGHT_EXIST makes a positive found result a possibility, not proof of membership. A negative result rules the key out. Value extraction in this mode returns EINVAL; callers need an ordinary lookup to retrieve a value. [2]
Persistence: a successful update is visible but need not be durable. For a tracked asynchronous barrier, successful submission and successful completion are separate events; only successful completion establishes its guarantee. Fire-and-forget hides later completion errors. [2] [3]
Relations
Citations
- Conway et al. SplinterDB: Closing the Bandwidth Gap for NVMe Key-Value Stores. USENIX ATC 2020, pp. 49-63, sections 2-6.
- SplinterDB public API: lookup modes and update visibility, revision 73f89d8879e2.
- SplinterDB durability notifications: submission, completion and progress, revision 73f89d8879e2.
- SplinterDB limitations document, revision 73f89d8879e2; compare with the public header at the same revision.
Further reading
Sources & caveats
- Historical paper review and a separately pinned API contract. No engine benchmark, crash-recovery experiment or performance replication.
- The limitations document's claim that no durability API exists conflicts with the public header and barrier guide at the same revision; that claim is not applied to this record. [4] [2] [3]
- Paper hardware: Intel Optane 905p and a 32-core machine; the experimental settings are not a universal recommendation for NVMe devices. [1]