【重新发现PostgreSQL之美】- 14 bloom 布隆过滤器索引-阿里云开发者社区

开发者社区> 传说中的德哥> 正文

【重新发现PostgreSQL之美】- 14 bloom 布隆过滤器索引

简介: 大家好,这里是重新发现PostgreSQL之美 - 14 bloom 布隆过滤器索引
+关注继续查看

背景


场景:

分析业务, 任意字段、任意维度组合, 组合等值查询.

where a=? and b=? or c=? . 其他组合 ab ac ad bc bd bcd bdef def ... 每个字母代表一个字段.

在电商、金融等拖拽式实时分析场景中尤为常见.

挑战:

由于查询维度非常多, 完全不可控, 如果每个维度都预计算, 会导致结果数据量指数级增加.

如果为每个查询维度都创建一个索引, 那么会有N!+1个索引. 例如5个字段的任意组合有121种, 需要建121个索引, 完全不现实.

PG 解决方案:

使用bloom布隆过滤索引. 每个value被hash计算后映射到若干个bit位, 这些bit位被设置为1表示包含这个value.

一个索引即可满足任意维度的组合等值搜索.

https://www.postgresql.org/docs/14/bloom.html

202103/20210326_02.md  《PostgreSQL 14 preview - BRIN (典型IoT 时序场景) 块级索引支持 bloom filter - 随机,大量distinct value, 等值查询》
202011/20201128_04.md  《PostgreSQL bloom 索引原理》
201911/20191130_01.md  《UID编码优化 - 用户画像前置规则 (bloom, 固定算法等)》
201810/20181003_02.md  《PostgreSQL bloom filter index 扩展 for bigint》
201804/20180409_01.md  《PostgreSQL 11 preview - bloom filter 误报率评估测试及如何降低误报 - 暨bloom filter应用于HEAP与INDEX的一致性检测》
201803/20180323_05.md  《PostgreSQL 11 preview - BRIN索引接口功能扩展(BLOOM FILTER、min max分段)》
201605/20160523_01.md  《PostgreSQL 9.6 黑科技 bloom 算法索引,一个索引支撑任意列组合查询》


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
今天我们重新聊聊JVM,为什么面试总是被问到?
今天我们重新聊聊JVM,为什么面试总是被问到?
6218 0
【问题】sql数据库报无效的数据证书,需重新安装
事情的经过:   今天打开sql2014数据库,没有成功运行,但是给我弹出一个“无效的数据证书,需要重新安装!”提示。什么情况。为什么,应该是前一天弄vs导致的。因为升级了vs2017,所以把以前的东西做了删除卸载,可能是我有些依赖组件给卸载了。
995 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
8432 0
企业级数据库最佳选择!阿里云云数据库SQL Server 2019新版本重磅发布 !
2020年3月26日,阿里云云数据库SQL Server 2019版正式上线,并随之发布共享型规格族及云数据库SQL Server专属集群两个产品形态。企业客户的数据库上云有了更多选择。
910 0
重新学习Mysql数据库1:无废话MySQL入门
开始使用 我下面所有的SQL语句是基于MySQL 5.6+运行。 MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格组成, 如图所.
851 0
PostgreSQL 11 新特性解读:分区表支持创建主键、外键、索引
PostgreSQL 10 版本虽然支持创建范围分区表和列表分区表,但创建过程依然比较繁琐,需要手工定义子表索引、主键,详见 PostgreSQL10:重量级新特性-支持分区表,PostgreSQL 11 版本得到增强,在父表上创建索引、主键、外键后,子表上将自动创建,本文演示这三种场景。
4755 0
重新学习MySQL数据库6:浅谈MySQL的中事务与锁
『浅入深出』MySQL 中事务的实现   在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的;在这篇文章中,我们将对事务的实现进行分析,尝试理解数据库是如何实现事务的,当然我们也会在文章中简单对 MySQL 中对 ACID 的实现进行简单的介绍。
1431 0
【PostgreSQL 创新营】第二课:认识PostgreSQL中与众不同的索引 答疑汇总
【PostgreSQL 创新营】第二课:认识PostgreSQL中与众不同的索引 答疑汇总
386 0
179
文章
0
问答
来源圈子
更多
德哥:阿里巴巴高级产品专家, 阿里巴巴钻石布道师, 42项数据库专利, 目前任职于数据库架构组, 负责数据库开源,同时也是PostgreSQL 中国社区发起人之一, 负责PostgreSQL数据库在中国的技术落地与推广、人才培养,开设有开源社、德说、重新发现PG之美等专栏。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载