布隆过滤器的简介
布隆过滤器是一个算法,一个随机映射函数,1970年由布隆提出,用于判断一个元素是否在一个集合中。 算法包括两个部分:一个二进制数组、一个Hash算法 高效的插入和查询,由于判断某个元素是否在一个集合之中。 从下图中我们可以看出该算法存在误判的概率 结论:存在集合中的不一定存在(哈希冲突),不存在集合中的一定不存在
布隆过滤器的应用
网页URL的去重,垃圾邮件的判别,集合重复元素的判别,查询加速(比如基于key-value的存储系统)、数据库防止查询击穿, 使用BloomFilter来减少不存在的行或列的磁盘查找。Google 著名的分布式数据库 Bigtable 使用了布隆过滤器来查找不存在的行或列,以减少磁盘查找的IO次数,Google Chrome浏览器使用了布隆过滤器加速安全浏览服务。
优化方法
- 增加数组、预估合适值
- 增加hash函数进行映射