roaringbitmap
支持RoaringBitmap数据类型
仓库
ChenHuajun/pg_roaringbitmap
https://github.com/ChenHuajun/pg_roaringbitmap
源码
pg_roaringbitmap-1.2.0.tar.gz
pg_roaringbitmap-1.2.0.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_roaringbitmap | 1.2.0 | TYPE | Apache-2.0 | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3630 | roaringbitmap | 否 | 是 | 否 | 是 | 否 | 是 | - |
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 1.2.0 | 1817161514 | pg_roaringbitmap | - |
| RPM | PGDG | 1.2.0 | 1817161514 | pg_roaringbitmap_$v | - |
| DEB | PGDG | 1.2.0 | 1817161514 | postgresql-$v-roaringbitmap | - |
构建
您可以使用 pig build 命令构建 pg_roaringbitmap 扩展的 RPM 包:
BASH
安装
您可以直接安装 pg_roaringbitmap 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:
BASH
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
BASH
pig
BASH
dnf
BASH
apt
BASH
创建扩展:
SQL
用法
来源:
pg_roaringbitmap 安装的 PostgreSQL 扩展名是 roaringbitmap,它提供基于 Roaring Bitmap 的压缩位图类型和集合运算函数。适合紧凑存储整数集合、快速并集/交集、用户分群、faceting 和位图聚合。
v1.2.0 增加了 rb_runoptimize() / rb64_runoptimize() 用于缩小位图二进制尺寸,保留旧拼写 rb_exsit 以兼容老版本,加入 PostgreSQL 19 兼容,并在 receive 函数中校验不可信位图输入。
创建扩展
SQL
roaringbitmap.output_format 可设为 bytea 或 array。默认输出格式是 bytea,更适合大位图;array 适合交互式查看。
数据类型
roaringbitmap存储无符号 32 位整数集合,逻辑范围为[0, 4294967296)。roaringbitmap64存储无符号 64 位整数集合,使用rb64_函数族。
SQL
构建与转换
SQL
64 位值使用 rb64_build()、rb64_build_agg()、rb64_to_array() 和 rb64_iterate()。
集合运算
SQL
也支持包含与重叠操作符:
SQL
基数与范围函数
SQL
64 位范围函数使用 rb64_ 前缀。自 v1.1.0 起,多个 rb64_ range/select 函数中 range_end = 0 表示无限上界。
聚合函数
SQL
优化序列化尺寸
SQL
rb_runoptimize() 和 rb64_runoptimize() 可在适合的数据分布下减小位图序列化尺寸。不要在高频写入路径中未经测试直接使用。
注意事项
- Pigsty 使用扩展文件名
roaringbitmap.md;上游包名是pg_roaringbitmap。 - 源码构建需要 PostgreSQL 头文件和 CRoaring 依赖。README 提到发布前回归测试覆盖 PostgreSQL 13 及以上版本。
Makefile_native可以用 SIMD 指令编译,在匹配 CPU 上可能更快;但这种二进制放到缺少对应 CPU 特性的机器上可能触发SIGILL。- 大位图建议使用
bytea输出;人工查看时再切到array输出。