onesparse

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

概览

扩展包名版本分类许可证语言
one_sparse1.0.0FEATApache-2.0C
ID扩展名BinLibLoadCreateTrustReloc模式
2980onesparseonesparse
相关扩展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

构建

您可以使用 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;

用法

来源: 主页入门文档MatrixVectorAlgorithms

OneSparse 是一个将 SuiteSparse:GraphBLAS 绑定到 PostgreSQL 的扩展,并以新类型、函数和运算符的形式提供稀疏线性代数与图算法能力。 文档将 matrix 视为核心类型,vectorscalar 都建立在同一模型之上。

核心设置

CREATE EXTENSION onesparse;
SET search_path TO public,onesparse;

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

入门文档指出,OneSparse 将 API 放在 onesparse 模式中,matrix 和 vector 页面也展示了同样的 search_path 交互方式。

矩阵与向量

Matrix 页面展示了常见的矩阵操作,例如构造、打印、绘制、调整大小、类型转换和聚合。 Vector 页面展示了对应的向量 API,包括 nvalssizeset_elementget_elementeaddemultreduce_scalarchooseapply

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 文件和随机图来演示图算法。 它重点介绍了以下算法:

  • bfs(graph, 1),用于层级和父节点 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(...) 加载图,以及使用 draw(...) 进行图可视化。

范围

这套文档覆盖面很广。本 stub 只提炼了核心接口,以及在入门、矩阵、向量和算法页面中反复出现的主要示例,而不重复完整的 GraphBLAS 能力清单。


最后修改 2026-04-14: update extension catalog (fa7cf58)