PgDog favicon

PgDog

PgDog:高性能PostgreSQL扩展工具,集连接池、负载均衡与分片于一体

介绍:

PgDog 是一款专为 PostgreSQL 设计的分布式数据库代理,集成了连接池、负载均衡和分片功能。它允许在不改动应用代码的情况下水平扩展 Postgres。PgDog 支持 100,000+ 客户端,提供 ACID 事务一致性,并能在生产环境中处理 20TB+ 数据和每秒 200 万次查询。无论是通过 Helm 部署还是 Docker 运行,PgDog 都能为现代数据库架构提供高效的性能提升和极高的可靠性。

记录:

2026-07-16

每月访客数:

--K

PgDog - AI Tool Screenshot and Interface Preview

PgDog 产品信息

PgDog:PostgreSQL 数据库水平扩展与高性能代理解决方案

在现代后端架构中,随着业务规模的增长,PostgreSQL 的扩展性往往成为系统瓶颈。PgDog 是一款革命性的工具,旨在通过单一可执行文件实现 PostgreSQL 的水平扩展。它将连接池(Connection Pooler)、**负载均衡器(Load Balancer)以及分布式数据库(Distributed Database)**的功能完美融合,是一款可以部署在任何地方的“开箱即用”型代理。目前,PgDog 已获得 550 万美元的种子轮融资,并在生产环境中证明了其处理 20 TB+ 分片数据和每秒 200 万次以上查询的强大能力。

什么是 PgDog?

PgDog 是一个专为 PostgreSQL 设计的高性能代理。它可以被视为数据库的“透明层”,允许用户通过单一端点(Endpoint)访问底层复杂的数据库集群。无论你是需要管理成千上万个客户端连接,还是需要将读取压力分散到多个从库,亦或是需要将海量数据分片存储,PgDog 都能提供无缝的支持。

作为一款无侵入式的 PostgreSQL 代理,PgDog 不需要修改任何现有的应用程序代码(Drop-in proxy)。它支持诸如 asyncpgpgxlibpqruby-pg 等主流驱动,是提升数据库系统容量、可靠性和灵活性的理想选择。

PgDog 的核心功能

1. 高性能连接池 (Connection Pooler)

在处理海量并发连接时,原生的 PostgreSQL 往往会消耗大量内存和 CPU 资源。PgDog 的连接池功能采用了真正的“事务模式(Real transaction mode)”:

  • 超大规模连接支持PgDog 仅需几个底层 Postgres 连接,即可为 100,000 多个客户端提供服务,且不会破坏任何 Postgres 特性。
  • 会话状态保持:完美支持 SET 命令、咨询锁(Advisory Locks)以及 LISTEN/NOTIFY 机制,且无需连接钉扎(Connection Pinning)。
  • 多线程与异步架构:每线程支持 50,000+ TPS(每秒事务数),且没有查询长度或连接限制。
  • 预处理语句支持:与所有客户端驱动程序兼容,且具有零额外开销。

2. 数据库负载均衡器 (Load Balancer)

PgDog 被誉为“数据库层面的 ALB(应用负载均衡器)”。它可以智能地分配流量,确保数据库集群的高可用性:

  • 健康检查PgDog 能自动检测副本的同步延迟或硬件故障,并阻止故障或过时的副本提供查询服务。
  • 自动故障切换(Failover)检测:当主库发生切换时,PgDog 能自动将写入流量导向新的主库,无需更改配置。
  • 读写分离PgDog 利用内部的 Postgres SQL 解析器实现最大程度的兼容性,自动将 SELECT 查询路由到副本,而将其余操作路由到主库。

3. 分布式数据库与分片 (Distributed Database & Sharding)

