内容提要
2024年5月28日,PostgreSQL扩展生态系统峰会在温哥华的PGConf.dev举行。讨论的主题包括扩展元数据、二进制分发格式、API和ABI兼容性,以及核心中包含/排除扩展和命名空间的潜在核心变化。参与者表达了安装和使用多个版本扩展的需求,更深入的命名空间和ABI兼容性政策。讨论受到了良好的反响,并计划明年再次举办峰会。
延伸解读
扩展升级的潜在风险
峰会指出,二进制扩展升级存在一个危险窗口:当扩展包通过Yum或Apt升级后,数据库中的扩展尚未执行ALTER EXTENSION UPDATE,此时新二进制可能与旧版本不兼容,导致扩展失效甚至使Postgres崩溃。在数据分析等环境中,多个数据库和函数可能依赖该扩展,用户可能无法及时更新所有依赖代码。防御性编码可以缓解问题,但会增加维护复杂度。
ABI兼容性与API分类的迫切需求
讨论发现,Postgres小版本间可能存在不兼容的ABI变更,导致扩展必须为每个小版本单独编译和分发。与会者提出多项改进思路:梳理并分类扩展可用的API,用颜色标记安全等级(绿、黄、红),设计更好的钩子注册与调用机制,以及建立测试农场在核心发布前定期构建和测试扩展。这些措施旨在降低扩展开发者的适配负担。
核心与扩展的边界权衡
关于扩展纳入或移出核心的讨论强调,核心新增功能可能替代某些扩展,从而简化用户使用,但扩展的独立开发周期更快,且能促使核心更好地支持扩展。目前contrib扩展还承担着测试扩展基础设施的角色,若移入核心可能减少测试覆盖,但有与会者提议将相关测试直接加入核心。会议列出了amcheck、pageinspect等可考虑合并的contrib扩展。
多版本扩展与命名空间的核心诉求
多个议题反复提及同时安装和使用多个版本扩展的需求,以及更深层命名空间的支持。这有助于解决扩展升级难题和命名冲突,尤其是针对不可重定位扩展。此外,与会者还希望将扩展元数据从磁盘移至系统目录,并建立“安全”扩展注册表,允许非超级用户安装。这些核心层面的改动被视作改善扩展生态的关键方向。
Q&A
2024年PostgreSQL扩展生态系统峰会的主要讨论主题是什么?
主要讨论了扩展元数据、二进制分发格式、API和ABI兼容性,以及核心中包含/排除扩展的潜在变化。
峰会中提到的扩展元数据的两个类型是什么?
扩展元数据包括开发者提供的元数据和用户元数据,前者涉及外部依赖,后者包括用户评分等。
峰会讨论了哪些关于二进制分发格式的建议?
建议采用类似Python wheel的扩展二进制分发格式,并探讨通过OCI分发包的可能性。
与会者对多个版本扩展的需求有什么看法?
与会者普遍关注安装和使用多个版本扩展的需求,并讨论了相关的ABI兼容性政策。
关于核心中包含或排除扩展的讨论中,主要关注了哪些方面?
讨论集中在何时将扩展纳入核心,以及何时应将贡献扩展从核心中移除,强调核心功能替代扩展的必要性。
峰会计划何时再次举办?
计划在明年再次举办峰会,继续探讨扩展相关话题。