布隆过滤器(Bloom Filter)原理与应用

K-v存储中bloom filter能够实现快速查找一个元素是否在集合中。bloom filter返回false,证明一定该元素一定不在于该集合中;bloom filter返回true,证明该该元素可能存在该集合中,也有可能不存在,不过通过设计bloom filter一般情况下,bloom filter返回true,则该元素极大概率存在于该集合当中。
最低错误概率公式:k=m/n*ln2,k:hash function的个数,m:存储0、1状态二进制位数,n: 总元素的个数,ln(2)于等于0.69
参考介绍如下:
https://blog.csdn.net/zq602316498/article/details/40660235
https://blog.csdn.net/jiaomeng/article/details/1495500
bloom filter的C++实现:
https://blog.csdn.net/chinabhlt/article/details/49148373

bloom filter的缺点是不能删除,只能增加,但是有方法改进,方法如下:
删除元素问题可以通过布隆过滤器的变体CBF(Counting bloomfilter)解决。CBF将基本Bloom Filter每一个Bit改为一个计数器,这样就可以实现删除字符串的功能了。

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

你可能感兴趣的:(分布式存储,存储)