roaringbitmap
支持RoaringBitmap数据类型
仓库
ChenHuajun/pg_roaringbitmap
https://github.com/ChenHuajun/pg_roaringbitmap
源码
pg_roaringbitmap-1.1.0.tar.gz
pg_roaringbitmap-1.1.0.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_roaringbitmap | 1.1.0 | TYPE | Apache-2.0 | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3570 | roaringbitmap | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | rum prefix semver unit pgpdf pglite_fusion md5hash asn1oid |
|---|---|
| 下游依赖 | pgfaceting |
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 1.1.0 | 1817161514 | pg_roaringbitmap | - |
| RPM | PGDG | 1.1.0 | 1817161514 | pg_roaringbitmap_$v | - |
| DEB | PGDG | 1.1.0 | 1817161514 | postgresql-$v-roaringbitmap | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 1.1.0 | ||||
| el8.aarch64 | PIGSTY 1.1.0 | ||||
| el9.x86_64 | PIGSTY 1.1.0 | ||||
| el9.aarch64 | PIGSTY 1.1.0 | ||||
| el10.x86_64 | PIGSTY 1.1.0 | ||||
| el10.aarch64 | PIGSTY 1.1.0 | PIGSTY 1.1.0 | PIGSTY 1.1.0 | PIGSTY 1.1.0 | PIGSTY 1.1.0 |
| d12.x86_64 | PGDG 1.1.0 d12.x86_64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg12+1_amd64.deb
| PGDG 1.1.0 d12.x86_64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg12+1_amd64.deb
| PGDG 1.1.0 d12.x86_64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg12+1_amd64.deb
| PGDG 1.1.0 d12.x86_64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg12+1_amd64.deb
| PGDG 1.1.0 d12.x86_64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg12+1_amd64.deb
|
| d12.aarch64 | PGDG 1.1.0 d12.aarch64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg12+1_arm64.deb
| PGDG 1.1.0 d12.aarch64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg12+1_arm64.deb
| PGDG 1.1.0 d12.aarch64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg12+1_arm64.deb
| PGDG 1.1.0 d12.aarch64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg12+1_arm64.deb
| PGDG 1.1.0 d12.aarch64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg12+1_arm64.deb
|
| d13.x86_64 | PGDG 1.1.0 d13.x86_64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg13+1_amd64.deb
| PGDG 1.1.0 d13.x86_64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg13+1_amd64.deb
| PGDG 1.1.0 d13.x86_64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg13+1_amd64.deb
| PGDG 1.1.0 d13.x86_64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg13+1_amd64.deb
| PGDG 1.1.0 d13.x86_64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg13+1_amd64.deb
|
| d13.aarch64 | PGDG 1.1.0 d13.aarch64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg13+1_arm64.deb
| PGDG 1.1.0 d13.aarch64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg13+1_arm64.deb
| PGDG 1.1.0 d13.aarch64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg13+1_arm64.deb
| PGDG 1.1.0 d13.aarch64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg13+1_arm64.deb
| PGDG 1.1.0 d13.aarch64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg13+1_arm64.deb
|
| u22.x86_64 | PGDG 1.1.0 u22.x86_64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg22.04+1_amd64.deb
| PGDG 1.1.0 u22.x86_64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg22.04+1_amd64.deb
| PGDG 1.1.0 u22.x86_64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg22.04+1_amd64.deb
| PGDG 1.1.0 u22.x86_64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg22.04+1_amd64.deb
| PGDG 1.1.0 u22.x86_64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg22.04+1_amd64.deb
|
| u22.aarch64 | PGDG 1.1.0 u22.aarch64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg22.04+1_arm64.deb
| PGDG 1.1.0 u22.aarch64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg22.04+1_arm64.deb
| PGDG 1.1.0 u22.aarch64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg22.04+1_arm64.deb
| PGDG 1.1.0 u22.aarch64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg22.04+1_arm64.deb
| PGDG 1.1.0 u22.aarch64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg22.04+1_arm64.deb
|
| u24.x86_64 | PGDG 1.1.0 u24.x86_64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg24.04+1_amd64.deb
| PGDG 1.1.0 u24.x86_64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg24.04+1_amd64.deb
| PGDG 1.1.0 u24.x86_64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg24.04+1_amd64.deb
| PGDG 1.1.0 u24.x86_64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg24.04+1_amd64.deb
| PGDG 1.1.0 u24.x86_64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg24.04+1_amd64.deb
|
| u24.aarch64 | PGDG 1.1.0 u24.aarch64.pg18 : postgresql-18-roaringbitmap postgresql-18-roaringbitmap_1.1.0-1.pgdg24.04+1_arm64.deb
| PGDG 1.1.0 u24.aarch64.pg17 : postgresql-17-roaringbitmap postgresql-17-roaringbitmap_1.1.0-1.pgdg24.04+1_arm64.deb
| PGDG 1.1.0 u24.aarch64.pg16 : postgresql-16-roaringbitmap postgresql-16-roaringbitmap_1.1.0-1.pgdg24.04+1_arm64.deb
| PGDG 1.1.0 u24.aarch64.pg15 : postgresql-15-roaringbitmap postgresql-15-roaringbitmap_1.1.0-1.pgdg24.04+1_arm64.deb
| PGDG 1.1.0 u24.aarch64.pg14 : postgresql-14-roaringbitmap postgresql-14-roaringbitmap_1.1.0-1.pgdg24.04+1_arm64.deb
|
构建
您可以使用 pig build 命令构建 pg_roaringbitmap 扩展的 RPM 包:
pig build pkg pg_roaringbitmap # 构建 RPM 包
安装
您可以直接安装 pg_roaringbitmap 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:
pig repo add pgdg -u # 添加 PGDG 仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_roaringbitmap; # 当前活跃 PG 版本安装
pig ext install -y pg_roaringbitmap -v 18 # PG 18
pig ext install -y pg_roaringbitmap -v 17 # PG 17
pig ext install -y pg_roaringbitmap -v 16 # PG 16
pig ext install -y pg_roaringbitmap -v 15 # PG 15
pig ext install -y pg_roaringbitmap -v 14 # PG 14
dnf install -y pg_roaringbitmap_18 # PG 18
dnf install -y pg_roaringbitmap_17 # PG 17
dnf install -y pg_roaringbitmap_16 # PG 16
dnf install -y pg_roaringbitmap_15 # PG 15
dnf install -y pg_roaringbitmap_14 # PG 14
apt install -y postgresql-18-roaringbitmap # PG 18
apt install -y postgresql-17-roaringbitmap # PG 17
apt install -y postgresql-16-roaringbitmap # PG 16
apt install -y postgresql-15-roaringbitmap # PG 15
apt install -y postgresql-14-roaringbitmap # PG 14
创建扩展:
CREATE EXTENSION roaringbitmap;
用法
roaringbitmap 扩展提供了压缩位图数据类型,用于对整数集合进行高效的集合运算。
CREATE EXTENSION roaringbitmap;
SET roaringbitmap.output_format = 'array';
SELECT rb_build('{1,2,3,4,5}'::int[]); -- {1,2,3,4,5}
数据类型
roaringbitmap:32 位位图,范围 [0, 4294967296)roaringbitmap64:64 位位图,范围 [0, 18446744073709551615)
输出格式通过以下方式控制:SET roaringbitmap.output_format = 'array' 或 'bytea'
运算符
| 运算符 | 说明 |
|---|---|
| | 按位或(并集) |
& | 按位与(交集) |
# | 按位异或 |
- | 差集(与非) |
|(与 int) | 添加元素 |
-(与 int) | 移除元素 |
@> | 包含 |
<@ | 被包含于 |
&& | 重叠 |
=, <> | 相等/不等 |
核心函数
-- 构建
SELECT rb_build(ARRAY[1,2,3,4,5]);
-- 分析
SELECT rb_cardinality(rb_build('{1,2,3}'::int[])); -- 3
SELECT rb_to_array(rb_build('{1,2,3}'::int[])); -- {1,2,3}
SELECT rb_iterate(rb_build('{1,2,3}'::int[])); -- 返回集合
-- 集合运算基数
SELECT rb_and_cardinality(a, b);
SELECT rb_or_cardinality(a, b);
SELECT rb_xor_cardinality(a, b);
SELECT rb_andnot_cardinality(a, b);
-- 范围操作
SELECT rb_range(bitmap, 2, 5); -- 提取范围 [2, 5)
SELECT rb_fill(bitmap, 0, 10); -- 添加范围 [0, 10)
SELECT rb_clear(bitmap, 3, 7); -- 移除范围 [3, 7)
SELECT rb_flip(bitmap, 0, 10); -- 翻转范围 [0, 10)
-- 元素访问
SELECT rb_min(bitmap); -- 最小元素
SELECT rb_max(bitmap); -- 最大元素
SELECT rb_rank(bitmap, 5); -- 统计 <= 5 的元素数量
SELECT rb_index(bitmap, 3); -- 元素的从零开始的位置
-- 工具函数
SELECT rb_is_empty(bitmap);
SELECT rb_jaccard_dist(a, b); -- Jaccard 相似度
聚合函数
SELECT rb_build_agg(id) FROM table; -- 从行构建位图
SELECT rb_or_agg(bitmap) FROM table; -- 合并所有位图(并集)
SELECT rb_and_agg(bitmap) FROM table; -- 合并所有位图(交集)
SELECT rb_xor_agg(bitmap) FROM table; -- 合并所有位图(异或)
64 位版本使用 rb64_ 前缀。