Pigsty为您解锁PostgreSQL RDS的无限可能


1. Supabase

  • 类型:后端即服务(BaaS)
  • 简介:基于 PostgreSQL 的开源 Firebase 替代品,提供数据库、认证、存储、实时 API 等功能。

2. Citus

  • 类型:水平分布式
  • 简介:将 PostgreSQL 转换为分布式数据库,支持分片和并行查询,适用于多节点部署。

3. Babelfish

  • 类型:SQL Server 兼容
  • 简介:使 PostgreSQL 能够理解 SQL Server 协议和语法,方便从 SQL Server 迁移。

4. IvorySQL

  • 类型:Oracle 兼容
  • 简介:基于 PostgreSQL 并增强对 Oracle 兼容性,支持 PL/SQL 等特性。

5. OpenHalo

  • 类型:MySQL 兼容
  • 简介:使 PostgreSQL 兼容 MySQL 协议和部分语法,便于 MySQL 应用迁移。

6. FerretDB

  • 类型:MongoDB 兼容
  • 简介:将 MongoDB 协议请求转换为 PostgreSQL 可执行的操作,作为 MongoDB 的开源替代。

7. OrioleDB

  • 类型:OLTP 优化
  • 简介:面向高性能 OLTP 的存储引擎,旨在提升 PostgreSQL 的写入和索引效率。

8. pgEdge

  • 类型:多写地理分布
  • 简介:专注于多主复制和边缘计算,支持低延迟的分布式 PostgreSQL 部署。

9. Percona(Percona Distribution for PostgreSQL)

  • 类型:透明数据加密
  • 简介:由 Percona 提供的 PostgreSQL 发行版,包含审计、加密等企业级安全功能。

10. PolarDB PG

  • 类型:云原生 RAC
  • 简介:阿里云 PolarDB 的 PostgreSQL 兼容版,实现存储计算分离与多节点集群。

11. AgensGraph

  • 类型:图数据库内核
  • 简介:基于 PostgreSQL 的混合图数据库,支持 SQL 和 Cypher 查询。

12. Cloudberry

  • 类型:PGMPP 数仓
  • 简介:基于 PostgreSQL 的大规模并行处理(MPP)数据仓库,适用于分析场景。

详细解读这12个PostgreSQL生态项目的具体场景、关键语法、发布日期、作用及所属领域。

1. Supabase

  • 发布日期:2020年 (开源)
  • 作用:提供一套完整的后端服务,让开发者(尤其是前端)无需编写API,直接通过客户端SDK操作数据库、用户认证和文件存储。
  • 具体场景:适合SaaS应用、移动App、AI Agent应用(如扣子编程)的快速开发,能大幅缩短上线时间。
  • 关键语法/操作
    • 前端查询 :通过 supabase-js 库直接调用。

      typescript 复制代码
      // 查询数据 (自动生成RESTful API)
      const { data } = await supabase.from('todos').select('*');
      
      // 实时订阅 (监听数据库变更)
      supabase.from('todos').on('*', handleChange).subscribe();
    • 权限控制 :依赖PostgreSQL原生的行级安全 (Row Level Security, RLS) 策略,在数据库层直接限制不同用户的数据可见范围。

  • 领域:后端即服务 (BaaS) / 云原生开发。

2. Citus

  • 发布日期:2012年 (微软于2019年收购)
  • 作用 :将多个PostgreSQL服务器组合成一个"集群",对外表现为一个超大数据库。通过分片 (Sharding)并行计算解决单机无法承载的海量数据和高并发问题。
  • 具体场景:SaaS多租户系统(按租户ID隔离)、物联网时序数据(如千万级设备上报)、需要HTAP(事务+分析)混合负载的游戏或电商平台。
  • 关键语法/操作
    • 分布式表创建 :指定分片键,Citus自动分发数据。

      sql 复制代码
      -- 创建表
      CREATE TABLE events (user_id int, data jsonb);
      -- 指定 user_id 为分片键,Citus 会自动将其哈希分布到各节点
      SELECT create_distributed_table('events', 'user_id');
      
      -- 创建参考表 (每个节点存一份,用于加速Join)
      SELECT create_reference_table('users');
    • 查询路由 :若 where 条件带分片键,则精准路由到单个分片(极快);若不带,则并行分发到所有分片(MPP模式)。

  • 领域:分布式数据库 / 在线分析处理 (OLAP) 与在线事务处理 (OLTP)。

