PgDog: 自动分片实现 PostgreSQL 水平扩展

John Doe 十一月 10, 2025

借助 PgDog 可实现 PostgreSQL 扩展性。PgDog 是 PostgreSQL 的水平扩展层。它可以在不更改应用程序的情况下,实现查询负载均衡和数据库分片。

介绍

PgDog 不用加载任何扩展,即可实现 PostgreSQL 的分片能力。PgDog 完全在数据库之外运行,可以部署在所有环境中,包括托管云,如 AWS RDS 和 Google Cloud SQL。

路由查询

PgDog 能够理解 SQL,并将查询定向到正确的分片,而无需更改您的应用程序。

image

移动数据

利用逻辑复制,PgDog 可以在后台对表进行分片和重新分片,而无需停机。

image

PgDog 对比 Citus

PgDog 是一个无状态网络代理。这意味着,通过 PgDog 的连接不需要特定的 PgDog 实例。只要配置相同,连接可以通过任何一个 PgDog 实例发送。配置同步可以使用各种编排工具,例如 Kubernetes、ECS,或者直接使用 Bash 和 scp 命令。

如果您之前使用过 PgBouncer(或 pgcat),那么您可以以完全相同的方式部署 PgDog。PgDog 实例之间互不通信,除了几个配置文件之外不使用外部存储,并且仅在处理事务和运行健康检查时才与数据库通信。

相反,Citus 架构使用单个 Postgres 协调器实例。Citus 将工作节点的权威信息存储在协调器内部的元数据表中。因此,所有需要与工作节点通信的请求都必须经过协调器。这对于 OLAP 来说非常有效:大部分工作本来就由工作节点完成,例如从表中读取 TB 级数据以及计算聚合。协调器只负责汇总最终结果,速度很快。

对于在线事务处理 (OLTP) 而言,协调器每秒要处理数千个请求。大多数查询只是从几个表中获取一行数据。这就要求协调器承担大部分工作,而数据节点则相对空闲,只是从共享缓冲区获取热点数据。如果要扩展 OLTP 处理能力,则必须使用可水平扩展的协调器。

参考

Scale PostgreSQL horizontally | PgDog:https://pgdog.dev/