这是本节的多页打印视图。 .
内核分支
- 1: PostgreSQL
- 2: Supabase
- 3: Citus
- 4: Babelfish
- 5: IvorySQL
- 6: PolarDB PG
- 7: PolarDB Oracle
- 8: Percona
- 9: PostgresML
- 10: openHalo
- 11: Greenplum
- 12: OrioleDB
- 13: Cloudberry
- 14: Neon
- 15: AgensGraph
- 16: pgEdge
- 17: DocumentDB
在 Pigsty 中,您可以使用不同 “风味” 的 PostgreSQL 分支替换 “原生 PG 内核”,实现特殊的功能与效果。
Pigsty 支持多种 PostgreSQL 内核和兼容分支,让您能够在同一套运维体系中获得兼容性、多主复制、图查询、MPP 数仓、透明加密等不同能力。
需要注意的是,不同内核在 Pigsty 中的交付深度并不完全一致:
像 PostgreSQL、Citus、Babelfish、IvorySQL、PolarDB、AgensGraph、pgEdge 已经有较明确的模板与配置方式;
像 Cloudberry / Greenplum 则更多通过 gpsql 模式统一纳管,MPP 初始化与扩缩容仍建议使用上游工具链。
| 内核 | 关键特性 | 描述 |
|---|---|---|
| PostgreSQL | 原生内核,扩展齐备 | 原版 PostgreSQL,配备 575 扩展 |
| Supabase | 后端即服务 | 基于 PostgreSQL 的 BaaS,Firebase 替代方案 |
| Citus | 水平分布式扩展,多租户 | 通过原生扩展实现分布式 PostgreSQL |
| Babelfish | SQL Server 兼容 | SQL Server 线协议兼容(PG17/18) |
| IvorySQL | Oracle 兼容 | Oracle 语法和 PL/SQL 兼容 |
| OpenHalo | MySQL 兼容 | MySQL 线协议兼容 |
| Percona | 透明数据加密 | 带有 pg_tde 的 Percona 发行版 |
| DocumentDB | MongoDB 迁移 | DocumentDB + FerretDB,兼容 MongoDB 线协议 |
| OrioleDB | OLTP 优化 | Zheap,无膨胀,S3 存储 |
| PolarDB | Aurora 风格 RAC | RAC,中国国产合规 |
| Cloudberry | 开源 MPP 数仓 | 以 gpsql 模式接入的 Cloudberry 分支 |
| AgensGraph | 属性图 + Cypher | 在 PostgreSQL 体系内提供图查询能力 |
| pgEdge | Spock 多主复制 | 面向边缘场景的分布式 PostgreSQL 发行版 |

版本
| 内核 | Debian / Ubuntu | EL |
|---|---|---|
| PostgreSQL / Citus | PostgreSQL 18.6 (Ubuntu 18.6-1.pgdg26.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0, 64-bit |
PostgreSQL 18.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4), 64-bit |
| IvorySQL | PostgreSQL 18.4 (IvorySQL 5.4) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 9.5.0, 64-bit |
PostgreSQL 18.4 (IvorySQL 5.4) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 9.5.0, 64-bit |
| Babelfish | Babelfish 17.7 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0, 64-bit |
Babelfish 17.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4), 64-bit |
| PolarDB | PostgreSQL 17.10 (PolarDB 17.10.1.0 build accf02e2) on x86_64-linux-gnu |
PostgreSQL 17.10 (PolarDB 17.10.1.0 build accf02e2) on x86_64-linux-gnu |
| Percona | PostgreSQL 18.4 - Percona Server for PostgreSQL 18.4.1 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0, 64-bit |
PostgreSQL 18.4 - Percona Server for PostgreSQL 18.4.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.3.1 20250617 (Red Hat 14.3.1-2), 64-bit |
| OrioleDB | OrioleDB 18.4 (OrioleDB 1.8-beta16) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0, 64-bit |
OrioleDB 18.4 (OrioleDB 1.8-beta16) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4), 64-bit |
| OpenHalo | openHalo 14.18 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0, 64-bit |
openHalo 14.18 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4), 64-bit |
| DocumentDB | PostgreSQL 18.6 (Ubuntu 18.6-1.pgdg26.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0, 64-bit |
PostgreSQL 18.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4), 64-bit |
| AgensGraph | PostgreSQL 17.10 (AgensGraph 2.17.0) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0, 64-bit |
PostgreSQL 17.10 (AgensGraph 2.17.0) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4), 64-bit |
| pgEdge | PostgreSQL 18.4 (pgEdge 5.0.10) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 15.2.0-16ubuntu1) 15.2.0, 64-bit |
PostgreSQL 18.4 (pgEdge 5.0.10) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 14.3.1 20251022 (Red Hat 14.3.1-4), 64-bit |
| Cloudberry | PostgreSQL 14.4 (Apache Cloudberry 2.0.0-incubating build 1) on aarch64-unknown-linux-gnu, compiled by gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-11), 64-bit |
1 - PostgreSQL
PostgreSQL 是世界上最先进和最受欢迎的开源数据库。
默认安装 PostgreSQL 18,支持 PostgreSQL 14 ~ 18,并提供 575 个 PG 扩展。
快速开始
大多数 配置模板 默认使用 PostgreSQL 内核,例如:
meta: 默认,带有核心扩展(vector、postgis、timescale)的 postgresrich:安装了所有扩展的 postgresslim:仅 postgres,无监控基础设施ha/full:用于 HA 演示的 4 节点沙盒pgsql:最小的 postgres 内核配置示例
配置
原版 PostgreSQL 内核不需要特殊调整:
版本选择
要使用不同的 PostgreSQL 主版本,您可以使用 -v 参数进行配置:
如果 PostgreSQL 集群已经安装,您需要在安装新版本之前卸载它:
扩展生态
Pigsty 为 PostgreSQL 提供了丰富的扩展生态,详情请参考 扩展目录。
2 - Supabase
Supabase —— Build in a weekend, Scale to millions
Supabase 是一个开源的 Firebase 替代,对 PostgreSQL 进行了封装,并提供了认证,开箱即用的 API,边缘函数,实时订阅,对象存储,向量嵌入能力。 这是一个低代码的一站式后端平台,能让你几乎告别大部分后端开发的工作,只需要懂数据库设计与前端即可快速出活!
Supabase 的口号是:“花个周末写写,随便扩容至百万”。诚然,在小微规模(4c8g)内的 Supabase 极有性价比,堪称赛博菩萨。 —— 但当你真的增长到百万用户时 —— 确实应该认真考虑托管自建 Supabase 了 —— 无论是出于功能,性能,还是成本上的考虑。
Pigsty 为您提供完整的 Supabase 一键自建方案。自建的 Supabase 可以享受完整的 PostgreSQL 监控,IaC,PITR 与高可用, 而且相比 Supabase 云服务,提供了多达 575 个开箱即用的 PostgreSQL 扩展,并能够更充分地利用现代硬件的性能与成本优势。
完整自建教程,请参考:《Supabase自建手册》

快速上手
Pigsty 默认提供的 supabase.yml 配置模板定义了一套单节点 Supabase。
首先,使用 Pigsty 标准安装流程 安装 Supabase 所需的 Silo 与 PostgreSQL 实例:
请在部署 Supabase 前,根据您的实际情况,修改 pigsty.yml 配置文件中 关于 Supabase 的参数(主要是密码!)
然后使用当前仓库根目录的 docker.yml 与 app.yml 完成剩余工作,安装容器运行时并拉起 conf/supabase.yml 中定义的 Supabase 应用:
中国区域用户注意,请您配置合适的 Docker 镜像站点或代理服务器绕过 GFW 以拉取 DockerHub 镜像。 对于 专业订阅,我们提供在没有互联网访问的情况下,离线安装 Pigsty 与 Supabase 的能力。
Pigsty 默认通过管理节点/INFRA 节点上的 Nginx 对外暴露 Web 服务,您可以在本地添加 supa.pigsty 的 DNS 解析指向该节点,
然后通过浏览器访问 https://supa.pigsty 即可进入 Supabase Studio 管理界面。
默认用户名与密码:supabase / pigsty
配置细节
./configure -c supabase 会生成 ~/pigsty/pigsty.yml。在执行 ./deploy.yml 之前,请至少检查并修改其中的密码、密钥、域名等敏感配置。
更完整的配置说明请参阅:《Supabase自建手册》。
3 - Citus
Pigsty 原生支持 Citus。这是一个基于原生 PostgreSQL 内核的分布式水平扩展插件。

安装
Citus 是一个 PostgreSQL 扩展插件,可以按照标准插件安装的流程,在原生 PostgreSQL 集群上加装启用。
配置
要定义一个 citus 集群,您需要指定以下参数:
pg_mode必须设置为citus,而不是默认的pgsql- 在每个分片集群上都必须定义分片名
pg_shard和分片号pg_group - 必须定义
pg_primary_db来指定由 Patroni 管理的 Citus 数据库。 - 如果您想使用
pg_dbsu的postgres而不是默认的pg_admin_username来执行管理命令,那么pg_dbsu_password必须设置为非空的纯文本密码
此外,还需要额外的 hba 规则,允许从本地和其他数据节点进行 SSL 访问。
您可以将每个 Citus 集群分别定义为独立的分组,像标准的 PostgreSQL 集群一样;当前完整模板见 conf/ha/citus.yml:
您也可以在一个分组内指定所有 Citus 集群成员的身份参数,如 conf/ha/citus.yml 所示:
使用
您可以像访问普通集群一样,访问任意节点:
默认情况下,您对某一个 Shard 进行的变更,都只发生在这套集群上,而不会同步到其他 Shard。
如果你希望将写入分布到所有 Shard,可以使用 Citus 提供的 API 函数,将表标记为:
- 水平分片表(自动分区,需要指定分区键)
- 引用表(全量复制:不需要指定分区键):
从 Citus 11.2 开始,任何 Citus 数据库节点都可以扮演协调者的角色,即,任意一个主节点都可以写入:
将表分布出去后,你可以在其他节点上也访问到:
例如,全表扫描可以发现执行计划已经变为分布式计划
你可以从几个不同的主节点发起写入:
当某个节点出现故障时,Patroni 提供的原生高可用支持会将备用节点提升并自动顶上。
4 - Babelfish
Babelfish 是一个提供 MS SQL Server 线缆协议兼容性的内核分支 + 扩展,由 AWS 开源。
概览
Pigsty 允许您使用 mssql 模式部署 Babelfish 内核,在 PostgreSQL 上提供:
- SQL Server 线缆协议兼容(TDS 协议,
1433端口) - T-SQL 语法兼容
- 与 Pigsty 现有能力(高可用、备份、监控、IaC)统一集成
在 Pigsty v4 中,Babelfish 支持 PostgreSQL 17/18,默认模板使用 pg_version: 17,并已经纳入 Pigsty 标准交付链路。支持所有 Linux 平台。
快速开始
使用 Pigsty 内置模板:
部署完成后可直接使用 SQL Server 客户端连接:
关键配置
mssql 模板中的核心参数如下:
连接与端口
Babelfish 集群会同时提供两类访问:
- PostgreSQL 协议:
5432 - SQL Server 协议(TDS):
1433
通过 Pigsty 服务抽象,还可使用:
5433固定路由到主库14335434路由到可读节点1433
注意事项
- Babelfish 认证规则需使用
md5,而不是默认scram-sha-256。 - 默认迁移模式为
multi-db,如需single-db可修改babelfishpg_tsql.migration_mode。 - 并非所有原生 PostgreSQL 扩展都可直接在 Babelfish 内核使用;请以包可用性与兼容性测试为准。
- 生产环境请收紧 HBA 与网络暴露策略,不要沿用演示级开放配置。
相关文档
可用扩展
Babelfish 内核共有 55 个可用扩展,去除 PG Contrib 自带扩展之后,还有以下额外扩展:
| 扩展名 | 版本号 | 说明 |
|---|---|---|
| babelfishpg_common | 5.4.0 |
Transact SQL Datatype Support |
| babelfishpg_money | 1.1.0 |
babelfishpg_money |
| babelfishpg_tds | 1.0.0 |
TDS protocol extension |
| babelfishpg_tsql | 5.4.0 |
Transact SQL compatibility |
5 - IvorySQL
IvorySQL 是一个开源的,旨在基于 PG 提供 “Oracle 兼容性” 的 PostgreSQL 内核分支。
概览
Pigsty PGSQL 仓库直接提供 IvorySQL 5.4 软件包,兼容 PostgreSQL 18.4,并覆盖当前支持的 EL、Debian、Ubuntu 与双架构平台。
在线安装使用 Pigsty 的 pgsql 仓库;商业版同时提供对应平台的离线交付方案。

当前 Pigsty 的 ivorysql 包别名指向 IvorySQL 5,兼容 PostgreSQL 18。不同发行版的真实包名由 roles/node_id/vars/ 中的平台变量映射,例如 EL 使用 ivorysql5,Debian/Ubuntu 使用 ivorysql-5。
最后一个支持 EL7 的 IvorySQL 版本为 3.3,对应 PostgreSQL 16.3;最后一个基于 PostgreSQL 17 的版本为 IvorySQL 4.4
安装
使用 Pigsty 内置的 ivory 配置模板安装:
配置
以下参数需要针对 IvorySQL 数据库集群进行配置:
使用 Oracle 兼容性模式时,需要动态加载
liboracle_parser扩展插件。
客户端访问
IvorySQL 5 等效于 PostgreSQL 18,任何兼容 PostgreSQL 线缆协议的客户端工具都可以访问 IvorySQL 集群。
可用扩展
IvorySQL 内核共有 95 个可用扩展,去除 PG Contrib 自带扩展之后,还有以下额外扩展:
| 扩展名 | 版本号 | 说明 |
|---|---|---|
| address_standardizer | 3.5.4 |
Used to parse an address into constituent elements. Generally used to support geocoding address normalization step. |
| address_standardizer_data_us | 3.5.4 |
Address Standardizer US dataset example |
| age | 1.7.0 |
AGE database extension |
| ddlx | 0.31 |
DDL eXtractor functions |
| gb18030_2022 | 1.0 |
support gb18030 2022 with extension |
| http | 1.7 |
HTTP client for PostgreSQL, allows web page retrieval inside the database. |
| ivorysql_ora | 1.0 |
Oracle Compatible extenison on Postgres Database |
| ora_btree_gin | 1.0 |
support for indexing oracle datatypes in GIN |
| ora_btree_gist | 1.0 |
support for oracle indexing common datatypes in GiST |
| pg_bigm | 1.2 |
text similarity measurement and index searching based on bigrams |
| pg_cron | 1.6 |
Job scheduler for PostgreSQL |
| pg_curl | 2.4 |
PostgreSQL cURL allows most curl actions, including data transfer with URL syntax via HTTP, HTTPS, FTP, FTPS, GOPHER, TFTP, SCP, SFTP, SMB, TELNET, DICT, LDAP, LDAPS, FILE, IMAP, SMTP, POP3, RTSP and RTMP |
| pg_get_functiondef | 1.0 |
Get function’s definition |
| pg_hint_plan | 1.8.0 |
optimizer hints for PostgreSQL |
| pg_jieba | 1.1.1 |
a parser for full-text search of Chinese |
| pg_partman | 5.3.1 |
Extension to manage partitioned tables by time or ID |
| pg_show_plans | 2.1 |
show query plans of all currently running SQL statements |
| pg_stat_monitor | 2.3 |
The pg_stat_monitor is a PostgreSQL Query Performance Monitoring tool, based on PostgreSQL contrib module pg_stat_statements. pg_stat_monitor provides aggregated statistics, client information, plan details including plan, and histogram information. |
| pg_textsearch | 0.1.0 |
Full-text search with BM25 ranking |
| pgagent | 4.2 |
A PostgreSQL job scheduler |
| pgaudit | 18.0 |
provides auditing functionality |
| pgroonga | 4.0.4 |
Super fast and all languages supported full text search index based on Groonga |
| pgroonga_database | 4.0.4 |
PGroonga database management module |
| pgrouting | 3.8.0 |
pgRouting Extension |
| plisql | 1.0 |
PL/iSQL procedural language |
| plpgsql_check | 2.8 |
extended check for plpgsql functions |
| postgis | 3.5.4 |
PostGIS geometry and geography spatial types and functions |
| postgis_raster | 3.5.4 |
PostGIS raster types and functions |
| postgis_sfcgal | 3.5.4 |
PostGIS SFCGAL functions |
| postgis_tiger_geocoder | 3.5.4 |
PostGIS tiger geocoder and reverse geocoder |
| postgis_topology | 3.5.4 |
PostGIS topology spatial types and functions |
| redis_fdw | 1.0 |
Foreign data wrapper for querying a Redis server |
| system_stats | 3.0 |
EnterpriseDB system statistics for PostgreSQL |
| vector | 0.8.1 |
vector data type and ivfflat and hnsw access methods |
| zhparser | 2.3 |
a parser for full-text search of Chinese |
请注意,Pigsty 不对使用 IvorySQL 内核承担任何质保责任,使用此内核遇到的任何问题与需求请联系原厂解决。
6 - PolarDB PG
概览
Pigsty 允许使用 PolarDB 创建带有 “国产化信创资质” 的 PostgreSQL 集群!
PolarDB for PostgreSQL 当前以 PostgreSQL 17 为基线,Pigsty 中的 polar 模板、默认路径与扩展说明也已经同步到 PG17。任何兼容 PostgreSQL 线缆协议的客户端工具都可以访问 PolarDB 集群。
Pigsty 的 PGSQL 仓库中提供了 PolarDB PG 开源版安装包,但不会在 Pigsty 安装时下载到本地软件仓库。

安装
使用 Pigsty 内置模板:
变更摘要
从 Pigsty v4.4 开始,PolarDB PG 内核将直接使用 pigsty 构建打包的版本,主要变化如下:
| 项目 | 旧文档 / 旧默认值 | 当前值 |
|---|---|---|
| 内核基线 | PostgreSQL 15 | PostgreSQL 17 |
| 默认 PolarDB 路径 | /u01/polardb_pg |
/usr/polar-17 |
| 支持架构 | x86_64 |
x86_64, aarch64 |
| 可用扩展数 | 旧文档正文写为 61 | pg_available_extensions 查询结果为 93,过滤 contrib 后为 34 |
| 复制用户要求 | replicator 需要 SUPERUSER |
保持不变 |
配置
以下参数需要针对 PolarDB 数据库集群进行特殊配置:
默认 polar 内核安装目录已调整为 /usr/polar-17。这里特别注意,PolarDB PG 要求 replicator 复制用户为 SUPERUSER,与原生 PG 不同。
扩展列表
PolarDB PG 内核共有 93 个可用扩展,去除 PG Contrib 自带扩展之后,还有以下额外扩展:
| 扩展名 | 版本号 | 说明 |
|---|---|---|
| hll | 2.18 |
type for storing hyperloglog data |
| ip4r | 2.4 |
|
| log_fdw | 1.4 |
foreign-data wrapper for Postgres log file access |
| pase | 0.0.1 |
ant ai similarity search |
| pg_bigm | 1.2 |
text similarity measurement and index searching based on bigrams |
| pg_cron | 1.5 |
Job scheduler for PostgreSQL |
| pg_cron_preload | 1.0 |
polardb pg extend catalog |
| pg_hint_plan | 1.7.0 |
optimizer hints for PostgreSQL |
| pg_jieba | 1.1.0 |
a parser for full-text search of Chinese |
| pg_partman | 5.2.4 |
Extension to manage partitioned tables by time or ID |
| pg_profile | 4.10 |
PostgreSQL load profile repository and report builder |
| pg_repack | 1.5.1-1 |
Reorganize tables in PostgreSQL databases with minimal locks |
| pg_similarity | 1.0 |
support similarity queries |
| pg_squeeze | 1.9 |
A tool to remove unused space from a relation. |
| pg_stat_kcache | 2.3.0 |
Kernel statistics gathering |
| pgaudit | 17.1 |
provides auditing functionality |
| pgtap | 1.3.3 |
Unit testing for PostgreSQL |
| pldbgapi | 1.1 |
server-side support for debugging PL/pgSQL functions |
| polar_advisor | 1.1 |
polar_advisor |
| polar_feature_utils | 1.0 |
PolarDB feature utilization |
| polar_io_stat | 1.0 |
polar io stat in multi dimension |
| polar_monitor | 1.3 |
monitor functions for PolarDB |
| polar_monitor_preload | 1.0 |
examine the polardb information |
| polar_parameter_manager | 1.2 |
Extension to select parameters for manger. |
| polar_proxy_utils | 1.0 |
Extension to provide operations about proxy. |
| polar_resource_manager | 1.0 |
a background process that forcibly frees user session process memory |
| polar_smgrperf | 1.0 |
smgr perf test extension |
| polar_tde_utils | 1.0 |
Internal extension for TDE |
| polar_vfs | 1.0 |
polar virtual file system for different storage |
| polar_worker | 1.1 |
polar_worker |
| prefix | 1.2.0 |
Prefix Range module for PostgreSQL |
| roaringbitmap | 0.5 |
support for Roaring Bitmaps |
| sequential_uuids | 1.0.3 |
generator of sequential UUIDs |
| varbitx | 1.1 |
varbit functions pack |
7 - PolarDB Oracle
Pigsty 允许使用 PolarDB 创建带有 “国产化信创资质” 的 PolarDB for Oracle 集群!
根据 【安全可靠测评结果公告(2023年第1号)】,附表三、集中式数据库。PolarDB v2.0 属于自主可控,安全可靠的国产信创数据库。
PolarDB for Oracle 是基于 PolarDB for PostgreSQL 进行二次开发的 Oracle 兼容版本,两者共用同一套内核,通过 --compatibility-mode 参数进行区分。
我们与阿里云内核团队合作,提供基于 PolarDB v2.0 内核与 Pigsty 的完整数据库解决方案,请联系销售咨询,或在阿里云市场自行采购。
PolarDB for Oracle 内核目前仅在 EL7 (CentOS 7) 系统中可用。

