关于布隆过滤器在BSS中应用.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于布隆过滤器在BSS中应用.doc

关于布隆过滤器在BSS中应用   【摘要】 介绍布隆过滤器(Bloom Filter)的相关算法原理和使用说明,并阐述其在BSS领域中应用。通过与Redis缓存技术相结合,利用布隆过滤器(Boom Filter)的高效匹配、低存储等优势,提高BSS中排重效率,减少BSS对硬件扩容的需求。同时,阐述BSS排重中关于位数组的划分,以及针对布隆过滤器(Bloom Filter)对数据存在一定误判率的不足,并提出相应的应对措施。   【关键词】 布隆过滤器 排重 哈希算法 BSS Redis   一、引 言   判断一个元素已经存在某个集合里,一般的做法是:将集合中所有的元素保存起来,然后通过比较的方式来确定是否为重复元素。例如,常用于存储集合元素的数据结构有:链表、树、哈希表(hash table)等。但是,随着数据量的不断增长,所需的存储空间呈线性增长,检索的效率面临着严峻的考验。在BSS系统中,需要从检索效率、空间存储以及准确性等多个方面考虑排重机制,从而保障系统性能及稳定性。在众多的排重技术中,布隆过滤器(Bloom Filter)是其中最优秀的排重技术之一。它的主要优势在于:快速的检索以及极低的存储需求,主要缺点在于:存在一定的误判率,需要从应用角度,设计适中的位数组以及多重哈希判断来降低误判率。同时,针对误判元素进行特殊处理,以满足系统需要。   二、Bloom Filter概述   布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。   布隆过滤器(Bloom Filter)是一种空间效率极高的随机数据结构,采用位向量的方式表示一个集合,并结合哈希(hash)函数映射到集合中。布隆过滤器(Bloom Filter)的这种高效算法有一定的代价:判断一个元素是否属于某个集合时,有可能把不属于这个集合的元素误认为属于这个集合。因此,布隆过滤器(Bloom Filter)不适合“零误判”的应用场合。而是在能够容忍低误判率的应用场合下,布隆过滤器(Bloom Filter)通过极低的误判,节省极大的存储空间。   三、Bloom Filter原理布隆过滤器(Bloom Filter)是一个包含N位的位数组,每一位初始为0(如图1)。   二位?底榧?合N={x1,x2,x3,… …,xn}存放N个位元素,布隆过滤器(Bloom Filter)使用K个相互独立的哈希(hash)函数,将待处理的数据分别压缩成K个散列值,然后采用取模算法,将K个散列值分别映射到集合{1,2,3,…,n}的范围内。即(图二)对于一个待处理数据x1,x2,通过3个独立的哈希(hash)函数fk(h)分别计算出相应的散列值fk(x),并将计算出来的3个散列值fk(x)对N进行取模运算得到位数组下标,对相应下标的位进行置1操作。当在检索一个元素时,同样需要经过K个哈希(hash)函数计算出来的位数组下标,并挨个确认是否置为1。如果全为1,则被检索的元素可能已经存在;如果K个里面有任何一个不为1,则被检索的元素一定不存在当前集合中。   在布隆过滤器中,由于无论哈希(hash)函数设计的多么精密,都会有冲突现象,即2个不同的元素通过同一个哈希(hash)函数的处理结果可能映射到同一个位置。所以,为了减少冲突发生的概率,布隆过滤器(Bloom Filter)通过K个独立的哈希(hash)函数来进行映射操作,但是无法百分百避免。如果在不考虑位数组大小的前提下,随着K值增长(即独立哈希(hash)函数的增多),冲突的概率会不断降低,即误判率会不断降低。但是,随着K值增大,也会引起大量哈希(hash)计算占用过高的CPU计算,导致整体的效率降低。   四、Bloom Filter排重应用   在BSS系统中传统的排重算法,是将原数据X(待排重元素)作为自变量,通过特定的哈希(hash)函数映射成相应的散列值。表达为:f(x)=H(X)。将计算出来的f(x),到存储哈希表(hash table)的文件(或数据库)中查找,如果匹配上则认为可能是重复数据,然后进行下一步完全排重判断;如果匹配不上,认为不是重复数据,则将此数据写入存储哈希表(hash table)的文件(或数据库)中供后续数据排重使用。传统的排重中,为了能够快速的查找到散列值,将计算后的散列值按照一定的规则进行分片,例如:按照时间、地域等多个维度进行分片。同时,按照访问的热度,将热数据放到内存中,提高匹配效率。虽然,以上多种优化措施在一定程度上提高了目前的排重效率,能够有效的处理日常的

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档