这是 PgDog 最具竞争力的功能。它允许用户在不修改应用逻辑的情况下实现 PostgreSQL 分片:

  • 透明分片逻辑PgDog 直接从 SQL 查询中提取分片键(Sharding Key),并将查询发送到正确的分片。对于不带分片键的查询,PgDog 会在所有数据库上并行执行。
  • 高性能 OLTP 与 OLAP:支持横向扩展的协调器。对于分析型查询,PgDog 支持 GROUP BYCOUNT()AVG()ORDER BYMIN()MAX()COPY 等操作。PgDog + Postgres 构成了一个强大的 Scatter/Gather 引擎。
  • 灵活分片方案:支持按任何字段进行分片,配置驱动的数据分布方案与标准 Postgres 数据类型完全兼容。

4. 强一致性与分布式事务

PgDog 在追求速度的同时,从未妥协数据的一致性:

  • 跨分片事务:支持将数据原子性地写入所有分片。通过原生 Postgres 预备事务(Prepared Transactions)和两阶段提交(2PC),任何错误都会触发自动回滚。
  • 复制表(Replicated Tables):对于不需要分片的表,PgDog 可以在所有分片上存储相同的数据,从而实现极速的本地分片连接(Shard-local joins)。
  • 整数主键支持:无需切换到 UUID。PgDog 支持在代理层自动生成单调递增的大整数主键。
  • 分片键迁移:仅需使用 UPDATE 语句即可在不同分片之间移动数据行。
  • 一致性模式:DDL 操作会自动跨分片执行,支持 Alembic、ActiveRecord 等迁移工具开销即用。

PgDog 的应用场景 (Use Case)

  • 海量数据存储:如 Earth Genome 公司利用 PgDog 处理超过 40 亿行的地理空间数据,并将复杂的分片逻辑从应用层移动到了简单的配置中。
  • 极高并发连接:Ramp 公司使用 PgDog 替代了 RDS Proxy,显著提升了连接扩展性,移除了系统的主要瓶颈。
  • 高频数据摄取:Tripstack 公司在切换到 PgDog 后,在摄取比以往更多的数据的同时,保持了 100% 的在线率。
  • 大规模 Pod 扩展:Modal 公司在运行数千个 Pod 的环境下,依靠 PgDog 实现了业务的平稳扩展。

如何使用 PgDog

PgDog 既支持通过 Helm 在 Kubernetes 上部署,也支持通过 Docker 容器运行。以下是使用 Helm 安装 PgDog 的基本步骤:

  1. 添加 Helm 仓库

    helm repo add pgdogdev https://helm.pgdog.dev
    
  2. 安装 PgDog

    helm install pgdog pgdogdev/pgdog
    

在配置方面,PgDog 使用简单的 .toml 文件进行管理。例如,你可以轻松定义主库和副本:

[[databases]]
name = "prod"
host = "10.0.0.1"
role = "primary"

[[databases]]
name = "prod"
host = "10.0.0.2"
role = "replica"

常见问题解答 (FAQ)

Q: 使用 PgDog 需要修改现有的应用程序吗?

A: 不需要。PgDog 是一个透明的代理,支持主流的 PostgreSQL 驱动,您的应用程序可以像连接普通数据库一样连接到 PgDog

Q: PgDog 如何处理分布式环境下的数据一致性?

A: PgDog 维护 ACID 合规性。它通过两阶段提交(2PC)和原生预备事务支持跨分片事务,确保数据写入的原子性。

Q: PgDog 相比于 RDS Proxy 有什么优势?

A: 根据 Ramp 等用户的反馈,PgDog 在连接扩展性方面提供了显著的提升,解决了 RDS Proxy 可能遇到的瓶颈,并增加了分片和高级负载均衡功能。

Q: PgDog 支持哪些聚合操作?

A: PgDog 内置了对 COUNT()AVG()SUM()MIN()MAX()GROUP BYORDER BY 等聚合操作的支持,能够高效地跨分片收集并汇总数据。


"PgDog 让我们能够将复杂的地理空间分片逻辑从应用层移入简单的配置中,同时加快了查询速度。我们在生产环境中有近 40 亿行数据,从未遇到过任何问题。" —— Hutch Ingold, CTO, Earth Genome

Loading related products...