内容提要
本周的Postgres Extension生态系统迷你峰会讨论了构建Postgres扩展的动机和问题,介绍了Trunk作为Postgres扩展注册表和CLI的背景和功能,讨论了二进制打包和分发的挑战,以及如何管理不同平台和Postgres版本的扩展。还讨论了PGXN、Apt和Yum等扩展存储库,并提出了改进扩展管理和安装的建议。
延伸解读
Trunk 的定位与局限
Trunk 是 Tembo 为 Tembo Cloud 打造的扩展注册表和 CLI,支持二进制打包和安装,目前管理约 200 个扩展。它使用 Docker 构建扩展,并支持多种架构和 PostgreSQL 版本。但讨论中也指出,Trunk 目前对 macOS 等非 Linux 平台支持不足,且缺乏类似 apt 的已安装扩展管理功能,如列表、卸载和版本追踪。
扩展生态的标准化机遇
会议多次提到扩展生态缺乏最佳实践,在构建、版本管理和发布方面尤为混乱。这被视为建立社区标准的机会。PGXN 的 META.json 规范可能成为中心,David Wheeler 正在推动其 v2 版本,计划扩展以包含外部依赖、架构支持等信息,并引入 JSON Schema 验证,以简化发布和安装流程。
二进制分发的多维挑战
二进制分发需应对操作系统、架构、PostgreSQL 版本、芯片指令集等多维度组合。Steven Miller 提到,Trunk 已支持 arm 等架构,但 macOS 构建仍困难。依赖管理也是难点,构建时依赖可通过 Dockerfile 指定,但运行时依赖需通过测试发现。社区建议参考 Pip 和 Wheel 的混合源码与二进制模式,并利用 GitHub 工作流或社区构建农场来生成多平台二进制包。
社区协作与未来方向
演讲者反思早期未充分与社区互动,强调社区参与对解决扩展管理问题至关重要。讨论中提出建立系统数据库来管理已安装扩展和版本,类似 apt 的机制。此外,有建议将扩展存储在数据库中,但面临安全挑战。未来希望围绕 PGXN 元数据规范,通过社区合作推动扩展管理的标准化和工具改进。
Q&A
Postgres扩展生态系统迷你峰会讨论了哪些主要内容?
会议讨论了构建Postgres扩展的动机、Trunk的功能、二进制打包和分发的挑战,以及扩展管理的最佳实践等问题。
Trunk在Postgres扩展管理中有什么作用?
Trunk是一个Postgres扩展注册表和CLI,支持Tembo Cloud的扩展管理,允许用户安装和启用多达200个扩展。
在扩展管理中面临哪些挑战?
扩展管理面临的挑战包括不同平台和Postgres版本的兼容性、扩展的依赖关系和版本管理,以及缺乏最佳实践。
社区参与在Postgres扩展生态系统中有多重要?
社区参与被认为至关重要,能够帮助建立标准和最佳实践,推动扩展管理的改进。
如何处理Postgres扩展的依赖关系?
处理扩展的依赖关系需要建立一个系统数据库,以管理已安装的扩展和版本,并确保在安装时能够识别和解决依赖问题。
PGXN、Apt和Yum等扩展存储库的优缺点是什么?
PGXN是社区支持的源代码存储库,缺乏二进制支持;Apt和Yum是二进制存储库,但扩展数量较少,且添加过程较为繁琐。