~/.trash » bloom filter 备忘(2)

Bloom 过滤器(以下称 Bloom Filter 或 BF) 采用位数组表示数据集合并有效支持集合元素的成员查询,由于其能显著节省存储空间,在对错误率不敏感的领域(如字典查询、数据库),Bloom Filter 有着广泛的应用。
随着网络及数据流处理技术的飞速发展使 Bloom Filter 焕发了新的活力,数据流等新应用场景也推动了 Bloom Filter 理论的发展,产生了计数型 Bloom 过滤器(Counting Bloom Filter, CBF) 、光谱 Bloom 过 滤 器 (Spectral Bloom Filter, SBF)和动态计数过滤器(Dynamic Counting Filter, DCF)等多种 Bloom Filter。

标准 Bloom Filter:
已经示例了一个 bloom filter 的 Toy Demo 实现. 并简要介绍了 bf 的基本原理.
参考文档:

标准 Bloom Filter 不支持从集合中删除元素,如果删除元素时把相应的位置为 0,而别的元素也哈希到这一位,那么 Bloom Filter 就不再正确地反映集合中的所有元素,而产生假阴性。同时也不能完成计数等功能,于是一些变种出现了。

计数型 Bloom Filter (CBF)
Counting Bloom Filter的出现解决了这个问题,它将标准Bloom Filter位数组的每一位扩展为一个小的计数器(Counter),在插入元素时给对应的k(k为哈希函数个数)个Counter的值分别加1,删除元素时给对应的k个Counter的值分别减1。Counting Bloom Filter通过多占用几倍的存储空间的代价,给Bloom Filter增加了删除操作。
基本结构:


参考文档:

光谱Bloom过滤器(SBF)
标准 Bloom Filter 和 CBF 解决了元素与集合的成员查询问题。在最近涌现的数据流应用中,用户不仅关注元素的成员归属,而且关注多个元素出现的频数。SBF扩展了CBF,利用 CBF的计数器支持计数查询。
基本结构:


参考文档:

动态计数过滤器(DBF)
SBF解决了由于计数器大小变动带来的动态存储问题,但是引入了复杂的索引结构,每个计数器的访问变得复杂而耗时,元素频数出现剧烈变化时的索引重建也十分耗时。于是 DCF 出现了,DCF支持元素出现频数查询,结构又相对简单。
基本结构:


参考文档:

计数型 Bloom Filter 的简单比较

可以看出,CBF虽然内存占用少、访问速度快、无重建操作,但是存在无法解决的计数器溢出问题。SBF与DCF相比,在内存占用方面,由于DCF中计数器的{zd0}值决定了整个DCF所占的空间,因此在元素分布比较均匀、增删
操作相对平均的情况下,计数器的值相差不大,而且DCF不用维护复杂的索引结构,占用空间比SBF少。如果少数计数器的值显著大于其他计数器,SBF在空间使用方面会占据优势;在计数器的存取时间方面,DCF占有{jd1}的优势,它仅比标准CBF多了一次内存访问,而SBF的访问相对复杂;在处理数据抖动方面,SBF和DCF都不够理想,前者需要数据访问索引的重建,后者可能面临开销巨大的OFV数组重建工作。如何设计和维护计数器的结构也是CBF一个重要的研究方向。

郑重声明:资讯 【~/.trash » bloom filter 备忘(2)】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——