3. Babelfish

  • 发布日期:2021年 (AWS开源)

  • 作用 :为PostgreSQL添加了一个"翻译层",使其能理解SQL Server (T-SQL) 的协议、语法和游标。旨在让企业零成本、零修改地将SQL Server应用迁移到PostgreSQL,摆脱商业数据库高额许可费。

  • 具体场景:企业去"IE"化,将封闭的商业SQL Server数据库替换为开源的PostgreSQL。

  • 关键语法/操作

    • 连接:应用使用原本连接SQL Server的驱动和端口(默认1433)连接Babelfish。

    • 存储过程 :直接在PostgreSQL中编写T-SQL语法的存储过程。

      sql 复制代码
      -- 在 Babelfish 中,你可以直接执行 T-SQL 代码
      CREATE PROCEDURE get_employee @emp_id INT AS
      BEGIN
          SELECT * FROM employees WHERE id = @emp_id;
      END;
  • 领域:数据库迁移 / 企业级架构改造。

4. IvorySQL

  • 发布日期:5.0版本于2025年11月发布

  • 作用:兼容Oracle数据库。让原本运行在Oracle上的应用(尤其是依赖PL/SQL存储过程的系统)能够平滑迁移到PostgreSQL生态,减少代码重写工作量。

  • 具体场景:金融、政府等信创国产化替代场景,将Oracle替换为开源数据库。

  • 关键语法/操作

    • PL/SQL兼容 :支持Oracle特有的 PLSQL 块、包、嵌套函数。

      sql 复制代码
      -- Oracle 风格的 NULL 处理 (将 '' 视为 NULL)
      SELECT CONCAT('a', NULL);  -- 返回 'a' (而非 PG 默认的 NULL)
      
      -- 支持 Oracle 的 %ROWTYPE 属性
      DECLARE
          v_emp employees%ROWTYPE;
      BEGIN
          ...
      END;
  • 领域:数据库迁移 / Oracle替代。

5. openHalo

  • 发布日期:2025年4月1日
  • 作用MySQL协议级兼容。它不是简单的语法转换,而是在内核层面实现了MySQL的网络协议。这意味着原本为MySQL写的PHP、Java应用,可以直接连接openHalo,无需修改驱动或更换ORM框架。
  • 具体场景:帮助互联网创业公司或传统企业,将使用MySQL的业务系统无缝迁移到PostgreSQL内核上,享受PG的优化器性能和丰富生态。
  • 关键语法/操作
    • 协议兼容:应用连接串直接使用MySQL默认端口(3306)。
    • 语法兼容 :支持MySQL特有的 LIMIT 优化、INSERT INTO ... ON DUPLICATE KEY UPDATE 等专属语法。
  • 领域:数据库迁移 / 混合数据库架构。

6. FerretDB

  • 发布日期:2023年4月 (1.0正式版)

  • 作用MongoDB的替代品。由于MongoDB修改了开源协议(SSPL),许多云厂商不敢再使用。FerretDB作为代理,将MongoDB的查询协议转换为SQL,数据实际存储在PostgreSQL中。

  • 具体场景:需要灵活Schema(无模式)但希望使用成熟关系型数据库底层存储的场景,如内容管理系统、日志收集、原型开发。

  • 关键语法/操作

    • 连接 :使用标准MongoDB Shell连接。

      javascript 复制代码
      // 使用 MongoDB 驱动连接 FerretDB
      use test;
      // 插入文档 (BSON格式)
      db.scientists.insertOne({ name: "Ada", born: 1815 });
      // 查询
      db.scientists.find({ born: { $gt: 1800 } });
  • 领域:文档数据库 / 协议转换网关。

7. OrioleDB

  • 发布日期:2022年 (概念验证,持续迭代)

  • 作用:一个新的存储引擎,旨在解决PostgreSQL原生引擎(Heap)在高并发写入时的性能瓶颈(如写放大、Vacuum冻结风暴)。它通过无锁数据结构和优化日志解决。

  • 具体场景:超高吞吐量的OLTP场景(如证券交易、抢票系统),以及对写入延迟极度敏感的物联网传感器数据采集。

  • 关键语法/操作

    • 表创建 :在建表时指定使用 OrioleDB 引擎。

      sql 复制代码
      -- 假设插件已安装
      CREATE TABLE fast_table (id int, data text) USING orioledb;
  • 领域:数据库内核 / 高性能事务处理 (OLTP)。

8. pgEdge

  • 发布日期:2023年
  • 作用 :实现多主复制。传统PostgreSQL复制通常是主从模式(单写),pgEdge允许多个节点同时写入,并解决冲突,支持在网络条件较差的地理分布式部署。
  • 具体场景:全球分布式应用、边缘计算节点、需要本地写入低延迟且跨地域数据同步的场景。
  • 关键语法/操作
    • 配置DDL:通过特定的函数定义节点和订阅集,实现多点写入。
  • 领域:分布式系统 / 边缘计算 / 高可用架构。

