数据库浅谈之 Bloom Filter

news2025/7/13 14:55:14

数据库浅谈之 Bloom Filter

HELLO,各位博友好,我是阿呆 🙈🙈🙈

这里是数据库浅谈系列,收录在专栏 DATABASE 中 😜😜😜

本系列阿呆将记录一些数据库领域相关的知识 🏃🏃🏃

OK,兄弟们,废话不多直接开冲 🌞🌞🌞


一 🏠 概述

什么是布隆过滤器

1970 年,Burton Howard Bloom 在论文 Space/Time Trade-offs in Hash Coding with Allowable Errors 提出了 bloom filter

布隆过滤器是一种空间效率很高的随机数据结构,专门用来检测集合中是否存在特定的元素。布隆过滤器由一个长度为m比特的位数组与 k 个独立的哈希函数组成的数据结构

当要向布隆过滤器中插入一个元素时,该元素经过 k 个哈希函数计算产生 k 个哈希值,以哈希值作为位数组中的下标,将所有 k 个对应的比特值由 0 置为 1

当要查询一个元素时,同样将其经过哈希函数计算产生哈希值,然后检查对应的 k 个比特值 :如果有任意一个比特为 0 ,表明该元素一定不在集合中;如果所有比特均为 1,表明该元素有可能性在集合中

由于可能出现哈希碰撞,不同元素计算的哈希值有可能一样,导致一个不存在的元素有可能对应的比特位为 1,这就是所谓 假阳性。相对地,假阴性 在BF中是绝不会出现的

Bloom Filter 通过极少错误换取了存储空间极大节省,布隆过滤器认为不在的,一定不会在集合中;布隆过滤器认为在的,不一定存在集合中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qpw6yCMD-1677203794509)(E:\2022年MD文档\2023 年 MD文档\二月\数据库浅谈\数据库浅谈之 Bloom Filter.assets\1677135859772.png)]

Bloom filter 的实现一般由一个或多个 bitmap 和多个哈希函数组成,可以用于检索一个元素是否在一个集合中


二 🏠 核心

布隆过滤器优缺点

优点:

节省空间 :不需要存储数据本身,只需要存储数据对应 hash 比特位
时间复杂度低 :插入和查找的时间复杂度都为 O(k) ,k 为哈希函数的个数

缺点:

存在假阳性 :布隆过滤器判断存在,但可能元素实际不在集合中( 误判率取决于哈希函数个数)
不支持删除元素 :如果一个元素被删除,但是却不能从布隆过滤器中删除


不支持删除

Counting Bloom Filter 将标准 Bloom Filter 位数组的每一位扩展为一个小的计数器(counter)

在插入元素时给对应的k(k为哈希函数个数)个Counter 的值分别加1,删除元素时给对应的 k 个 Counter 的值分别减 1。Counting Bloom Filter通过多占用几倍的存储空间的代价,给Bloom Filter增加了删除操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CFwUaH0z-1677203794510)(E:\2022年MD文档\2023 年 MD文档\二月\数据库浅谈\数据库浅谈之 Bloom Filter.assets\1677136242823.png)]


三 🏠 结语

身处于这个浮躁的社会,却有耐心看到这里,你一定是个很厉害的人吧 👍👍👍

各位博友觉得文章有帮助的话,别忘了点赞 + 关注哦,你们的鼓励就是我最大的动力

博主还会不断更新更优质的内容,加油吧!技术人! 💪💪💪

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/369433.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

场景扩展,体验升级 | DBMotion新增无公网数据库迁移、支持监控报警等多项功能

丝滑的零停机数据库在线迁移工具——DBMotion,又双叒叕发新版:新增的网关、数据源功能,让你无公网IP的数据库也可以迁移;新增的监控功能,让你对迁移性能一目了然;新增的报警功能,让你及时获得同…

什么是SSL端口?HTTPS配置技术指南

安全套接字层(SSL)是负责互联网连接的数据身份验证和加密的技术。它加密在两个系统之间(通常在服务器和客户端之间)之间通过互联网发送的数据,使其保持私密。随着在线隐私的重要性日益增加,您应该熟悉SSL端…

【C语言】指针的定义和使用

指针一、什么是指针二、指针类型三、指针和数组的关系四、空指针五、野指针一、什么是指针 指针(Pointer)是编程语言中的一个对象,通过地址直接指向内存中该地址的值。由于通过地址能够找到所需的变量存储单元,可以说地址指向该变…

小样本学习

机器学习就是从数据中学习,从而使完成任务的表现越来越好。小样本学习是具有有限监督数据的机器学习。类似的,其他的机器学习定义也都是在机器学习定义的基础上加上不同的限制条件衍生出来。例如,弱监督学习是强调在不完整、不准确、有噪声、…

springboot+vue.js校园车辆用车预约管理系统

springboot是基于spring的快速开发框架, 相比于原生的spring而言, 它通过大量的java config来避免了大量的xml文件, 只需要简单的生成器便能生成一个可以运行的javaweb项目, 是目前最火热的java开发框架 前端技术:nodejsvueelementui本项目的应用场景描述如下&…

