{
  "slug": "stable-bloom-filter",
  "term": "Stable Bloom filter",
  "aliases": [],
  "definition": "A stable Bloom filter is an approximate stream-history filter that ages counter cells to bound memory while allowing both false positives and forgotten duplicates.",
  "note": "Queries test nonzero cells before selected cells are decremented and the arriving key's cells are reset to a maximum. Stable refers to limiting occupancy, not permanent membership or a guaranteed time-to-live. [stable-paper]\n\nA negative answer can reject an earlier item. An aging filter therefore cannot directly replace a no-false-negative filter used to skip reads of authoritative data. [hesela]",
  "status": "research",
  "advantages": [],
  "limitations": [],
  "related": [
    "bloom-filter",
    "counting-bloom-filter",
    "cuckoo-filter"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-17",
  "citations": [
    {
      "id": "stable-paper",
      "title": "Deng and Rafiei. Approximately Detecting Duplicates for Streaming Data using Stable Bloom Filters. SIGMOD 2006. DOI: 10.1145/1142473.1142477.",
      "url": "https://webdocs.cs.ualberta.ca/~drafiei/papers/DupDetExt.pdf",
      "accessed": "2026-10-17"
    },
    {
      "id": "hesela",
      "title": "Hesela. Filter retention and counting: fixed-address counterexamples.",
      "url": "https://hesela.com/analyses/bloom-filters-lsm-read-cost/#retention",
      "accessed": "2026-10-17"
    }
  ],
  "provenance": [
    "The linked examples use explicit addresses and decay schedules; they do not estimate production error rates. [hesela]"
  ]
}
