知识卡片
布隆过滤器的快速不精确查找
内容
布隆过滤器是一种用多个 Hash 函数把元素映射进一个位数组的查找结构,专门用来快速判断”某个元素是否在一个集合里”,但它换来速度的代价是不保证 100% 准确——它可能把不在集合里的元素误判成”在”(假阳性),却不会漏判已经在集合里的元素(不会假阴性)。Ceph 缓冲池用它来判断某份数据是否已经在高速缓冲池中被访问过(用于统计热度、决定是否晋升到缓存),这种场景恰好符合它的适用条件:只需要一个足够快的粗筛,偶尔的误判不会造成严重后果,真正的数据校验仍靠后续的正常读写流程兜底。发散:判断一个场景该不该用布隆过滤器,关键看能不能接受”极小概率的假阳性”,以及是否真的需要用空间换取远超普通哈希表的查询速度。
参考来源
《Ceph分布式存储实战》第11章《缓冲池与纠删码》