ARM+FPGA架构开发板PCIE2SCREEN示例分析与测试-米尔MYD-JX8MMA7

本篇测评由电子发烧友的优秀测评者“zealsoft”提供。 本次测试内容为米尔MYD-JX8MMA7开发板其ARM端的测试例程pcie2screen并介绍一下FPGA端程序的修改。 ​ 01. 测试例程pcie2screen 例程pcie2screen是配合MYD-JX8MMA7开发板所带的MYIR_PCIE_5T_CMOS 工程的测试例&#…

【JavaScript】基本语法大全

前言: 大家好,我是程序猿爱打拳。在学习C和Java这样的后端编程语言后,我们大概率会学习一些关于前端的语言如HTMLJavaScript。又因为前后端基本语法有些许不同,因此我整理出来。今天给大家讲解的是JS中的数据类型、运算符、选择结…

SAP ABAP 理解RAWSTRING(XSTRING) 类型

用F1查看的时候,这里是这样说的: The types RAWSTRING and STRING have a variable length. A maximum length for these types can be specified, but has no upper limit. The type SSTRING is available as of release 6.10 and it has a variable …

Java学习笔记——时间日期类

目录概述时间日期类——Date构造方法Date类的常用方法simpledateformate类练习:秒杀活动概述 时间日期类——Date构造方法 Date类的常用方法 package top.xxx.www.date;import java.util.Date;public class DateDemo {public static void main(String[] args) {Date…

2022年10+最好的LearnDash在线教育主题

如果您想在线发布课程或创建自己的学习管理系统 (LMS),最好的LearnDash在线教育主题集合可以提供帮助。尽管这些主题应该与所有最好的 WordPress 在线学习插件一起使用,但它们都是为与 LearnDash 无缝集成而构建的。由于 LearnDash 可能是 WordPress 最好…

软件测试岗的面试中经常会被问到的一些问题

一般软件测试的面试分为三轮:笔试,HR面试,技术面试。 前两轮,根据不同企业,或有或无,但最后一个技术面试是企业了解你“行不行”的关键环节,每个企业都会有的。 在平时的学习、工作中一定要善…

浏览器强缓存之强缓存和

http缓存控制 为什么需要缓存 为啥要缓存: 缓存的优点: 1)加快浏览器加载网页的速度,优化用户体验,让用户更快速的打开我们的网页; 2)减少对服务器的访问次数,减轻服务器的负担&a…

数据库(五)

第二部分 Redis 数据库 第一章 NoSQL介绍 1.1 什么是NoSQL NoSQL(Not Only SQL)即不仅仅是SQL,泛指非关系型的数据库,它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个…

DC-1 靶场学习

以前写过了,有一些忘了,快速的重温一遍。 DC一共九个靶场,目标一天一个。 文章目录环境配置:信息搜集:漏洞复现:FLAG获取环境配置: 最简单的办法莫过于将kali和DC-1同属为一个nat的网络下。 信…

RK3568移植5G通信模组

5G通信模组这次移植的5G通信模组选择的是深圳广和通公司生产的FG650 5G通信模组,对外的通信数据接口为USB2.0, USB3.0两个接口。FG650模组默认工作在NCM驱动模式,如果不是可以通过串口发送AT指令ATGTUSBMODE36来修改成工作在NCM模式。linux内核代码的修改…

TX Text Control .NET Server for ASP.NET 31.0 SP2 CRK

用于 ASP.NET 31.0 SP2 的 TX 文本控件 .NET 服务器 用于 ASP.NET 的 TX 文本控件 .NET 服务器 TX Text Control Server for ASP.NET 是用于 Web 应用程序或服务的服务器端组件。它是一个完全可编程的 ASP.NET 文字处理器引擎,提供了广泛的文字处理功能。使用 TX Te…

MySQL Administrator定时备份MySQL数据库

1、下载并安装软件mysql-gui-tools-5.0-r17-win32.exe 2、将汉化包zh_CN文件夹拷贝到软件安装目录 3、菜单中打开MySql Adminstrator,见下图,初次打开无服务实例。 点击已存储连接右侧按钮①,打开下图对话框。点击“新连接”按钮&#xff…

构建matter over Thread的演示系统-efr32

文章目录1. 简介2. 构建测试系统2.1设置 Matter Hub(Raspberry Pi)2.2 烧录Open Thread RCP固件2.3 烧录待测试的matter设备3. 配网和测试:3.1 使用mattertool建立Thread网络3.2 使用mattertool配置设备入网3.3 使用mattertool控制matter设备3.4 查看节点的Node ID等…

如何高效管理自己的时间,可以从这几个方向着手

如果你是上班族,天选打工人,你的绝大多数时间都属于老板,能够自己支配的时间其实并不多,所以你可能察觉不到时间管理的重要性。但如果你是自由职业者或者创业者,想要做出点成绩,那你就需要做好时间管理&…

Ingress-nginx 部署及模拟实战

写在最前面,博主希望大家看这篇文章过程中,重点看实例演示,因为我觉得部署安装,网上千篇一律,如果按照网上的教程安装不成功,要么网上省略了一部分没写,要么你的基础环境和人家的不一样&#xf…