HackerPapers

arXiv:2103.02515cs.DS

Ribbon filter: practically smaller than Bloom and Xor

Peter C. Dillinger, Stefan Walzer

Abstract

Filter data structures over-approximate a set of hashable keys, i.e. set membership queries may incorrectly come out positive. A filter with false positive rate $f \in (0,1]$ is known to require $\ge \log_2(1/f)$ bits per key. At least for larger $f \ge 2^{-4}$, existing practical filters require a space overhead of at least 20% with respect to this information-theoretic bound. We introduce the Ribbon filter: a new filter for static sets with a broad range of configurable space overheads and false positive rates with competitive speed over that range, especially for larger $f \ge 2^{-7}$. In many cases, Ribbon is faster than existing filters for the same space overhead, or can achieve space overhead below 10% with some additional CPU time. An experimental Ribbon design with load balancing can even achieve space overheads below 1%. A Ribbon filter resembles an Xor filter modified to maximize locality and is constructed by solving a band-like linear system over Boolean variables. In previous work, Dietzfelbinger and Walzer describe this linear system and an efficient Gaussian solver. We present and analyze a faster, more adaptable solving process we call "Rapid Incremental Boolean Banding ON the fly," which resembles hash table construction. We also present and analyze an attractive Ribbon variant based on making the linear system homogeneous, and describe several more practical enhancements.

arXiv comments
14 pages, 7 figures
Journal reference
DOI
Subjects
cs.DSData Structures and Algorithms cs.DBDatabases

On Hacker News

Linked by 6 identifiable commenters in 6 comments across 6 threads, from Jul 2021 to Jan 2026. Found in 2 HN submissions from Mar 2021 to Jul 2021. Open submission discussions.

Comments linking this paper, per year.

Discussed in comments6 threads

    • See also the paper Ribbon filter: practically smaller than Bloom and Xor: https://arxiv.org/abs/2103.02515, which is a similar idea though not by the same authors. IIRC, binary fuse filters are faster to construct than ribbon filters, but typically not quite as space-efficient.…

      less_lessView on HNParent context

  1. Bloom Filters 1 comment
    • Also quite recent are Ribbon filters: https://arxiv.org/abs/2103.02515 But these, and xor/binary-fuse-filters are only direct replacements for Bloom filters in some problems. There are still problems for which Bloom filters are a better solution. Bloom filters have the advantage…

      sparkieView on HNParent context

    • related and useful: "Ribbon filter: Practically smaller than Bloom and Xor" (https://arxiv.org/abs/2103.02515) This paper does a good job of showing the space/time tradeoffs of various approximate sets.

      awmarthurView on HNParent context

    • Merkle Hash Trees are not a solution for offline checks. You can very easily check membership in a tree if someone sends you a proof of membership. But to get a proof, you'd either have to generate it yourself (meaning you're storing the whole set anyway) or get it from a third…

      doomroboView on HNParent context

Submitted to Hacker News

Connected through shared HN threads, not inferred similarity or a recommendation.