9. Percona Distribution for PostgreSQL

  • 发布日期:持续更新 (Percona公司维护)

  • 作用 :提供企业级开箱即用的工具集,核心卖点是透明数据加密 (TDE),即在不改动应用代码的情况下,对数据库底层文件(数据文件、WAL日志)进行加密,防止磁盘被盗或泄露。

  • 具体场景:满足金融、医疗等合规性要求(如等保、GDPR),要求数据"静态加密"的场景。

  • 关键语法/操作

    • 开启加密 :需配置 pg_tde 插件和密钥管理(如Vault)。

      sql 复制代码
      -- 加载插件 (需配置 shared_preload_libraries)
      -- 指定密钥提供者 (如 HashiCorp Vault)
      SELECT pg_tde_add_key_provider_vault_v2(...);
      -- 设置主密钥
      SELECT pg_tde_set_principal_key(...);
      -- 建表时指定加密存储引擎
      CREATE TABLE secure_data (id int) USING tde_heap;
  • 领域:数据库安全 / 企业级运维。

10. PolarDB PG

  • 发布日期:2018年 (阿里云商业化)
  • 作用存算分离架构。将计算CPU/内存和存储云盘分离。你可以在几秒钟内拉起一个只读节点分担读压力,存储是按量付费的共享盘。
  • 具体场景:高弹性场景(如电商大促,平时2核,大促秒级变64核)、读多写少的应用(如内容社区、SaaS报表系统)。
  • 关键语法/操作
    • 兼容性:完全兼容PostgreSQL语法,应用无感迁移。
    • 扩展性 :提供 DBLink 或集群管理命令来添加只读节点。
  • 领域:云原生数据库 / 弹性计算。

11. AgensGraph

  • 发布日期:2016年 (Bitnine公司)

  • 作用混合存储。一张表里既能存普通的关系型数据(行/列),又能存图数据(顶点/边)。支持标准SQL和OpenCypher(图查询语言)的混合查询。

  • 具体场景:知识图谱、社交网络好友推荐(N度关系查询)、反欺诈的资金链路追踪(图遍历比SQL递归快千百倍)。

  • 关键语法/操作

    • 创建图 :类似创建Schema。

      sql 复制代码
      CREATE GRAPH social;
      -- 创建顶点和边
      CREATE (:person {name: 'Alice'});
      CREATE (:person {name: 'Bob'});
      -- 图查询:查找 Alice 的朋友
      MATCH (a:person)-[:knows]->(b:person) 
      WHERE a.name = 'Alice' 
      RETURN b.name;
  • 领域:图数据库 / 知识图谱 / 社交网络分析。

12. Cloudberry Database

  • 发布日期:2023年 (原Greenplum生态衍生)

  • 作用MPP (大规模并行处理) 数据仓库。继承自Greenplum(曾基于PostgreSQL 9.4),专门用于海量数据的OLAP分析。它会将一条复杂SQL拆解给几百台机器并行计算。

  • 具体场景:企业数据仓库、BI报表、大屏展示、超大规模日志分析(PB级数据)。

  • 关键语法/操作

    • 表分布 :建表时必须指定分布键(类似Citus但更偏向分析)。

      sql 复制代码
      -- 指定分布键,数据会打散到所有节点
      CREATE TABLE sales (id int, amount numeric) 
      DISTRIBUTED BY (id);
      
      -- 执行复杂分析,自动启用并行
      SELECT region, sum(amount) FROM sales GROUP BY region;
  • 领域:数据仓库 / 在线分析处理 (OLAP) / 商业智能 (BI)。


总结表格:

项目 一句话定位 核心差异化语法/特性 适用领域
Supabase 后端即服务 自动生成RESTful API + RLS策略 快速开发/前端全栈
Citus 水平分片扩展 create_distributed_table 分布式OLTP/多租户
Babelfish SQL Server迁移 T-SQL兼容 + TDS协议 去微软化/迁移
IvorySQL Oracle迁移 PL/SQL兼容 + Oracle函数包 去Oracle化/信创
openHalo MySQL协议兼容 MySQL原生协议握手 MySQL平滑迁移
FerretDB MongoDB替代 MongoDB协议转换 文档存储/开源合规
OrioleDB 高性能写入 USING orioledb 存储引擎 高并发写入/IoT
pgEdge 多主/地理分布 多点写入冲突解决 全球分布式/边缘计算
Percona PG 企业级安全 透明数据加密 (TDE) 数据加密/合规
PolarDB PG 云原生弹性 存储计算分离 云上弹性扩缩容
AgensGraph 图数据库 Cypher + SQL混合查询 图分析/知识图谱
Cloudberry MPP数仓 DISTRIBUTED BY 分布键 大数据分析/BI

如果你对其中某个项目(如Citus的分布式部署细节或IvorySQL的迁移评估)有进一步兴趣,我可以继续深入说明。