前言

  • 由于查磁盘慢,所以之前加cache。
  • 同理,filter是用来在存储前判断是否存在。

定义

  • 很长的二进制向量和一个映射函数。
  • 用来检索一个元素是否在集合中,如果判断不在,那肯定不在;如果判断在,可能判断错误
  • 优点:空间效率和查询时间远远超过一般的算法。
  • 缺点:有一定的误识别率和删除困难。
  • 图片来自极客时间
    Bloom Filter(布隆过滤器)
  • A通过映射函数,将a,b两位标识为1
  • E通过映射函数,将b,c两位标识为1
  • 搜索B,判断a和c两位为1,但其实B不存在,这就是错误率
  • 删除E是,c位可以标识为0,但是b位不能直接标识为0,因为还有A,这叫删除困难

场景

  • 比特币:spv节点,比如有一条交易记录,先用bloom filter,如果有,再去全节点查。不存在就不用查了
  • 分布式系统

相关文章: