内容提要
本文讨论了PostgreSQL扩展生态系统的问题和挑战,包括PGXN作为扩展分发系统的问题和建议重新设计和实现PGXN的组件。作者希望通过讨论和社区共识来确定下一步的发展方向。
延伸解读
PGXN 的架构优势与遗留问题
PGXN 采用注册表与 API 服务解耦的设计,通过 rsync 和静态 JSON 文件实现分布式分发,这一先例具有前瞻性。然而,其技术栈陈旧:核心用 Perl 编写,客户端用 Python,工具用 Ruby,增加了维护复杂性和分发难度。搜索 API 依赖 2018 年退役的 Apache Lucy,且索引设计不合理,导致搜索体验差。这些遗留问题使得 PGXN 在现代扩展生态中面临挑战。
扩展发布与索引的自动化需求
PGXN 未能全面索引所有公共 PostgreSQL 扩展,且发布过程 largely 手动。虽然 pgxn-tools Docker 镜像改善了自动化测试和发布,但仍需开发者投入额外精力。要成为真正的权威注册表,必须简化开发者注册扩展的流程,并让发布更加无缝。这需要社区在工具和流程上进一步创新,降低贡献门槛。
技术栈现代化与社区身份整合
文章建议采用 Go 或 Rust 等现代编译语言重写 PGXN 组件,以提高社区可信度、吸引贡献并简化分发。同时,PGXN 目前使用简单的身份管理和基本认证,未来可考虑通过 PostgreSQL 社区账户实现更紧密的身份整合。这些改进有助于提升 PGXN 的可持续性和用户体验。
PGXN 的未来:重建还是替代?
面对诸多挑战,社区需要决定是继续在 PGXN 基础上构建、重写部分或全部组件,还是放弃它并寻找新服务。这一决策可能源于整体扩展生态架构的设计,也可能来自社区共识。作者强调,无论如何,都需要一个明确的答案,并计划在二月份开始实质性建设,现在正是讨论和确定方向的关键时刻。
Q&A
PGXN是什么?它是什么时候创建的?
PGXN是PostgreSQL扩展网络(PostgreSQL Extension Network)的缩写,是最初的扩展分发系统,创建于2010-2011年。
PGXN目前面临哪些主要挑战?
PGXN面临的主要挑战包括:未全面索引所有公共PostgreSQL扩展;发布扩展过程 largely 手动;使用Perl编写,缺乏现代感;pgxnclient使用Python,pgxn-utils使用Ruby,增加维护复杂性;搜索API使用已退役的Apache Lucy,搜索功能不佳;使用简单的身份管理和基本认证。
为什么PGXN的搜索功能不好用?
PGXN搜索API使用了2018年退役的Apache Lucy搜索引擎库,并且为不同对象暴露了单独的搜索索引,要求用户选择搜索哪个索引,导致用户经常找不到所需内容。此外,默认索引是“Documentation”,但大多数扩展只有README,而README出现在“Distribution”索引中,因此搜索效果差。
PGXN使用哪些编程语言编写?这带来了什么问题?
PGXN本身使用Perl编写,pgxnclient使用Python,pgxn-utils使用Ruby。这增加了维护所有工具所需的知识和技能范围,并且这些动态语言编写的工具比编译型工具更难分发。
对于PGXN的未来,有哪些可能的选项?
可能的选项包括:继续在PGXN基础上构建、重写部分或全部组件,或者放弃它并寻找新服务。最终答案可能来自整体扩展生态系统架构的设计或社区共识。
PGXN在扩展分发方面做了哪些改进?
PGXN提供了pgxn-tools Docker镜像,允许开发者创建相对简单的GitHub工作流来自动测试和发布扩展,改善了发布过程,但仍需要开发者的意图和努力。