Skip to content

Latest commit

 

History

History
67 lines (37 loc) · 3.75 KB

20210605_07.md

File metadata and controls

67 lines (37 loc) · 3.75 KB

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

作者

digoal

日期

2021-06-05

标签

PostgreSQL , bloom , 签名 , bit group , 布隆过滤器


背景

视频回放: https://www.bilibili.com/video/BV1c64y1C7HK/

场景:
分析业务, 任意字段、任意维度组合, 组合等值查询.
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

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

digoal's wechat