Wink Pings

Postgres 内部 3D 地图上线,附赠 Rust 逻辑复制引擎

Postgres 内部结构第一次有了可交互的 3D 模型,同时作者开源了 Rust 编写的逻辑复制工具 PGSync,内存占用仅 15MB。

在 Postgres 生态里,alex shapalov 算是高产的那类。这两天他连发了两个东西:一个 Postgres 内部结构的 3D 交互地图,一个用 Rust 写的逻辑复制引擎。

先说 3D 地图。地址是 pgrun.dev/pi,免费,直接打开就能玩。它把 Postgres 的内部模块做成了一台立体的、可以拆解的机器。你可以拖动旋转、滚动缩放、点击任意部件查看说明。磁盘、内存、WAL、Postmaster 这些概念,第一次以可操作的方式呈现。

有网友评论:这是展示架构和系统设计的新方式,UML 和 ADR 都过时了。作者回应说,他现在就是这么给别人讲架构的。

另一个网友说:交互式 3D 地图能让复杂概念更容易消化。这句话在理。Postgres 文档里的架构图再精细,也只是一张平面图,看多了容易睡着。这个地图让你自己动手拆。

然后是 PGSync。这是同一作者开源的另一个项目,GitHub 上叫 pgrundev/pgsync,Apache 2.0 协议。它的定位是内存有界的 PostgreSQL 逻辑复制。Rust 编写,单二进制,不需要在源库装扩展,也不需要触发器。做的事情是:先拍一个事务一致的快照,再通过原生的 pgoutput 协议,把后续提交的变更流式同步到另一个 Postgres。每个源事务对应目标端一个事务,检查点随数据一起提交。

内存占用是亮点。官方 benchmark 显示,快照 1GB 数据时 RSS 峰值 33MB,持续流式同步时稳定在 15MB 左右。和 Debezium 那套 JVM 体系相比,这个数字相当克制。

为什么不用内置的 CREATE SUBSCRIPTION?作者解释:内置订阅适合目标端也是你完全掌控的 Postgres。但 PGRun 需要把复制引擎独立在数据库之外,一个单独的进程,崩溃了不会影响运行时,将来还能在解码和写入之间做数据脱敏。PGSync 的崩溃恢复做得也很彻底:SIGKILL 之后自动从检查点恢复,重复事务靠 LSN 识别并跳过。目前是技术预览版,版本号 0.1.1,官方明确说还没有数据脱敏,所以别往生产客户数据上指。

PGSync 只是 PGRun 生态的一小块。PGRun 自己主打的是每个 agent 一个 Postgres 分支,让 AI 代理、CI、PR 都拿到独立的数据库实例。同一批工具里还有 pgbot,一个只读的 Postgres 健康检查器,输出 findings-first 的报告,支持 MCP,AI agent 可以直接调用。3D 地图也是这个生态的延伸。作者在推文里说,他花了一个小时逛这个 3D 地图,有点上瘾。另一个网友评论:可观测性应该是一种可探索的体验,而不是盯着仪表盘发呆。作者回复:完全同意。

数据库文档如果都做成这样,谁还看 PDF。

发布时间: 2026-10-16 21:17