背景
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力.
本文将介绍PolarDB开源版通过roaringbitmap支持用户画像等标签操作场景。
测试环境为macos+docker, polardb部署请参考如何用 PolarDB 证明巴菲特的投资理念 - 包括PolarDB简单部署。
roaringbitmap for PolarDB
roaringbitmap是roaring bitmap库在PG数据库中的一种类型实现,支持roaring bitmap的存取、集合操作,聚合等运算。
通常被用在用户画像等标签操作场景。
例如,
包含某些标签的人群集合,
某些人的共同点、不同点,
某人是否包含某标签。
某标签中是否包含某人。
同时包含某些标签的有多少人
某个标签有多少人
部署
git clone --depth 1 https://github.com/ChenHuajun/pg_roaringbitmap
cd pg_roaringbitmap/
USE_PGXS=1 make
USE_PGXS=1 make install
加载插件成功
[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
插件自测
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加速用户画像业务场景的筛选、统计、交并差等分析.