前言
- 由于查磁盘慢,所以之前加cache。
- 同理,filter是用来在存储前判断是否存在。
定义
- 很长的二进制向量和一个映射函数。
- 用来检索一个元素是否在集合中,如果判断不在,那肯定不在;如果判断在,可能判断错误
- 优点:空间效率和查询时间远远超过一般的算法。
- 缺点:有一定的误识别率和删除困难。
- 图片来自极客时间
- A通过映射函数,将a,b两位标识为1
- E通过映射函数,将b,c两位标识为1
- 搜索B,判断a和c两位为1,但其实B不存在,这就是错误率
- 删除E是,c位可以标识为0,但是b位不能直接标识为0,因为还有A,这叫删除困难
场景
- 比特币:spv节点,比如有一条交易记录,先用bloom filter,如果有,再去全节点查。不存在就不用查了
- 分布式系统