{
  "slug": "fragmented-lsm-tree",
  "term": "Fragmented LSM tree",
  "aliases": [
    "FLSM",
    "Fragmented log-structured merge tree"
  ],
  "definition": "A fragmented LSM tree organizes overlapping sorted tables within disjoint guard key ranges to reduce repeated compaction writes.",
  "note": "Layout: PebblesDB introduced FLSM at SOSP 2017. A guard identifies a key interval, not a single table; tables within it may overlap. Compaction partitions output for destination guards instead of repeatedly merging it into their existing tables. [pebbles-paper]\n\nBoundary: the last level still rewrites data, and the penultimate level can also rewrite locally. FLSM is not a zero-compaction design. [pebbles-paper]\n\nQueries: table-level Bloom filters can reject point membership, but a negative for key q does not exclude a successor greater than q. PebblesDB uses additional seek optimizations, including compaction and parallel search, with their own write and CPU costs. The project documentation distinguishes these controls. [pebbles-project]",
  "related": [
    "lsm-tree",
    "sstable",
    "bloom-filter",
    "compaction",
    "read-amplification",
    "write-amplification"
  ],
  "citations": [
    {
      "id": "pebbles-paper",
      "title": "Raju et al. PebblesDB: Building Key-Value Stores using Fragmented Log-Structured Merge Trees. SOSP 2017, sections 3-5. DOI: 10.1145/3132747.3132765.",
      "url": "https://www.cs.utexas.edu/~vijay/papers/sosp17-pebblesdb.pdf",
      "accessed": "2026-11-08"
    },
    {
      "id": "pebbles-project",
      "title": "PebblesDB authors: read and seek optimizations, tuning and post-paper changes",
      "url": "https://utsaslab.github.io/pebblesdb/",
      "accessed": "2026-11-08"
    },
    {
      "id": "hesela",
      "title": "Hesela: Bloom filters and the cost of an absent LSM lookup",
      "url": "https://hesela.com/analyses/bloom-filters-lsm-read-cost/",
      "accessed": "2026-11-08"
    }
  ],
  "status": "research",
  "advantages": [],
  "limitations": [
    {
      "text": "Historical performance results depend on workload, compaction state and hardware; they are not a ranking of current database releases.",
      "citationIds": [
        "pebbles-paper"
      ]
    }
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-08",
  "provenance": [
    "Source-based synthesis, not a PebblesDB execution or reproduction of its benchmarks.",
    "Hesela's separate successor example uses constructed integer keys and exact membership, not an implemented Bloom filter."
  ]
}
