- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Bloom Filter 原理与应用
网址:/huangwei1024/archive/2010/11/17/133869.html
Bloom Filter 原理与应用
Http://Blog.Huang-Wei.Com/2010/11/02/Bloom-Filter/
Bloom Filter 原理与应用
介绍
Bloom Filter是一种简单的节省空间的随机化的数据结构,支持用户查询的集合。一般我们使用STL的std::set, stdext::hash_set,std::set是用红黑树实现的,stdext::hash_set是用桶式哈希表。上述两种数据结构,都会需要保存原始数据信息,当数据量较大时,内存就会是个问题。如果应用场景中允许出现一定几率的误判,且不需要逆向遍历集合中的数据时,Bloom Filter是很好的结构。
优点
查询操作十分高效。
节省空间。
易于扩展成并行。
集合计算方便。
代码实现方便。
有误判的概率,即存在False Position。
无法获取集合中的元素数据。
不支持删除操作。
缺点
有误判的概率,即存在False Position。
无法获取集合中的元素数据。
不支持删除操作。
定义
Bloom Filter是一个有m位的位数组,初始全为0,并有k个各自独立的哈希函数。
图1
添加操作
每个元素,用k个哈希函数计算出大小为k的哈希向量?,将向量里的每个哈希值对应的位设置为1。时间复杂度为??,一般字符串哈希函数的时间复杂度也就是?。
查询操作
和添加类似,先计算出哈希向量,如果每个哈希值对应的位都为1,则该元素存在。时间复杂度与添加操作相同。
示例
图2表示m=16,k=2的Bloom Filter, 和 的哈希值分别为(3, 6)和(10, 3)。
图2
False Position
如果某元素不在Bloom Filter中,但是它所有哈希值的位置均被设为1。这种情况就是False Position,也就是误判。
借用示例,如下:
图3
这个问题其实和哈希表中的冲突是相同的道理,哈希表中可以使用开散列和闭散列的方法,而Bloom Filter则允许这样的情况发生,它更关心于误判的发生概率。
概率
宏观上,我们能得出以下结论:
参数表 变量 减少 增加 哈希函数总数 K l? 更少的哈希值计算
l? 增加False Position的概率 l? 更多的计算
l? 位值0减少 Bloom Filter?大小 M l? 更少的内存
l? 增加False Position的概率 l? 更多的内存
l? 降低概率 元素总数 N l? 降低False Position的概率 l? 增加概率 False Position的概率为?。
假设m和n已知,为了最小化False Position,则?。
数据
图4
扩展
Counter Bloom Filter
Bloom Filter有个缺点,就是不支持删除操作,因为它不知道某一个位从属于哪些向量。那我们可以给Bloom Filter加上计数器,添加时增加计数器,删除时减少计数器。
但这样的Filter需要考虑附加的计数器大小,假如同个元素多次插入的话,计数器位数较少的情况下,就会出现溢出问题。如果对计数器设置上限值的话,会导致Cache Miss,但对某些应用来说,这并不是什么问题,如Web Sharing。
Compressed Bloom Filter
为了能在服务器之间更快地通过网络传输Bloom Filter,我们有方法能在已完成Bloom Filter之后,得到一些实际参数的情况下进行压缩。
将元素全部添加入Bloom Filter后,我们能得到真实的空间使用率,用这个值代入公式计算出一个比m小的值,重新构造Bloom Filter,对原先的哈希值进行求余处理,在误判率不变的情况下,使得其内存大小更合适。
应用
加速查询
适用于一些key-value存储系统,当values存在硬盘时,查询就是件费时的事。
将Storage的数据都插入Filter,在Filter中查询都不存在时,那就不需要去Storage查询了。
当False Position出现时,只是会导致一次多余的Storage查询。
图5
l? Google的BigTable也使用了Bloom Filter,以减少不存在的行或列在磁盘上的查询,大大提高了数据库的查询操作的性能。
l? 在Internet Cache Protocol中的Proxy-Cache很多都是使用Bloom Filter存储URLs,除了高效的查询外,还能很方便得传输交换Cache信息。
网络应用
l? P2P网络中查找资源操作,可以对每条网络通路保存Bloom Filter,当命中时,则选择该通路访问。
l
您可能关注的文档
- android audio play流程分析.pdf
- Android GPS架构分析.doc
- android ExpandableListView简单应用及listview模拟ExpandableListView.pdf
- Android USB host 的应用之一.doc
- Android Fragement学习笔记(三)PreferenceFragment的使用.pdf
- Android 安全架构及权限控制机制剖析.pdf
- androidbootloader过程分析.doc
- AndroidADB工具的使用.doc
- Android 最火的快速开发框架XUtils.docx
- androidlayout_gravity和androidgravity的区别.doc
- 25春国开【民事诉讼法学】形成性考核手册(21版)试题及答案.docx
- 25春国开【宪法学】形考任务试题及答案.pdf
- 24春国开(专)《法律咨询与调解》形考1-4试题及答案.pdf
- 25春国开【刑法学(2)】形成性考核手册试题及答案.docx
- 【高中语文++】《在马克思墓前的讲话》课件+统编版高一语文必修下册.pptx
- 【高中语文++】《赤壁赋》课件+统编版高中语文必修上册.pptx
- 【高中语文++】《拟行路难(其四)》课件+统编版高二语文选择性必修下册+.pptx
- 【高中语文++】高考模拟作文++时间的双重性+课件.pptx
- 【高中语文++】《窦娥冤(节选)》课件+统编版高一语文必修下册.pptx
- 【高中语文++】《青蒿素+人类征服疾病的一小步》课件+统编版高一语文必修下册.pptx
最近下载
- 痕迹检验复习试题有答案.doc
- 未成年人充值退款起诉书.docx VIP
- 2025年中国移动校园招聘考试笔试题库历年考试试题及答案.docx VIP
- 定量CT在健康管理中的应用指南(2024).pdf
- 《网约车运营管理》教学课件4-5 潜在客户分析及客户忠诚度提升.ppt VIP
- 排水泵房安全检查表.docx
- 我国实现双碳目标面临的现实挑战与对策建议.docx VIP
- 农技指导油菜机械化播栽与收获技术.pdf
- 第15课+列强入侵与中国人民的反抗斗争【中职专用】《中国历史》(高教版2023基础模块)-20240416165039.pptx
- 仁爱八年级下册Unit6Topic3SectionC优质公开课.ppt VIP
文档评论(0)