onesparse

PostgreSQL 18 的稀疏线性代数与图算法扩展

概览

扩展包名版本分类许可证语言
one_sparse1.0.0FEATApache-2.0C
ID扩展名BinLibLoadCreateTrustReloc模式
2620onesparseonesparse
相关扩展age pgrouting postgis

PG18 only; upstream release v1.0.0 ships extension SQL version 0.1.0

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.0.01817161514one_sparse-
RPMPIGSTY1.0.01817161514onesparse_$vgraphblas, lagraph
DEBPIGSTY1.0.01817161514postgresql-$v-onesparselibgraphblas10, liblagraph1, liblagraphx1
OS / PGPG18PG17PG16PG15PG14
el8.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el8.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el9.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el9.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el10.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el10.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d12.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d12.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d13.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d13.aarch64
PIGSTY 1.0.0
PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u22.x86_64
PIGSTY 1.0.0
PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u22.aarch64
PIGSTY 1.0.0
PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u24.x86_64
PIGSTY 1.0.0
PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u24.aarch64
PIGSTY 1.0.0
PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u26.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u26.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS

构建

您可以使用 pig build 命令构建 one_sparse 扩展的 RPM / DEB 包:

pig build pkg one_sparse         # 构建 RPM / DEB 包

安装

您可以直接安装 one_sparse 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install one_sparse;          # 当前活跃 PG 版本安装
pig ext install -y one_sparse -v 18  # PG 18
dnf install -y onesparse_18       # PG 18
apt install -y postgresql-18-onesparse   # PG 18

创建扩展

CREATE EXTENSION onesparse;

用法

来源:homepage, release v1.0.0, control file at v1.0.0, intro docs, matrix docs, vector docs, algorithm examples

OneSparse 是一个把 SuiteSparse:GraphBLAS 绑定进 Postgres 的 PostgreSQL 扩展,它把稀疏线性代数和图算法暴露为新的类型、函数与运算符。文档将 matrix 视为核心类型,vectorscalar 建立在同一模型之上。v1.0.0 release 已存在,但该标签下的 extension control file 仍声明 SQL default_version = '0.1.0'

核心设置

CREATE EXTENSION onesparse;
SET search_path TO public,onesparse;

SELECT 'int32'::matrix;
SELECT 'int32'::vector;
SELECT 'int32:42'::scalar;

文档站点按 matrixvectorscalar 组织 API,交互示例主要依赖类型转换和构造器。

Matrix 与 Vector

matrix 页面展示了构造、print()draw()、赋值、提取、cast_to()、调整大小和聚合等常见操作。vector 页面记录了对应的向量 API,包括 nvals(), size(), eadd(), emult(), reduce_scalar(), choose()apply()

SELECT print('int32(4:4)'::matrix);
SELECT draw('int32(4:4)[1:2:1 2:3:2 3:1:3]'::matrix);
SELECT eadd('int32[0:1 1:2 2:3]'::vector, 'int32[0:1 1:2 2:3]'::vector, 'plus_int32');
SELECT reduce_scalar('int32[0:1 1:2 2:3]'::vector, 'plus_monoid_int32');

图算法

示例页使用 Matrix Market 输入与 draw(...) 图形可视化。文档列出的图算法包括:

  • bfs(graph, 1),用于 level 和 parent BFS
  • sssp(cast_to(graph, 'int32'), 1::bigint, 1),用于单源最短路径
  • pagerank(graph),用于按链接结构给顶点排序
  • triangle_centrality(graph),用于基于三角形的中心性
  • betweenness(graph, ARRAY[...])square_clustering(graph),用于补充图分析

文档中的代表性示例:

SELECT draw(triu(graph), (SELECT level FROM bfs(graph, 1)), false, false, true, 0.5)
FROM karate;

同一份指南还展示了使用 mmread('/home/postgres/onesparse/demo/karate.mtx') 加载图。


最后修改 2026-05-01: update extension data (e399d22)