Scalable Bloom Filter
可扩展布隆过滤器(Scalable Bloom Filter,SBF) 是为了解决传统 布隆过滤器 无法动态扩展,必须预先知道集合大小(
可扩展布隆过滤器 基于 布隆过滤器变体。
原理
可扩展布隆过滤器 有两个关键点:
SBF 创建时有一个
当共计有
由于有缩放公示:
将缩放公示带入 (1) 可以得到
因此有:
每个过滤器的 slice 个数为
和
为了保证每个
意味着每个新加的过滤器都需要增加一个 slice。将 (3) 代入公示 (2),此时 SBF 的整体纳伪率为
除了令
论文证明
存储量增长
初始存储量影响初始空间占用,后续增加的过滤器会影响空间占用增长速度。自然,用户希望初始空间占用尽可能低,且使用时空间占用也合理。因此,SBF 应该能够以有效的方式适应几个数量级的大小变化。
当新增过滤器时,新过滤器可存储的元素数量取决于所需的误报率
如 布隆过滤器变体 所属,当过滤器达到半满时停止插入,此时过滤器
代入可得
也就是说,有
元素。
论文讨论了不同
应用
给定期望的误报率
- 选择
,并通过公示计算 - 对于缓慢增长,选择
,对于快速增长,选择 ,并计算出
A Scalable Bloom Filter addresses the problem of having to choose an a priori maximum size for the set, and allows an arbitrary growth of the set being repre- sented. The two key ideas are:
- A SBF is made up of a series of one or more (plain) Bloom Filters; when filters get full due to the limit on the fill ratio, a new one is added; querying is made by testing for the presence in each filter.
- Each successive bloom filter is created with a tighter maximum error probability on a geometric progression, so that the compounded probability over the whole series converges to some wanted value, even accounting for an infinite series.
Almeida, Paulo Sérgio, Carlos Baquero, Nuno Preguiça, and David Hutchison. “Scalable Bloom Filters.” Information Processing Letters 101, no. 6 (March 2007): 255–61. https://doi.org/10.1016/j.ipl.2006.10.007. ↩︎ ↩︎