{
  "slug": "bourbon",
  "term": "Bourbon",
  "aliases": [
    "BOURBON learned LSM"
  ],
  "definition": "Bourbon is a research LSM storage engine that uses learned models over immutable sorted files to accelerate key lookup.",
  "note": "Models predict a candidate position range, not whether a key exists. The lookup checks the candidate block filter and searches for the exact key; files without an available model use the baseline lookup path. Fixed-size keys and value references make positions addressable even when separately stored values vary in size. [bourbon-paper]\n\nAdmission: the original cost-benefit code tracks positive and negative lookup savings separately, normalizes expected benefit by average file size, and uses sample-count gates. A model can therefore be omitted rather than trained for every file. [bourbon-code]\n\nThe 2020 design does not support general string keys or key compression. Its evaluation mostly uses memory-resident data; storage and limited-memory cases are separate experiments. [bourbon-paper]\n\nInternal lookups are candidate-file probes, not application requests. A negative probe can precede a successful probe of another file. If the model's range crosses data-block boundaries, the index block still selects the data block. [bourbon-paper]",
  "status": "research",
  "advantages": [],
  "limitations": [],
  "related": [
    "lsm-tree",
    "sstable",
    "key-value-separation"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "citations": [
    {
      "id": "bourbon-paper",
      "title": "Dai et al. From WiscKey to Bourbon: A Learned Index for Log-Structured Merge Trees. OSDI 2020, 155-171, sections 4-5.",
      "url": "https://files.usenix.org/s3fs-public/cdn/osdi20-dai_0.pdf",
      "accessed": "2026-11-11"
    },
    {
      "id": "bourbon-code",
      "title": "Original Bourbon artifact, revision dfbf4f39: mod/CBMode_Learn.cpp, CalculateCB.",
      "url": "https://bitbucket.org/daiyifandanny/learned-leveldb/src/dfbf4f39c5acf56ea7ee21933d0ba699edb1ad95/mod/CBMode_Learn.cpp",
      "accessed": "2026-11-10"
    },
    {
      "id": "hesela",
      "title": "Hesela: budget model construction separately from lookup savings.",
      "url": "https://hesela.com/analyses/key-value-separation-cleaning-cost/#learned-file-budget",
      "accessed": "2026-11-10"
    }
  ],
  "updated": "2026-11-11",
  "provenance": [
    "Full-paper and pinned-source review, not benchmark reproduction. The author-linked Bitbucket artifact is distinct from the later edydfang/Bourbon modification."
  ]
}
