datasketches
PostgreSQL 近似分析摘要数据结构与聚合函数
仓库
apache/datasketches-postgresql
https://github.com/apache/datasketches-postgresql
源码
apache-datasketches-postgresql-1.7.0-src.tar.gz
apache-datasketches-postgresql-1.7.0-src.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
datasketches | 1.7.0 | FUNC | Apache-2.0 | C++ |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 4690 | datasketches | 否 | 是 | 否 | 是 | 否 | 是 | - |
Built against Apache DataSketches C++ core 5.0.0.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.7.0 | 1817161514 | datasketches | - |
| RPM | PIGSTY | 1.7.0 | 1817161514 | datasketches_$v | - |
| DEB | PIGSTY | 1.7.0 | 1817161514 | postgresql-$v-datasketches | - |
构建
您可以使用 pig build 命令构建 datasketches 扩展的 RPM / DEB 包:
pig build pkg datasketches # 构建 RPM / DEB 包
安装
您可以直接安装 datasketches 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install datasketches; # 当前活跃 PG 版本安装
pig ext install -y datasketches -v 18 # PG 18
pig ext install -y datasketches -v 17 # PG 17
pig ext install -y datasketches -v 16 # PG 16
pig ext install -y datasketches -v 15 # PG 15
pig ext install -y datasketches -v 14 # PG 14
dnf install -y datasketches_18 # PG 18
dnf install -y datasketches_17 # PG 17
dnf install -y datasketches_16 # PG 16
dnf install -y datasketches_15 # PG 15
dnf install -y datasketches_14 # PG 14
apt install -y postgresql-18-datasketches # PG 18
apt install -y postgresql-17-datasketches # PG 17
apt install -y postgresql-16-datasketches # PG 16
apt install -y postgresql-15-datasketches # PG 15
apt install -y postgresql-14-datasketches # PG 14
创建扩展:
CREATE EXTENSION datasketches;
用法
来源:README, latest release 1.7.0, Apache DataSketches
datasketches 为 PostgreSQL 增加近似分析 sketch 类型与聚合。上游 README 列出 CPC、HLL、Theta、Array Of Doubles、KLL、Quantiles 与 Frequent Strings sketch;GitHub 最新正式 release 为 1.7.0,默认分支已经推进到 1.8.0-SNAPSHOT。
CREATE EXTENSION datasketches;
核心 Sketch 家族
cpc_sketch与hll_sketch用于近似去重计数。theta_sketch用于去重计数,并支持 union、intersection、A-not-B 等集合运算。aod_sketch用于按标识符维护 double 数组形式的 tuple 指标。kll_*_sketch与quantiles_*_sketch用于分位数、rank、PMF 与 CDF。frequent_strings_sketch用于检测 high-hitter。
常见模式
从原始值构建 sketch:
SELECT cpc_sketch_build(1);
SELECT kll_float_sketch_build(value) FROM normal;
使用一次性近似聚合:
SELECT cpc_sketch_distinct(id) FROM random_ints_100m;
在分组或 cube 维度之间合并 sketch:
SELECT cpc_sketch_get_estimate(cpc_sketch_union(sketch)) FROM cpc_sketch_test;
SELECT hll_sketch_get_estimate(hll_sketch_union(sketch)) FROM hll_sketch_test;
SELECT kll_float_sketch_get_quantile(kll_float_sketch_merge(sketch), 0.5)
FROM kll_float_sketch_test;
对 Theta sketch 执行集合运算:
SELECT theta_sketch_get_estimate(theta_sketch_intersection(sketch1, sketch2))
FROM theta_set_op_test;
查找超过阈值的高频项:
SELECT frequent_strings_sketch_result_no_false_negatives(
frequent_strings_sketch_build(9, value),
1000000
)
FROM zipf_1p1_8k_100m;
注意事项
- 上游文档要求 PostgreSQL 9.6+,并依赖 Boost 1.75.0 与 DataSketches C++ core 5.0.0 或更高版本。
- 这些结构是可跨维度合并的近似结构,不是
COUNT(DISTINCT ...)或精确直方图的直接替代。