provsql
PostgreSQL 半环溯源与不确定性管理扩展
仓库
PierreSenellart/provsql
https://github.com/PierreSenellart/provsql
源码
provsql-1.2.3.tar.gz
provsql-1.2.3.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
provsql | 1.2.3 | FEAT | MIT | C++ |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2900 | provsql | 否 | 是 | 是 | 是 | 是 | 否 | - |
| 相关扩展 | uuid-ossp |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.2.3 | 1817161514 | provsql | uuid-ossp |
| RPM | PIGSTY | 1.2.3 | 1817161514 | provsql_$v | - |
| DEB | PIGSTY | 1.2.3 | 1817161514 | postgresql-$v-provsql | - |
构建
您可以使用 pig build 命令构建 provsql 扩展的 RPM / DEB 包:
pig build pkg provsql # 构建 RPM / DEB 包
安装
您可以直接安装 provsql 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install provsql; # 当前活跃 PG 版本安装
pig ext install -y provsql -v 18 # PG 18
pig ext install -y provsql -v 17 # PG 17
pig ext install -y provsql -v 16 # PG 16
pig ext install -y provsql -v 15 # PG 15
pig ext install -y provsql -v 14 # PG 14
dnf install -y provsql_18 # PG 18
dnf install -y provsql_17 # PG 17
dnf install -y provsql_16 # PG 16
dnf install -y provsql_15 # PG 15
dnf install -y provsql_14 # PG 14
apt install -y postgresql-18-provsql # PG 18
apt install -y postgresql-17-provsql # PG 17
apt install -y postgresql-16-provsql # PG 16
apt install -y postgresql-15-provsql # PG 15
apt install -y postgresql-14-provsql # PG 14
预加载配置:
shared_preload_libraries = 'provsql';
创建扩展:
CREATE EXTENSION provsql CASCADE; -- 依赖: uuid-ossp
用法
来源:README,getting started,user docs,SQL API index
provsql 为 PostgreSQL 增加 semiring provenance 与 uncertainty management。上游文档覆盖 provenance tracking、semiring evaluation、probability、Shapley/Banzhaf 值、where-provenance、update provenance 以及 temporal features。
加载扩展
shared_preload_libraries = 'provsql'
CREATE EXTENSION provsql CASCADE;
CASCADE 形式会在需要时自动安装 uuid-ossp。getting-started 文档明确说明,预加载这一步是必须的,因为 ProvSQL 安装了 planner hook。
为表启用 provenance
SELECT provsql.add_provenance('mytable');
SELECT name, provenance()
FROM mytable;
SELECT provsql.remove_provenance('mytable');
用户文档还描述了 provenance mapping:
SELECT create_provenance_mapping('my_mapping', 'mytable', 'column_name');
SELECT create_provenance_mapping_view('my_mapping_view', 'mytable', 'column_name');
概率与 semiring 工作流
为 tuple token 赋概率:
SELECT set_prob(provenance(), 0.8)
FROM mytable
WHERE id = 1;
在 semiring 上计算 provenance:
SELECT city,
provenance_evaluate(
provenance(),
'personnel_level',
'unclassified'::classification_level,
'security_plus',
'security_times'
)
FROM (SELECT DISTINCT city FROM personnel) AS t;
计算影响度分数:
SELECT shapley(provenance(), m.token)
FROM my_mapping AS m;
文档还说明了 shapley_all_vars、banzhaf 和 banzhaf_all_vars。
额外模式
上游记录了以下 session GUC:
SET provsql.where_provenance = on;
SET provsql.update_provenance = on;
用户指南还单独介绍了 get_valid_time、timetravel、timeslice、history 和 undo 等 temporal helper。
说明
- 上游测试覆盖 PostgreSQL 10 到 18。
- Git tag 显示仓库当前打包发布版本为
v1.2.3。