布隆过滤器(Bloom Filter)

简介: 布隆过滤器(Bloom Filter)

布隆过滤器(Bloom Filter)是一种空间效率高、快速判断元素是否存在的概率型数据结构。它基于位数组和一系列哈希函数构建,可以在极低的错误率下进行快速查询。

布隆过滤器的工作原理如下:

数据结构:布隆过滤器由一个位数组(通常是一个长的二进制向量)和多个哈希函数组成。位数组的长度和哈希函数的数量是事先确定的。

初始化位数组:开始时,布隆过滤器会初始化一个固定大小的位数组,所有的位都被置为0

插入操作:当要向布隆过滤器添加一个元素时,会使用一系列哈希函数将该元素映射到位数组的不同位置,并将这些位置的位都置为1首先将该元素经过多个哈希函数计算得到多个哈希值。然后,在位数组中将这些哈希值对应的位置置为1,表示该元素存在。

查询操作:对于要查询的元素,同样通过多个哈希函数计算得到多个哈希值。然后,检查位数组中对应的位置是否都为1。如果有任何一位为0,则说明该元素一定不存在;如果都为1,则说明该元素可能存在(注意:可能存在,不是绝对存在)。

布隆过滤器的查询结果可能存在两种情况:

  • 如果一个元素不存在于布隆过滤器中,那么布隆过滤器会准确地返回该元素不存在的结论,即不会产生误判。
  • 如果一个元素存在于布隆过滤器中,那么布隆过滤器会返回该元素可能存在的结论。由于哈希冲突的存在,不同元素可能产生相同的位数组位置,因此可能存在误判的情况。

需要注意的是,布隆过滤器的特点是在空间效率上很高,但有一定的误判率。当一个元素被误判为存在于布隆过滤器中时,实际上可能并不存在。但是,当一个元素被判断为不存在于布隆过滤器中时,那么该元素一定不存在。误判率通常由位数组长度和哈希函数数量来决定,可以通过调整这些参数来控制误判率和空间占用。

布隆过滤器主要适用于那些对查询效率要求较高,而对误判率可以容忍的场景,比如网络爬虫中的URL去重、大型分布式系统中的缓存穿透控制等。

布隆过滤器常用于缓存、数据库查询优化、防止缓存穿透等场景,可以快速判断一个元素是否存在,减轻对底层存储系统的访问负载。但布隆过滤器不能删除其中的元素,也无法得知添加的具体元素是什么,因为只能检测元素是否存在。

 

相关文章
|
3月前
|
存储 缓存 关系型数据库
海量数据去重的hash,bitmap与布隆过滤器Bloom Filter
海量数据去重的hash,bitmap与布隆过滤器Bloom Filter
52 1
|
存储 Web App开发 缓存
数据库必知词汇:布隆过滤器(Bloom Filter)
布隆过滤器(Bloom Filter)是由Burton Bloom 在1970年提出的,其后在P2P上得到了广泛的应用。一个空的布隆过滤器是一个m位的位数组,所有位的值都为0。定义了k个不同的符合均匀随机分布的哈希函数,每个函数把集合元素映射到位数组的m位中的某一位。Bloom filter算法可用来查询某一数据是否在某一数据集合中。其优点是查询效率高、可节省空间。但其缺点是会存在一定的错误。因此Bloom filter 算法仅仅能应用于那些同意有一定错误的场合。可使用Bloom filter 算法的场合包含字典软件、分布式缓存、P2P网络和资源路由等等。
1275 0
|
2天前
|
缓存 NoSQL 算法
【redis】布隆过滤器(Bloom Filter)原理解析与应用
【redis】布隆过滤器(Bloom Filter)原理解析与应用
10 1
|
1月前
|
消息中间件 缓存 算法
Bloom Filter在Hudi中的应用
Bloom Filter在Hudi中的应用
13 0
|
6月前
|
缓存 算法 NoSQL
布隆过滤器(Bloom Filter)从入门到出土
布隆过滤器(Bloom Filter)从入门到出土
|
6月前
|
存储 缓存 NoSQL
Redis之布隆过滤器(Bloom Filter)解读
Redis之布隆过滤器(Bloom Filter)解读
|
存储 缓存 NoSQL
漫谈 LevelDB 数据结构(二):布隆过滤器(Bloom Filter)
漫谈 LevelDB 数据结构(二):布隆过滤器(Bloom Filter)
163 0
漫谈 LevelDB 数据结构(二):布隆过滤器(Bloom Filter)
|
存储 NoSQL
Bloom Filter 的后继者?布谷鸟哈希与布谷鸟过滤器
Bloom Filter 的后继者?布谷鸟哈希与布谷鸟过滤器
245 0
Bloom Filter 的后继者?布谷鸟哈希与布谷鸟过滤器
|
存储 缓存 算法
比Bloom Filter节省25%空间!Ribbon Filter在Lindorm中的应用
本文研究了一种新的过滤器Ribbon Filter,并将其集成到Lindorm中
45036 11
比Bloom Filter节省25%空间!Ribbon Filter在Lindorm中的应用
|
存储 数据采集 缓存
布隆过滤器 Bloom Filter
布隆过滤器 Bloom Filter
布隆过滤器 Bloom Filter