{
  "slug": "splinterdb",
  "term": "SplinterDB",
  "aliases": [],
  "definition": "SplinterDB is an embedded key-value store that combines a size-tiered B-epsilon tree with concurrent caching and memtables for NVMe storage.",
  "note": "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. [splinter-paper]\n\nMemory: 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. [splinter-paper]\n\nLookup: 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. [splinter-api]\n\nPersistence: 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. [splinter-api] [splinter-barriers]",
  "status": "research",
  "advantages": [],
  "limitations": [],
  "related": [
    "size-tiered-b-epsilon-tree",
    "b-epsilon-tree",
    "quotient-filter",
    "kvell",
    "write-ahead-log"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-14",
  "citations": [
    {
      "id": "splinter-paper",
      "title": "Conway et al. SplinterDB: Closing the Bandwidth Gap for NVMe Key-Value Stores. USENIX ATC 2020, pp. 49-63, sections 2-6.",
      "url": "https://files.usenix.org/s3fs-public/cdn/atc20-conway.pdf",
      "accessed": "2026-11-14"
    },
    {
      "id": "splinter-api",
      "title": "SplinterDB public API: lookup modes and update visibility, revision 73f89d8879e2.",
      "url": "https://github.com/vmware/splinterdb/blob/73f89d8879e2e5603933f756c8c4d2c60a12d9c6/include/splinterdb/splinterdb.h",
      "accessed": "2026-11-14"
    },
    {
      "id": "splinter-barriers",
      "title": "SplinterDB durability notifications: submission, completion and progress, revision 73f89d8879e2.",
      "url": "https://github.com/vmware/splinterdb/blob/73f89d8879e2e5603933f756c8c4d2c60a12d9c6/docs/async-durable-barriers.md",
      "accessed": "2026-11-14"
    },
    {
      "id": "splinter-limitations",
      "title": "SplinterDB limitations document, revision 73f89d8879e2; compare with the public header at the same revision.",
      "url": "https://github.com/vmware/splinterdb/blob/73f89d8879e2e5603933f756c8c4d2c60a12d9c6/docs/limitations.md",
      "accessed": "2026-11-14"
    },
    {
      "id": "hesela",
      "title": "Hesela: B-epsilon trees, deferred compaction and durability acknowledgments.",
      "url": "https://hesela.com/analyses/b-epsilon-trees-buffered-updates/#stbe-flush",
      "accessed": "2026-11-14"
    }
  ],
  "provenance": [
    "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. [splinter-limitations] [splinter-api] [splinter-barriers]",
    "Paper hardware: Intel Optane 905p and a 32-core machine; the experimental settings are not a universal recommendation for NVMe devices. [splinter-paper]"
  ]
}
