Bloom过滤器是测试元素是否是一组成员所使用的概率数据结构,在空间和速度上都是高效的,使得它们适合应用,因为需要快速的会员查询,并有一些可接受的假阳性.

Bloom 过滤器如何工作

Bloom 过滤器使用比特数组和多个散列函数。当元素被添加时,每个散列函数将其映射到数组中的位置,将这些位设为 1 。要检查元素是否存在,应用相同的散列函数,并检查相应的位。如果全部设置为1,则元素很可能在集合中;如果有0,则绝对不是 。

Bloom 过滤器的计算

假正概率取决于位数组(m)的大小,插入元素(n)的数量,以及散列函数(k)的数量。假正概率(p)可以被大致的:

p ⁇ (1-e]-kn/m] k ]]]]

k和m的优化值可以将给定n的假阳性最小化。 通常, k 被选为:

k=(m/n)* 以2

使用 Bloom 过滤器的大小写

Bloom过滤器用于多个领域,包括:

  • 快速会员测试数据库系统
  • 网络缓存以减少磁盘查看
  • 数据同步分布式系统
  • 垃圾邮件过滤的网络安全

Bloom 过滤器的限制

Bloom 过滤器虽然效率高,但有局限性。它们可以产生假正反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反反