内容提要
2026年9月Postgres EDI聚会回顾:Jimmy Angelakos介绍ColdFront,可将Postgres冷数据以Iceberg表存至对象存储,仍可从Postgres查询,并用TLA+建模多节点写入协议。Daniel Roe展示Nuxt、Nitro与db0连接Postgres并现场编码,还谈开源渐进采用与团队协作。下次10月15日由Snowflake的Elizabeth Garrett Christensen讲Postgres 19新特性。
延伸解读
ColdFront 如何实现冷数据分层
ColdFront 将 Postgres 中的冷行以 Apache Iceberg 表形式移至对象存储,数据以列式 Parquet 格式保存,但仍可从 Postgres 查询,应用只需查询一个关系。其架构精简:Postgres 保留表和 SQL,pg_duckdb 在进程内读写 Iceberg,Lakekeeper 作为目录,对象存储复用现有设施。这种设计让冷数据对应用透明,无需修改查询逻辑。
多节点写入的并发控制与形式化验证
当冷层可写且多个 Postgres 节点同时写入时,共享单个 Iceberg 目录和存储桶会引发冲突。ColdFront 采用“取票”机制,在每次冷写入前先获取票据,避免两个写入者碰撞。团队没有依赖直觉,而是用 TLA+ 对协议建模验证,确保并发安全。这体现了对分布式写入一致性的严谨态度。
从 Nuxt 连接 Postgres 的路径
Daniel Roe 展示了从 Nuxt 到 Postgres 的完整链路:Nuxt 是基于 Vue.js 和 Nitro 的渐进式框架,向下经过 UnJS 和 Nitro 到达 db0。db0 是一个轻量 SQL 连接器,为多种驱动提供统一 API 并自动参数化查询,Postgres 是支持的驱动之一。他现场编码了一个连接 Postgres 的端点,说明前端框架也能便捷地操作数据库。
开源项目的渐进采用与团队协作
Daniel Roe 分享了开源建设经验:追求渐进采用,让项目可发现、可增量采用且向后兼容;同时避免自己成为瓶颈。他提出“10x 团队”理念,即由关心同一问题的人组成,一起迭代、互相促进。这些观点对 Postgres 社区也有借鉴意义,尤其是如何吸引外部贡献者和保持项目活力。
Q&A
ColdFront 是什么?它如何实现 PostgreSQL 冷数据分层存储?
ColdFront 是 Jimmy Angelakos 在 PostgresEDI 聚会上介绍的工具,它把 Postgres 中的冷行以 Apache Iceberg 表的形式(列式 Parquet 格式)移动到对象存储,同时保持这些数据仍可从 Postgres 中查询,就像从未离开一样。其设计精简:Postgres 保存表和 SQL,pg_duckdb 在进程内读写 Iceberg,Lakekeeper 作为目录,对象存储使用现有存储。应用程序继续查询同一个关系。
ColdFront 如何处理多个 Postgres 节点同时写入冷层的问题?
当冷层可写且多个 Postgres 节点同时写入时,ColdFront 在每次冷写入前先取一个“票”(ticket),确保两个写入者不会发生冲突。该协议使用 TLA+ 进行了建模,而不是仅凭直觉。
Daniel Roe 在聚会上演示了如何从 Nuxt 连接 Postgres?
Daniel Roe 展示了从 Nuxt 连接 Postgres 的路径:Nuxt 是基于 Vue.js 和 Nitro 的渐进式框架,通过 UnJS 和 Nitro 向下到 db0——一个轻量级 SQL 连接器,为多种驱动提供统一 API 并自动参数化查询。Postgres 是其中一种驱动,他最终现场编码了一个针对 Postgres 的端点。
Daniel Roe 对开源项目的渐进式采用和团队协作有哪些观点?
Daniel Roe 认为开源项目应追求渐进式采用,使项目可发现、可增量采用且向后兼容,同时注意不要让自己成为瓶颈。他还提倡“10x 团队”,即关心同一问题、一起迭代、互相促进的人组成的团队。
ColdFront 的演讲者接下来会在哪些活动上介绍它?
ColdFront 的演讲者 Jimmy Angelakos 将在伦敦 PostgreSQL Meetup Group(10月7日周三)和 Apache Iceberg Europe meetup(10月8日周四)上做简短演讲。
PostgresEDI 下一次聚会是什么时候?主题是什么?
下一次聚会是 10 月 15 日周四,由 Snowflake 的 Elizabeth Garrett Christensen 讲解 Postgres 19 的新特性,以及 Postgres 18 中被忽略的部分。地点在爱丁堡大学 Paterson's Land 大楼 1.21 房间,18:00 开门。