背景
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力.
本文将介绍PolarDB开源版通过roaringbitmap支持用户画像等标签操作场景。
测试环境为macos+docker, polardb部署请参考:
roaringbitmap for PolarDB
roaringbitmap是roaring bitmap库在PG数据库中的一种类型实现,支持roaring bitmap的存取、集合操作,聚合等运算。
通常被用在用户画像等标签操作场景。
例如,
- 包含某些标签的人群集合,
- 某些人的共同点、不同点,
- 某人是否包含某标签。
- 某标签中是否包含某人。
- 同时包含某些标签的有多少人
- 某个标签有多少人
1、部署
git clone --depth 1 https://github.com/ChenHuajun/pg_roaringbitmap
cd pg_roaringbitmap/
USE_PGXS=1 make
USE_PGXS=1 make install
2、加载插件成功
[postgres@67e1eed1b4b6 pg_roaringbitmap]$ psql -h 127.0.0.1
psql (11.9)
Type "help" for help.
postgres=# create extension roaringbitmap ;
CREATE EXTENSION
postgres=# \q
3、插件自测
export PGHOST=127.0.0.1
[postgres@67e1eed1b4b6 pg_roaringbitmap]$ psql
psql (11.9)
Type "help" for help.
postgres=# \q
[postgres@67e1eed1b4b6 pg_roaringbitmap]$ USE_PGXS=1 make installcheck
/home/postgres/tmp_basedir_polardb_pg_1100_bld/lib/pgxs/src/makefiles/../../src/test/regress/pg_regress --inputdir=./ --bindir='/home/postgres/tmp_basedir_polardb_pg_1100_bld/bin' --dbname=contrib_regression roaringbitmap
(using postmaster on 127.0.0.1, default port)
============== dropping database "contrib_regression" ==============
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries ==============
test roaringbitmap ... ok
==========================================================
All 1 tests passed.
POLARDB:
All 1 tests, 0 tests in ignore, 0 tests in polar ignore.
==========================================================
实际的应用请参考我之前写的相关文章, 实际就是使用roaringbitmap加速用户画像业务场景的筛选、统计、交并差等分析.
参考
https://github.com/ChenHuajun/pg_roaringbitmap
- 《PostgreSQL roaringbitmap UID溢出(超出int4(32字节))时的处理方法 - offset》
- 《画像系统标准化设计 - PostgreSQL roaringbitmap, varbitx , 正向关系, 反向关系, 圈选, 相似扩选(向量相似扩选)》
- 《PostgreSQL pg_roaringbitmap - 用户画像、标签、高效检索》
- 《Greenplum roaring bitmap与业务场景 (类阿里云RDS PG varbitx, 应用于海量用户 实时画像和圈选、透视)》
- 《PostgreSQL (varbit, roaring bitmap) VS pilosa(bitmap库)》