用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
jiaomeng的公告
<br> 本博客文章皆为原创,未经允许不得用于商业用途,转载时请注明作者和出处。
文章分类
存档

原创  Spectral Bloom Filter (3) 收藏

上一节中,我们介绍到SBF将所有counter排成一个位串,counter之间完全不留空隙,然后通过建立索引结构来访问counter。现在我们来扩展这个结构,使之能支持增加和删除操作。

 

删除操作相对来说比较好处理,因为它不会导致存储空间的增加。但是也不能坐视不管,因为大量的删除操作会导致本该释放的空间仍然被占用。SBF采取的策略是,单个删除操作只影响相关的counter,整个存储结构并不更新,但经过一系列连续的删除操作后,整个存储结构会被重建。

 

增加操作稍微麻烦点,因为它意味着原来分配的存储空间不再够用。SBF采取的应对策略有点像我们平时排工作计划时留buffer的做法。我们在安排工作时,如果一件事估计需要10天才能做完,我们写计划时不会写成刚好10天,因为事态的发展有太多动态变化的因素。我们会在计划里给自己留一点buffer,将10天的工作写成12天。

 

SBF处理增加操作时也采取相似的策略,它给原本只需要N位的基本位串增加єmє > 0mcounter个数)位的buffer,以应对将来可能出现的增加操作。SBF将这єmbuffer插入到mcounter之间,每1/єcounter增加1buffer。当某个counter需要更多位数时,它就找离自己最近的buffer位。如果找到的buffer位就在自己的尾部,就直接用掉它;如果隔了一个或几个counter,它就将隔的这几个counter往后“推”,然后使用腾出来的buffer位。最后,counter移动之后,别忘了索引结构也需要更新。

 

到此为止,SBF的基本结构就介绍完毕。回顾一下,SBF是一种扩展版的counting bloom filterCBF),它不仅支持membership query,还支持元素在multi-set中的出现频率查询。实际上,前者只是后者的一种特例,membership query无非是元素出现频率为1的查询。元素出现频率用k(哈希函数个数)个counter中的最小值来近似表示。这种近似使得一个元素对应的kcounter中,最小的那个比其它的更有价值。基于这个考虑,论文作者又对SBF的构建过程进行了优化,并给出了两种优化算法。下一次我们就来讨论SBF的优化。

发表于 @ 2007年03月24日 08:37:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:Spectral Bloom Filter (2)  | 新一篇:Spectral Bloom Filter (4)

  • 发表评论
  • 评论内容:
  •  
Copyright © jiaomeng
Powered by CSDN Blog