{
  "slug": "ribbon-filter",
  "term": "Ribbon filter",
  "aliases": [
    "Ribbon approximate-membership filter"
  ],
  "definition": "A static approximate-membership filter built using banded Boolean linear systems, offering a space and construction-cost tradeoff relative to Bloom filters.",
  "note": "The constructed filter is not a mutable set or a data-integrity checksum. Standard, homogeneous and bumped Ribbon variants have different tradeoffs. RocksDB's bloom_equivalent_bits_per_key targets Bloom-equivalent filtering, not the actual Ribbon bit count; assess temporary construction memory separately from resident size. [ribbon-paper] [ribbon-api]",
  "related": [
    "bloom-filter",
    "sstable",
    "partitioned-filter"
  ],
  "citations": [
    {
      "id": "ribbon-paper",
      "title": "Peter C. Dillinger, Lorenz Huebschle-Schneider, Peter Sanders and Stefan Walzer. Fast Succinct Retrieval and Approximate Membership using Ribbon. arXiv:2109.01892v2 (2022), sections 2-4 and 12.",
      "url": "https://arxiv.org/abs/2109.01892v2",
      "accessed": "2026-10-13"
    },
    {
      "id": "ribbon-api",
      "title": "RocksDB v9.7.3. include/rocksdb/filter_policy.h: NewRibbonFilterPolicy and bloom_before_level.",
      "url": "https://github.com/facebook/rocksdb/blob/v9.7.3/include/rocksdb/filter_policy.h",
      "accessed": "2026-10-13"
    }
  ],
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-13"
}