扩展
目前 PolarDB 2.0 (Oracle 兼容) 内核自带了以下 188 个扩展插件:
| name | default_version | comment |
|---|---|---|
| cube | 1.5 | data type for multidimensional cubes |
| ip4r | 2.4 | NULL |
| adminpack | 2.1 | administrative functions for PostgreSQL |
| dict_xsyn | 1.0 | text search dictionary template for extended synonym processing |
| amcheck | 1.4 | functions for verifying relation integrity |
| autoinc | 1.0 | functions for autoincrementing fields |
| hstore | 1.8 | data type for storing sets of (key, value) pairs |
| bloom | 1.0 | bloom access method - signature file based index |
| earthdistance | 1.1 | calculate great-circle distances on the surface of the Earth |
| hstore_plperl | 1.0 | transform between hstore and plperl |
| bool_plperl | 1.0 | transform between bool and plperl |
| file_fdw | 1.0 | foreign-data wrapper for flat file access |
| bool_plperlu | 1.0 | transform between bool and plperlu |
| fuzzystrmatch | 1.1 | determine similarities and distance between strings |
| hstore_plperlu | 1.0 | transform between hstore and plperlu |
| btree_gin | 1.3 | support for indexing common datatypes in GIN |
| hstore_plpython2u | 1.0 | transform between hstore and plpython2u |
| btree_gist | 1.6 | support for indexing common datatypes in GiST |
| hll | 2.17 | type for storing hyperloglog data |
| hstore_plpython3u | 1.0 | transform between hstore and plpython3u |
| citext | 1.6 | data type for case-insensitive character strings |
| hstore_plpythonu | 1.0 | transform between hstore and plpythonu |
| hypopg | 1.3.1 | Hypothetical indexes for PostgreSQL |
| insert_username | 1.0 | functions for tracking who changed a table |
| dblink | 1.2 | connect to other PostgreSQL databases from within a database |
| decoderbufs | 0.1.0 | Logical decoding plugin that delivers WAL stream changes using a Protocol Buffer format |
| intagg | 1.1 | integer aggregator and enumerator (obsolete) |
| dict_int | 1.0 | text search dictionary template for integers |
| intarray | 1.5 | functions, operators, and index support for 1-D arrays of integers |
| isn | 1.2 | data types for international product numbering standards |
| jsonb_plperl | 1.0 | transform between jsonb and plperl |
| jsonb_plperlu | 1.0 | transform between jsonb and plperlu |
| jsonb_plpython2u | 1.0 | transform between jsonb and plpython2u |
| jsonb_plpython3u | 1.0 | transform between jsonb and plpython3u |
| jsonb_plpythonu | 1.0 | transform between jsonb and plpythonu |
| lo | 1.1 | Large Object maintenance |
| log_fdw | 1.0 | foreign-data wrapper for csvlog |
| ltree | 1.2 | data type for hierarchical tree-like structures |
| ltree_plpython2u | 1.0 | transform between ltree and plpython2u |
| ltree_plpython3u | 1.0 | transform between ltree and plpython3u |
| ltree_plpythonu | 1.0 | transform between ltree and plpythonu |
| moddatetime | 1.0 | functions for tracking last modification time |
| old_snapshot | 1.0 | utilities in support of old_snapshot_threshold |
| oracle_fdw | 1.2 | foreign data wrapper for Oracle access |
| oss_fdw | 1.1 | foreign-data wrapper for OSS access |
| pageinspect | 2.1 | inspect the contents of database pages at a low level |
| pase | 0.0.1 | ant ai similarity search |
| pg_bigm | 1.2 | text similarity measurement and index searching based on bigrams |
| pg_freespacemap | 1.2 | examine the free space map (FSM) |
| pg_hint_plan | 1.4 | controls execution plan with hinting phrases in comment of special form |
| pg_buffercache | 1.5 | examine the shared buffer cache |
| pg_prewarm | 1.2 | prewarm relation data |
| pg_repack | 1.4.8-1 | Reorganize tables in PostgreSQL databases with minimal locks |
| pg_sphere | 1.0 | spherical objects with useful functions, operators and index support |
| pg_cron | 1.5 | Job scheduler for PostgreSQL |
| pg_jieba | 1.1.0 | a parser for full-text search of Chinese |
| pg_stat_kcache | 2.2.1 | Kernel statistics gathering |
| pg_stat_statements | 1.9 | track planning and execution statistics of all SQL statements executed |
| pg_surgery | 1.0 | extension to perform surgery on a damaged relation |
| pg_trgm | 1.6 | text similarity measurement and index searching based on trigrams |
| pg_visibility | 1.2 | examine the visibility map (VM) and page-level visibility info |
| pg_wait_sampling | 1.1 | sampling based statistics of wait events |
| pgaudit | 1.6.2 | provides auditing functionality |
| pgcrypto | 1.3 | cryptographic functions |
| pgrowlocks | 1.2 | show row-level locking information |
| pgstattuple | 1.5 | show tuple-level statistics |
| pgtap | 1.2.0 | Unit testing for PostgreSQL |
| pldbgapi | 1.1 | server-side support for debugging PL/pgSQL functions |
| plperl | 1.0 | PL/Perl procedural language |
| plperlu | 1.0 | PL/PerlU untrusted procedural language |
| plpgsql | 1.0 | PL/pgSQL procedural language |
| plpython2u | 1.0 | PL/Python2U untrusted procedural language |
| plpythonu | 1.0 | PL/PythonU untrusted procedural language |
| plsql | 1.0 | Oracle compatible PL/SQL procedural language |
| pltcl | 1.0 | PL/Tcl procedural language |
| pltclu | 1.0 | PL/TclU untrusted procedural language |
| polar_bfile | 1.0 | The BFILE data type enables access to binary file LOBs that are stored in file systems outside Database |
| polar_bpe | 1.0 | polar_bpe |
| polar_builtin_cast | 1.1 | Internal extension for builtin casts |
| polar_builtin_funcs | 2.0 | implement polar builtin functions |
| polar_builtin_type | 1.5 | polar_builtin_type for PolarDB |
| polar_builtin_view | 1.5 | polar_builtin_view |
| polar_catalog | 1.2 | polardb pg extend catalog |
| polar_channel | 1.0 | polar_channel |
| polar_constraint | 1.0 | polar_constraint |
| polar_csn | 1.0 | polar_csn |
| polar_dba_views | 1.0 | polar_dba_views |
| polar_dbms_alert | 1.2 | implement polar_dbms_alert - supports asynchronous notification of database events. |
| polar_dbms_application_info | 1.0 | implement polar_dbms_application_info - record names of executing modules or transactions in the database. |
| polar_dbms_pipe | 1.1 | implements polar_dbms_pipe - package lets two or more sessions in the same instance communicate. |
| polar_dbms_aq | 1.2 | implement dbms_aq - provides an interface to Advanced Queuing. |
| polar_dbms_lob | 1.3 | implement dbms_lob - provides subprograms to operate on BLOBs, CLOBs, and NCLOBs. |
| polar_dbms_output | 1.2 | implement polar_dbms_output - enables you to send messages from stored procedures. |
| polar_dbms_lock | 1.0 | implement polar_dbms_lock - provides an interface to Oracle Lock Management services. |
| polar_dbms_aqadm | 1.3 | polar_dbms_aqadm - procedures to manage Advanced Queuing configuration and administration information. |
| polar_dbms_assert | 1.0 | implement polar_dbms_assert - provide an interface to validate properties of the input value. |
| polar_dbms_metadata | 1.0 | implement polar_dbms_metadata - provides a way for you to retrieve metadata from the database dictionary. |
| polar_dbms_random | 1.0 | implement polar_dbms_random - a built-in random number generator, not intended for cryptography |
| polar_dbms_crypto | 1.1 | implement dbms_crypto - provides an interface to encrypt and decrypt stored data. |
| polar_dbms_redact | 1.0 | implement polar_dbms_redact - provides an interface to mask data from queries by an application. |
| polar_dbms_debug | 1.1 | server-side support for debugging PL/SQL functions |
| polar_dbms_job | 1.0 | polar_dbms_job |
| polar_dbms_mview | 1.1 | implement polar_dbms_mview - enables to refresh materialized views. |
| polar_dbms_job_preload | 1.0 | polar_dbms_job_preload |
| polar_dbms_obfuscation_toolkit | 1.1 | implement polar_dbms_obfuscation_toolkit - enables an application to get data md5. |
| polar_dbms_rls | 1.1 | implement polar_dbms_rls - a fine-grained access control administrative built-in package |
| polar_multi_toast_utils | 1.0 | polar_multi_toast_utils |
| polar_dbms_session | 1.2 | implement polar_dbms_session - support to set preferences and security levels. |
| polar_odciconst | 1.0 | implement ODCIConst - Provide some built-in constants in Oracle. |
| polar_dbms_sql | 1.2 | implement polar_dbms_sql - provides an interface to execute dynamic SQL. |
| polar_osfs_toolkit | 1.0 | osfs library tools and functions extension |
| polar_dbms_stats | 14.0 | stabilize plans by fixing statistics |
| polar_monitor | 1.5 | monitor functions for PolarDB |
| polar_osfs_utils | 1.0 | osfs library utils extension |
| polar_dbms_utility | 1.3 | implement polar_dbms_utility - provides various utility subprograms. |
| polar_parameter_check | 1.0 | kernel extension for parameter validation |
| polar_dbms_xmldom | 1.0 | implement dbms_xmldom and dbms_xmlparser - support standard DOM interface and xml parser object |
| polar_parameter_manager | 1.1 | Extension to select parameters for manger. |
| polar_faults | 1.0.0 | simulate some database faults for end user or testing system. |
| polar_monitor_preload | 1.1 | examine the polardb information |
| polar_proxy_utils | 1.0 | Extension to provide operations about proxy. |
| polar_feature_utils | 1.2 | PolarDB feature utilization |
| polar_global_awr | 1.0 | PolarDB Global AWR Report |
| polar_publication | 1.0 | support polardb pg logical replication |
| polar_global_cache | 1.0 | polar_global_cache |
| polar_px | 1.0 | Parallel Execution extension |
| polar_serverless | 1.0 | polar serverless extension |
| polar_resource_manager | 1.0 | a background process that forcibly frees user session process memory |
| polar_sys_context | 1.1 | implement polar_sys_context - returns the value of parameter associated with the context namespace at the current instant. |
| polar_gpc | 1.3 | polar_gpc |
| polar_tde_utils | 1.0 | Internal extension for TDE |
| polar_gtt | 1.1 | polar_gtt |
| polar_utl_encode | 1.2 | implement polar_utl_encode - provides functions that encode RAW data into a standard encoded format |
| polar_htap | 1.1 | extension for PolarDB HTAP |
| polar_htap_db | 1.0 | extension for PolarDB HTAP database level operation |
| polar_io_stat | 1.0 | polar io stat in multi dimension |
| polar_utl_file | 1.0 | implement utl_file - support PL/SQL programs can read and write operating system text files |
| polar_ivm | 1.0 | polar_ivm |
| polar_sql_mapping | 1.2 | Record error sqls and mapping them to correct one |
| polar_stat_sql | 1.0 | Kernel statistics gathering, and sql plan nodes information gathering |
| tds_fdw | 2.0.2 | Foreign data wrapper for querying a TDS database (Sybase or Microsoft SQL Server) |
| xml2 | 1.1 | XPath querying and XSLT |
| polar_upgrade_catalogs | 1.1 | Upgrade catalogs for old version instance |
| polar_utl_i18n | 1.1 | polar_utl_i18n |
| polar_utl_raw | 1.0 | implement utl_raw - provides SQL functions for manipulating RAW datatypes. |
| timescaledb | 2.9.2 | Enables scalable inserts and complex queries for time-series data |
| polar_vfs | 1.0 | polar virtual file system for different storage |
| polar_worker | 1.0 | polar_worker |
| postgres_fdw | 1.1 | foreign-data wrapper for remote PostgreSQL servers |
| refint | 1.0 | functions for implementing referential integrity (obsolete) |
| roaringbitmap | 0.5 | support for Roaring Bitmaps |
| tsm_system_time | 1.0 | TABLESAMPLE method which accepts time in milliseconds as a limit |
| vector | 0.5.0 | vector data type and ivfflat and hnsw access methods |
| rum | 1.3 | RUM index access method |
| unaccent | 1.1 | text search dictionary that removes accents |
| seg | 1.4 | data type for representing line segments or floating-point intervals |
| sequential_uuids | 1.0.2 | generator of sequential UUIDs |
| uuid-ossp | 1.1 | generate universally unique identifiers (UUIDs) |
| smlar | 1.0 | compute similary of any one-dimensional arrays |
| varbitx | 1.1 | varbit functions pack |
| sslinfo | 1.2 | information about SSL certificates |
| tablefunc | 1.0 | functions that manipulate whole tables, including crosstab |
| tcn | 1.0 | Triggered change notifications |
| zhparser | 1.0 | a parser for full-text search of Chinese |
| address_standardizer | 3.3.2 | Ganos PostGIS address standardizer |
| address_standardizer_data_us | 3.3.2 | Ganos PostGIS address standardizer data us |
| ganos_fdw | 6.0 | Ganos Spatial FDW extension for POLARDB |
| ganos_geometry | 6.0 | Ganos geometry lite extension for POLARDB |
| ganos_geometry_pyramid | 6.0 | Ganos Geometry Pyramid extension for POLARDB |
| ganos_geometry_sfcgal | 6.0 | Ganos geometry lite sfcgal extension for POLARDB |
| ganos_geomgrid | 6.0 | Ganos geometry grid extension for POLARDB |
| ganos_importer | 6.0 | Ganos Spatial importer extension for POLARDB |
| ganos_networking | 6.0 | Ganos networking |
| ganos_pointcloud | 6.0 | Ganos pointcloud extension For POLARDB |
| ganos_pointcloud_geometry | 6.0 | Ganos_pointcloud LIDAR data and ganos_geometry data for POLARDB |
| ganos_raster | 6.0 | Ganos raster extension for POLARDB |
| ganos_scene | 6.0 | Ganos scene extension for POLARDB |
| ganos_sfmesh | 6.0 | Ganos surface mesh extension for POLARDB |
| ganos_spatialref | 6.0 | Ganos spatial reference extension for POLARDB |
| ganos_trajectory | 6.0 | Ganos trajectory extension for POLARDB |
| ganos_vomesh | 6.0 | Ganos volumn mesh extension for POLARDB |
| postgis_tiger_geocoder | 3.3.2 | Ganos PostGIS tiger geocoder |
| postgis_topology | 3.3.2 | Ganos PostGIS topology |
8 - Percona
Percona Postgres 是一个带有 pg_tde(透明数据加密)扩展的补丁 Postgres 内核。
Pigsty 从 v4.4.0 起将 Percona PostgreSQL 打包到私有前缀 /usr/pgtde-$v,v4.5.0 延续这一布局
(PostgreSQL 18 对应 /usr/pgtde-18)。pgtde 包别名会同时安装内核包
与 contrib 包,其中包含 pg_tde、PostGIS、pgvector、wal2json、pg_repack、
pgaudit、pg_stat_monitor 等常用组件。
快速开始
使用 Pigsty 标准安装流程,配合 pgtde 配置模板。
配置
需要调整以下参数来部署 Percona 集群:
pgtde 软件包由 Pigsty 的 pgsql 仓库模块提供,此模板不再依赖旧的
percona 仓库模块。
可用扩展
Percona Postgres 内核共有 73 个可用扩展,去除 PG Contrib 自带扩展之后,还有以下额外扩展:
| 扩展名 | 版本号 | 说明 |
|---|---|---|
| address_standardizer | 3.5.7 |
Used to parse an address into constituent elements. Generally used to support geocoding address normalization step. |
| address_standardizer_data_us | 3.5.7 |
Address Standardizer US dataset example |
| pg_repack | 1.5.3 |
Reorganize tables in PostgreSQL databases with minimal locks |
| pg_stat_monitor | 2.3.2 |
The pg_stat_monitor is a PostgreSQL Query Performance Monitoring tool, based on PostgreSQL contrib module pg_stat_statements. pg_stat_monitor provides aggregated statistics, client information, plan details including plan, and histogram information. |
| pg_tde | 2.2.1 |
pg_tde access method |
| pgaudit | 18.0 |
provides auditing functionality |
| postgis | 3.5.7 |
PostGIS geometry and geography spatial types and functions |
| postgis_raster | 3.5.7 |
PostGIS raster types and functions |
| postgis_sfcgal | 3.5.7 |
PostGIS SFCGAL functions |
| postgis_tiger_geocoder | 3.5.7 |
PostGIS tiger geocoder and reverse geocoder |
| postgis_topology | 3.5.7 |
PostGIS topology spatial types and functions |
| set_user | 4.2.0 |
similar to SET ROLE but with added logging |
| vector | 0.8.3 |
vector data type and ivfflat and hnsw access methods |
关键特性
- 透明数据加密:使用 pg_tde 扩展提供静态数据加密
- PostgreSQL 18 兼容:基于 Percona PostgreSQL 18 包集
- 企业级扩展:包含 pgaudit、pg_stat_monitor 等企业级功能
- 完整生态:支持 pgvector、PostGIS 等流行扩展
注意:目前处于稳定阶段 - 在生产使用前请彻底评估。
9 - PostgresML
PostgresML 是一个 PostgreSQL 扩展,支持最新的大语言模型(LLM)、向量操作、经典机器学习以及传统的 Postgres 应用负载。
PostgresML (pgml) 是一个用 Rust 编写的 PostgreSQL 扩展。您可以运行独立的 Docker 镜像,但本文档不是 docker-compose 模板介绍,仅供参考。
PostgresML 官方支持 Ubuntu 22.04,但我们也为 EL 8/9 维护了 RPM 版本,如果您不需要 CUDA 和 NVIDIA 相关功能的话。
您需要在数据库节点上能够访问互联网,以便从 PyPI 下载 Python 依赖,并从 HuggingFace 下载模型。
pgml 上游项目已经不再维护
配置
PostgresML 是一个用 Rust 编写的扩展。Pigsty 在 EL8/EL9 以及 Debian/Ubuntu 平台维护了 PG14-17 的预编译包。
创建新集群
PostgresML 2.10.0 可用于 PostgreSQL 14-17。下面示例使用 PG17;如果使用 PG14-16,只需把 pg_version 改为对应主版本。
Pigsty 会把 pgml 包别名解析为平台真实包名:EL 为 pgml_$v,Debian/Ubuntu 为 postgresql-$v-pgml。同时需要将 pgml 添加到 pg_libs 中。
在现有集群上启用
要在现有集群上启用 pgml,可以使用 Ansible 的 package 模块安装:
Python 依赖
您还需要在集群节点上安装 PostgresML 的 Python 依赖。官方教程:安装指南
安装 Python 和 PIP
确保已安装 python3、pip 和 venv:
对于 EL 8 / EL9 及兼容发行版,可以使用 python3.11:
对于中国大陆用户,建议使用清华大学 PyPI 镜像。
安装依赖包
创建 Python 虚拟环境,并使用 pip 从 requirements.txt 和 requirements-xformers.txt 安装依赖。
如果您使用的是 EL 8/9,需要将以下命令中的
python3替换为python3.11。
启用 PostgresML
在所有集群节点上安装 pgml 扩展和 Python 依赖后,就可以在 PostgreSQL 集群上启用 pgml 了。
使用 patronictl 命令 配置集群,将 pgml 添加到 shared_preload_libraries,并在 pgml.venv 中指定您的虚拟环境目录:
然后重启数据库集群,并使用 SQL 命令创建扩展:
如果一切正常,您应该会看到类似以下输出:
大功告成!更多详情请参阅 PostgresML 官方文档:https://postgresml.org/docs/guides/use-cases/
10 - openHalo
OpenHalo 是一个开源的 PostgreSQL 内核,提供 MySQL 线协议兼容性。
openHalo 基于 PostgreSQL 14.18 内核版本,提供与 MySQL 5.7.32-log / 8.0 版本的线协议兼容性。Pigsty 通过 pg_mode: mysql 与 openhalo 包别名交付。
Pigsty 在所有支持的 Linux 平台上为 OpenHalo 提供部署支持。
- RPM 构建 SPEC: github.com/pgsty/rpm/rpmbuild/specs/openhalodb.spec
- DEB 构建 SPEC: github.com/pgsty/deb/debbuild/openhalodb
快速开始
使用 Pigsty 的 标准安装流程 和 mysql 配置模板。
对于生产部署,请确保在运行安装剧本之前修改 pigsty.yml 配置文件中的密码参数。
配置
OpenHalo 提供了一个独有的扩展 aux_mysql,它包含了 MySQL 兼容性所需的函数和类型。请确保在 pg_databases 配置中为 postgres 数据库启用此扩展,以获得完整的 MySQL 兼容功能。
使用
访问 MySQL 时,实际连接使用的是 postgres 数据库。请注意,MySQL 中的"数据库"概念实际上对应于 PostgreSQL 中的"Schema"。
因此,use mysql 实际上使用的是 postgres 数据库内的 mysql Schema。
用于 MySQL 的用户名和密码与 PostgreSQL 中的相同。您可以使用标准的 PostgreSQL 方法管理用户和权限。
客户端访问
OpenHalo 提供 MySQL 线协议兼容性,默认监听端口 3306,允许 MySQL 客户端和驱动程序直接连接。
Pigsty 的 conf/mysql 配置默认安装 mysql 客户端工具。
您可以使用以下命令访问 MySQL:
目前,OpenHalo 官方确保 Navicat 可以正常访问此 MySQL 端口,但 Intellij IDEA 的 DataGrip 访问会导致错误。
配置
Pigsty 默认配置了 database_compat_mode 值为 mysql,启用 MySQL 兼容性模式。您可以进一步调整以下参数来调整 MySQL 兼容性设置:
修改说明
Pigsty 安装的 OpenHalo 内核基于 HaloTech-Co-Ltd/openHalo 内核进行了少量修改:
- 将默认数据库名称从
halo0root改回postgres - 从默认版本号中删除
1.0.前缀,恢复为14.18(否则 Patroni 会报错) - 修改默认配置文件以启用 MySQL 兼容性并默认监听端口
3306
请注意,Pigsty 不为使用 OpenHalo 内核提供任何保证。使用此内核时遇到的任何问题或需求应与原始供应商联系。
警告:目前该内核处于 beta1 阶段 - 在生产使用前请自行评估风险。
可用扩展
OpenHalo 内核共有 59 个可用扩展,去除 PG Contrib 自带扩展之后,还有以下额外扩展:
| 扩展名 | 版本号 | 说明 |
|---|---|---|
| aux_mysql | 1.5 |
MySQL Supplementary Extension |
| hstore_plpython2u | 1.0 |
transform between hstore and plpython2u |
| hstore_plpythonu | 1.0 |
transform between hstore and plpythonu |
| jsonb_plpython2u | 1.0 |
transform between jsonb and plpython2u |
| jsonb_plpythonu | 1.0 |
transform between jsonb and plpythonu |
| ltree_plpython2u | 1.0 |
transform between ltree and plpython2u |
| ltree_plpythonu | 1.0 |
transform between ltree and plpythonu |
11 - Greenplum
Pigsty 支持部署 Greenplum 集群,及其衍生发行版 YMatrixDB,并提供了将现有 Greenplum 部署纳入 Pigsty 监控的能力。
概览
Greenplum / YMatrix 集群部署能力仅在专业版本/企业版本中提供,目前不对外开源。
安装
Pigsty 提供了 Greenplum 6 (@el7) 与 Greenplum 7 (@el8) 的安装包,开源版本用户可以自行安装配置。
配置
要定义 Greenplum 集群,需要用到 pg_mode = gpsql,并使用额外的身份参数 pg_shard 与 gp_role。
此外,PG Exporter 需要额外的连接参数,才能连接到 Greenplum Segment 实例上采集监控指标。
12 - OrioleDB
OrioleDB 是一个 PostgreSQL 存储引擎扩展,声称能够提供 4 倍 OLTP 性能,没有 xid 环绕和表膨胀问题,并具有"云原生"(数据存储在 S3)能力。
OrioleDB 当前在 Pigsty 中支持 PostgreSQL 16、17、18 三个兼容系,当前基线版本为 OrioleDB 1.8 beta16。
您可以使用 Pigsty 将 OrioleDB 作为 RDS 运行。pg_mode 仍使用 oriole 选择 /usr/oriole-$v 安装路径,
orioledb 包别名会按 pg_version 解析为版本化内核包,例如 orioledb-16、orioledb-17、orioledb-18。
快速开始
按照 Pigsty 标准安装 流程,使用 oriole 配置模板。
对于生产部署,请确保在运行 install 剧本之前修改 pigsty.yml 配置中的密码参数。
配置
使用
要使用 OrioleDB,请安装 orioledb 包别名;Pigsty 会按平台与 pg_version 解析为对应的 PG16、PG17 或 PG18 内核包。
使用 pgbench 初始化类似 TPC-B 的表,包含 100 个仓库:
接下来,您可以使用 orioledb 存储引擎重建这些表并观察性能差异:
关键特性
- 无 XID 回绕:消除事务 ID 回绕维护
- 无表膨胀:高级存储管理防止表膨胀
- 云存储:对 S3 兼容对象存储的原生支持
- OLTP 优化:专为事务工作负载设计
- 改进性能:更好的空间利用率和查询性能
注意:OrioleDB 仍处于快速迭代阶段,生产使用前请按目标版本单独评估。
可用扩展
OrioleDB 内核共有 53 个可用扩展,去除 PG Contrib 自带扩展之后,还有以下额外扩展:
| 扩展名 | 版本号 | 说明 |
|---|---|---|
| orioledb | 1.8 |
OrioleDB – the next generation transactional engine |
13 - Cloudberry
gpsql 模式统一纳管节点、监控与配置。Cloudberry 是一个源自 Greenplum 社区的开源 MPP 数据仓库内核,适合大规模并行分析场景。
概览
在 Pigsty 中,Cloudberry 沿用 gpsql 模式接入,与 Greenplum / MatrixDB 共享一套身份模型、监控逻辑与目录约定。
- 内核包名:
cloudberry - 模式标识:
pg_mode: gpsql - 角色标识:
gp_role: master | segment - 当前仓库版本:
Cloudberry 2.1.0 - 当前主包版本:DEB
2.1.0-2PIGSTY,RPM2.1.0-3PIGSTY - 默认二进制目录:
/usr/cloudberry
需要特别说明的是,Pigsty 当前对 Cloudberry 的支持重点在于:软件包交付、节点管理、监控纳管、访问控制与配置编排。 对于 MPP 集群初始化、扩容、重平衡和上游专有运维动作,仍建议使用 Cloudberry 官方工具链完成。
当前 Pigsty 仓库同时提供 DEB 与 RPM 的
cloudberry、cloudberry-backup、cloudberry-pxf包。
安装
当前版本暂未提供独立的 cloudberry 一键模板。更常见的使用方式是:
- 将目标节点纳入 Pigsty 管理。
- 安装
cloudberry内核包。 - 通过
gpsql模式描述 coordinator / segment 拓扑。 - 使用 Pigsty 统一接入监控、账号、访问控制与备份体系。
如果只是为节点安装内核包,可直接执行:
如果是已有 Cloudberry 集群纳管,建议先保留原有初始化方式,再逐步补齐 Pigsty inventory 与监控配置。
配置
Cloudberry 使用 gpsql 模式,而不是单独的 cloudberry 模式。与原生 PostgreSQL 相比,至少需要额外关注 pg_shard 与 gp_role 两个身份参数;如需显式标注分片组,也可以补充 pg_group。
下面是一个最小可读的拓扑示例:
其中有两点最容易忽略:
gp_role: master用于 coordinator / master 节点,业务访问通常落在这里。gp_role: segment节点采集监控时,通常需要让pg_exporter以utility模式连接。
客户端访问
对业务侧来说,Cloudberry 仍然暴露 PostgreSQL 线缆协议,绝大多数兼容 PostgreSQL 的客户端、驱动与 BI 工具都可以接入。
但需要注意:
- 应用与分析查询应连接到 master / coordinator,而不是直接访问 segment 节点。
- segment 节点更适合承载数据与计算分片,以及被 Pigsty 纳入监控采集。
- 如果需要统一接入地址,可以继续使用 Pigsty 的 HAProxy / PgBouncer / DNS 服务抽象。
扩展与生态
Cloudberry 虽然源自 PostgreSQL 生态,但它不是“原生 PostgreSQL + 若干扩展”那么简单。 对于 Pigsty 主仓库中现成的扩展包,需要分两类看待:
- 纯 SQL 或与内核 ABI 耦合较弱的对象,通常更容易适配。
- 依赖 PGXS / 内核 C ABI 的扩展,往往需要针对 Cloudberry 的版本和编译链重新验证甚至重编译。
如果你的业务依赖 postgis、向量、FDW、审计或自定义 C 扩展,请先在目标 Cloudberry 版本上单独做兼容性验证,不要直接照搬原生 PostgreSQL 的扩展清单。
注意事项
- Cloudberry 当前没有单独的 Pigsty 配置模板,使用时应以
gpsql模式手工描述拓扑。 - 当前仓库交付重点是包、配置与监控,并不替代 Cloudberry 官方的 MPP 初始化与扩缩容工具。
- 由于这是 MPP 分布式内核,Patroni / PgBouncer / PgBackRest 的原生 PostgreSQL 经验并不能无条件套用到所有节点角色。
- 如果你只需要 PostgreSQL 水平扩展而不是完整 MPP 数仓,通常应优先考虑 Citus。
相关文档
14 - Neon
Neon 采用了存储与计算分离架构,提供了丝滑的自动扩缩容,Scale to Zero,以及数据库版本分叉等独家能力。
Neon 官网:https://neon.tech/
Neon 编译后的二进制产物过于庞大,目前不对开源版用户提供,目前处于试点阶段,有需求请联系 Pigsty 销售。
15 - AgensGraph
AgensGraph 是基于 PostgreSQL 的属性图数据库内核,支持 openCypher 查询,并允许 Cypher 与 SQL 混合使用。
概览
Pigsty 通过 pg_mode: agens 接入 AgensGraph,并保留标准 PostgreSQL 集群的大部分运维体验。
- 内核包:
agensgraph - 模式标识:
pg_mode: agens - 当前模板版本:
AgensGraph 2.17.0 - 当前版本字符串:
PostgreSQL 17.10 (AgensGraph 2.17.0) - 当前内置模板:
agens - 适用场景:关系数据之上叠加图关系分析、路径查询、知识图谱、风控关联
对客户端来说,AgensGraph 仍然暴露 PostgreSQL 线缆协议,常规 PG 客户端、驱动与连接池都可以直接接入。
和原生 PostgreSQL 的主要区别不在“如何连接”,而在“库内多了图模型对象、Cypher 语法与 agtype 数据类型”。
安装
使用 Pigsty 内置模板:
agens 模板会自动启用 pg_mode: agens 并安装 agensgraph 内核包。部署完成后可直接核对内核版本:
配置
AgensGraph 在 Pigsty 中的关键配置如下:
AgensGraph 不需要像 pgEdge / Babelfish 那样额外预加载一组专有库,因此大多数 Pigsty 的标准 HA、备份、监控、访问控制与 IaC 用法都保持不变。
如果你的负载以图遍历和复杂路径查询为主,通常应重点关注 work_mem、shared_buffers 与代价参数,而不是简单沿用默认 OLTP 习惯。
使用
连接到数据库后,通常先创建图并设置 graph_path:
创建标签、顶点和边:
执行图查询与更新:
如需在 SQL 中混合调用 Cypher,可使用 cypher():
在实际项目里,更常见的做法是把“关系表 + 图标签 + Cypher 查询”混合使用:
普通事务、权限与备份仍沿用 PostgreSQL 的工作流,而图分析逻辑放在 AgensGraph 提供的图对象与 cypher() 接口中完成。
注意事项
- AgensGraph 当前固定在 PG17 兼容系,规划扩展生态时不要按 PG18 的可用性来假定。
agens默认模板为单节点快速启用,生产环境建议按需扩展为高可用拓扑。- 并非所有 PostgreSQL 三方扩展都保证可直接用于 AgensGraph 内核,建议先做兼容性验证。
- 图对象与关系对象可以共存于同一数据库中,但生产上通常更建议规划清晰的数据库或命名约定,避免图模型与普通业务对象互相污染。
- 请结合业务图模型规模调优内存与代价参数,避免直接沿用默认值。
- 使用 AgensGraph 内核遇到兼容或语义问题时,建议优先对照官方手册与上游 Issue 排查。
相关文档
- Pigsty 配置模板:
conf/agens - PGSQL 内核模式参数
- AgensGraph 官方仓库:https://github.com/skaiworldwide-oss/agensgraph
- AgensGraph 官方手册:https://tech.skaiworldwide.com/docs/en/agensgraph/latest/
- AgensGraph 官方 Quick Guide:https://tech.skaiworldwide.com/docs/en/agensgraph/17/quick_guide/index.html
- AgensGraph 2.17.0 Release Notes:https://tech.skaiworldwide.com/docs/en/agensgraph/latest/release_notes/agensgraph_release_notes_2_17_0.html
可用扩展
AgensGraph 内核共有 60 个可用扩展,去除 PG Contrib 自带扩展之后,还有以下额外扩展:
| 扩展名 | 版本号 | 说明 |
|---|---|---|
| meta | 1.0 |
Utility functions for agensgraph |
16 - pgEdge
pgEdge 是面向边缘场景的分布式 PostgreSQL 发行版,核心能力建立在 Spock 多主逻辑复制之上。
概览
Pigsty 通过 pg_mode: pgedge 接入 pgEdge,并用标准 PG 集群编排流程交付其核心组件:
pgedge:PG15、PG16、PG17、PG18 兼容内核,模板默认使用 PG18spock:多主(active-active)逻辑复制snowflake:分布式唯一序列lolor:大对象逻辑复制兼容层
当前 Pigsty 仓库中提供 pgedge-15、pgedge-16、pgedge-17、pgedge-18 四个版本化内核包,模板默认使用 pg_version: 18。
spock、snowflake 与 lolor 的控制文件、SQL 文件和动态库随 pgedge-$v 内核包一起交付,不再作为独立 pg_extensions 包安装项。
对客户端来说,pgEdge 仍然是 PostgreSQL 线缆协议,psql、JDBC/ODBC、DBeaver 等工具都可以直接接入。
Pigsty 提供的是“先验证单节点内核,再扩展到多节点复制拓扑”的交付路径: 模板会开箱即用地完成内核、扩展、监控、备份与访问控制,但真正的多主拓扑编排仍需要你根据业务一致性和冲突策略来设计。
安装
使用 Pigsty 内置模板:
模板默认在 meta 数据库预装 spock、snowflake、lolor。部署完成后可用以下命令核对版本和扩展:
模板与完整参数见:
pgedge配置模板。
配置
pgedge 模板的关键参数如下(与 conf/pgedge.yml 一致):
如果计划扩展为多节点多主,建议额外显式配置逻辑复制容量和 snowflake.node:
其中 snowflake.node 必须在每个写节点上保持唯一,否则分布式 ID 会冲突。
使用
在 Pigsty 中,常见使用路径是“先单节点验证内核,再扩展为多节点 Spock 复制拓扑”。
如果你在业务数据库中也需要这些能力,请先创建扩展:
随后再使用 Spock SQL API 或 pgEdge CLI 建立节点、复制集和订阅关系。
对于已有使用 serial / identity 的业务表,建议在多主写入前先完成 snowflake 序列规划,否则跨节点写入很容易出现主键冲突。
注意事项
- pgEdge 的复制是“按数据库”组织的,不是一次性把整个实例自动变成全库多主。
- 参与复制的表应具备
PRIMARY KEY或合适的REPLICA IDENTITY。 UNLOGGED与TEMPORARY表不会进入 Spock 逻辑复制。- Spock 的配置与运维通常需要超级用户权限,生产环境应明确权限边界。
- 如果业务依赖 large object 复制,应显式使用
lolor,不要假定原生 large object 会自动正确同步。 - 跨地域多主不是“开关一开即可用”的功能,网络时延、冲突解决策略与写入模型都要先评估。
相关文档
- PGSQL 内核总览
pgedge配置模板- PGSQL 内核模式参数
spock扩展snowflake扩展lolor扩展- pgEdge 官方文档首页
- Spock Limitations
- Snowflake Sequences
可用扩展
pgEdge 内核共有 63 个可用扩展,去除 PG Contrib 自带扩展之后,还有以下额外扩展:
17 - DocumentDB
DocumentDB 是微软开源维护的 PostgreSQL 文档数据库扩展,FerretDB 是构建在其上的无状态协议转换代理。 两者组合,让标准 PostgreSQL 内核对外提供 MongoDB 线协议兼容端点——使用 MongoDB 驱动的应用程序可以直接对接,请求被转换为对 PostgreSQL 的操作。
与其他内核分支不同,这不是一个独立的 PostgreSQL 分叉:数据层运行原生 PostgreSQL 16 - 18 内核,由标准 PGSQL 模块管理,
持久化、事务、高可用、备份、监控与访问控制均由 PostgreSQL 侧负责;FerretDB 以 Pigsty Docker APP 的形式部署,只承担协议转换。
Pigsty 是 FerretDB 社区的合作伙伴,提供 FerretDB 与 DocumentDB 扩展的二进制打包,
并通过 mongo 配置模板开箱即用地交付整套组合。
快速开始
使用 Pigsty 的 标准安装流程 和 mongo 配置模板:
FerretDB 默认监听本机回环地址的 27017 端口,使用 mongosh 或任意 MongoDB 兼容客户端即可访问:
配置
源文件:pigsty/conf/mongo.yml,完整模板说明见 Mongo 配置模板 文档。
PostgreSQL 侧的关键配置是 documentdb 扩展及其预加载库,以及供 FerretDB 使用的后端超级用户:
FerretDB 作为 Docker APP 部署,参数是 apps.ferretdb.conf 下的普通覆盖项,
容器通过 host.docker.internal 连接本机 5436 主库直连服务:
高可用
因为 FerretDB 完全无状态,高可用拓扑与标准 PostgreSQL 集群一致:模板中保留了注释状态的三节点 pg-mongo 示例,
每个节点各跑一个 FerretDB 容器(绑定本机 27018),由 HAProxy 汇聚为浮动端点 10.10.10.4:27017(mongo.pigsty)对外服务。
PostgreSQL 侧的故障转移仍由 Patroni 与 etcd 负责,Mongo 端点在主库切换后自动恢复可用。
注意事项
- FerretDB 默认启用认证(
FERRETDB_AUTH: true),但尚未实现 MongoDB 授权角色体系,真正的安全边界仍是 PostgreSQL 的用户与 HBA 规则。 - 默认未启用客户端 MongoDB TLS,Mongo 端点也不会暴露到网络;确有远程访问需求时才应修改
FERRETDB_BIND_ADDR。 - 后端集群统一使用标准 PostgreSQL 参数、剧本与仪表盘,不存在独立的 FERRET 模块或
mongo_*参数组。 - FerretDB 或 DocumentDB 升级后,建议重新执行一次带认证的 CRUD 冒烟测试。