当前位置:网站首页>布隆过滤器bloom
布隆过滤器bloom
2022-08-01 14:24:00 【IABQL】
使用布隆过滤器来过滤掉DB中不存在的数据,有效减少缓存穿透发生的可能性。
先简述一下大致过程:
将DB中的数据进行哈希运算(一般要进行几次的运算),在计算出的位置上存值为1。有请求进来先访问redis缓存,发现该数据不存在,则再去访问布隆过滤器,经过哈希运算得到该位置上的数据。如果为1说明DB中存在该数据,则访问DB中的具体数据,否则不访问DB。从而减少DB的访问量。
下面看一下bloom工作的具体过程:
布隆过滤器由「初始值都为 0 的位图数组」和「 N 个哈希函数」两部分组成。当我们在写入数据库数据时,在布隆过滤器里做个标记,这样下次查询数据是否在数据库时,只需要查询布隆过滤器,如果查询到数据没有被标记,说明不在数据库中。
布隆过滤器会通过 3 个操作完成标记:
第一步,使用 N 个哈希函数分别对数据做哈希计算,得到 N 个哈希值;
第二步,将第一步得到的 N 个哈希值对位图数组的长度取模,得到每个哈希值在位图数组的对应位置。
第三步,将每个哈希值在位图数组的对应位置的值设置为 1;
举个例子,假设有一个位图数组长度为 8,哈希函数 3 个的布隆过滤器。

在数据库写入数据 x 后,把数据 x 标记在布隆过滤器时,数据 x 会被 3 个哈希函数分别计算出 3 个哈希值,然后在对这 3 个哈希值对 8 取模,假设取模的结果为 1、4、6,然后把位图数组的第 1、4、6 位置的值设置为 1。当应用要查询数据 x 是否数据库时,通过布隆过滤器只要查到位图数组的第 1、4、6 位置的值是否全为 1,只要有一个为 0,就认为数据 x 不在数据库中。
布隆过滤器由于是基于哈希函数实现查找的,高效查找的同时存在哈希冲突的可能性,比如数据 x 和数据 y 可能都落在第 1、4、6 位置,而事实上,可能数据库中并不存在数据 y,存在误判的情况。可以通过增加hash运算的次数来减少hash冲突,减少误判。(因为运算越多,那么想要出现所有位置上都为1的概率就会下降,自然误判也就减少。但是运算次数越多,所需数组长度也越大,运算速度也会减慢,所以要根据实际业务需求来实现)。
所以,查询布隆过滤器说数据存在,并不一定证明数据库中存在这个数据,但是查询到数据不存在,数据库中一定就不存在这个数。
原文链接:https://blog.csdn.net/qq_34827674/article/details/123463175
边栏推荐
猜你喜欢

Yann LeCun开怼谷歌研究:目标传播早就有了,你们创新在哪里?

fh511小风扇主控芯片 便携式小风扇专用8脚IC 三档小风扇升压芯片sop8

使用open3d可视化3d人脸

易优压双驱挖掘机压路机器类网站源码 v1.5.8

openEuler 社区完成首批顾问专家聘用,共同为社区的发展贡献力量

台积电认清了形势,新的建厂计划没有美国,中国芯片也得到重视

【每日一题】1331. 数组序号转换

【论文笔记】MiniSeg: An Extremely Minimum Network for Efficient COVID-19 Segmentation

mysql的基本使用

立新能源深交所上市:市值55亿 哈密国投与国有基金是股东
随机推荐
Wovent Bio IPO: Annual revenue of 480 million pension fund is a shareholder
leetcode.26 删除有序数组中的重复项(set/直接遍历)
DaemonSet of kubernetes and rolling update
MBI5020 LED驱动
珠海首个水环境安全监测系统上线
考研大事件!这6件事考研人必须知道!
PIR人体感应AC系列感应器投光灯人体感应开关等应用定制方案
解读selenium webdriver
php gui 框架 demo
透过现象看本质,如何针对用户做好需求分析
又拿三个大奖?!多力就是要让你吃的更营养更健康
iPhone难卖,被欧洲反垄断的服务业务也难赚钱了,苹果的日子艰难
The default database main key, foreign key, and the only key index
Amperon IPO meeting: annual revenue of 500 million Tongchuang Weiye and China Mobile Innovation are shareholders
立新能源深交所上市:市值55亿 哈密国投与国有基金是股东
透过开发抽奖小程序,体会创新与迭代
tkinter-TinUI-xml实战(6)问卷
开放原子全球开源峰会原圆满结束,openEuler模式得到参会者高度认可
the direction i'm looking for
经纬信息IPO过会:年营收3.5亿 叶肖华控制46.3%股权