前言
最近闲暇之余,特意去详细了解了一下 PostgreSQL 的历史,作为如今炽手可热的现象级数据库,其也并非一蹴而就,而是一段跨越近半个世纪的跌宕旅程。本文依据 Peter Van Hardenberg 在 The Amazing Long History of PostgreSQL 演讲中的材料,对 PostgreSQL 的演进史做一次”故事化”梳理。
第一幕 | 石墨伯克时代 (1976 – 1994)
Post‑Ingres:敢于否定自己的续作
- 1976 年,Michael Stonebraker 在加州大学伯克利分校从 Edgar F. Codd 的关系代数理论中得到启发,开发了关系数据库 INGRES (Interactive Graphics and Retrieval System),INGRES 也推出了自己的查询语言 QUEL。
- 1986 年《The Design of POSTGRES》论文提出了可扩展数据类型与规则引擎等超前概念,为后来的 JSON、GIS、FDW 埋下伏笔。刚凭 INGRES 成名的 Michael Stonebraker 在伯克利再次立项,目标是”下一代”数据库 — POST‑GRES (POST INGRES),顾名思义,旨在超越 INGRES 的局限,解决 INGRES 在可扩展性、规则支持、复杂应用等方面的不足,同时提供了规则引擎。
大学实验室的”爆肝”迭代
WE WOULD RECRUIT THE SMARTEST [STUDENTS] WE COULD FIND, GIVE THEM WONDERFUL EQUIPMENT, AND THEY WOULD BASICALLY DIE WRITING CODE FOR US
“我们会找来最聪明的学生,给他们最好的设备,然后他们就会为我们拼命写代码。” —— Stonebraker
1987 – 1994 被称为 University Era:Postgres 1.0→2.0→3.0→4.2,每一个版本都重写核心子系统。
1992 商业分支 Illustra 诞生,却“一将功成万骨枯”,让实验室经费告急。
1994 伯克利 Postgres Lab 正式关闭,项目似乎走到尽头。
第二幕 | 两个研究生的“副本” (1994 – 1996)
当大家以为故事结束,Andrew Yu 与 Jolly Chen 两位研究生把 Postgres 4.2 搬回宿舍,改写 QUEL 为 SQL,于是 Postgres95 正式诞生了。
IT SEEMED LIKE IT WOULD BE ABOUT AS HARD AS A UNIVERSITY CLASS PROJECT. —— Jolly Chen
只有最朴素的 SELECT/INSERT,没有外键、MVCC,也没有 JOIN,更没有窗口函数,“看起来就像是一次大作业”。早期用户画像:工位用商用数据库,下班想在家玩 SQL,但买不起 Oracle,于是 “Postgres kinda worked”。—— Postgres 看起来有点用 ~
第三幕 | 社区的火种与更名 (1996 – 1997)
1996 年 4 月,Jolly 在邮件列表贴出 TODO,呼吁志愿者
If all the items on the TODO list were completed, postgres95 would be much improved, and would really be a viable replacement for commercial RDBMSs in some settings. Some of the items require quite a bit of work and deep knowledge of postgres95 internals, though. We would need a few contributors with quite a lot of volunteer hours to make this happen anytime soon. (A large number of contributors each with only a little bit of time to contribute would not be equivalent).
1996 年 07 月,Marc “Scrappy” Fournier 把 1.01 代码丢进 CVS,仿效 FreeBSD 建公共仓库,意味着 开源协作基建就位
First stage will be to get a cvs archive of postgres 1.01 online tonight, with a sup server so that everyone has access to the source code. If anyone has any patches they wish to submit based off of 1.01, please send them to postgres@ki.net and I’ll commit those in as soon as cvs is up and running.
同月,Bruce Momjian 主动当“Bug Tracker”整理补丁,Bruce 大管家正式启航。
1996 年 12 月 11 日,历史性的一刻,commit 9b41da6c:postgres95 → PostgreSQL,从此“Post‑gres‑cue‑ell”成为官方名
这里也可以看到,PostgreSQL 的读音正确读法是 Postgres-Q-L,或者 Post- Gres (下一代的 INGRES),而不是现在很多人习惯性的念法——Postgre-SQL,
It might help to explain that the pronunciation is “post-gres” or “post-gres-cue-ell”, not “post-gray-something”.
1997 开始,来自美国、加拿大、俄罗斯、日本等国的开发者陆续加入,一封封邮件把一款学生项目推向全球,彰显了社区强大、稳健的发展节奏和自由、活跃的开源氛围,PostgreSQL 正式成为一款全球性的项目。
第四幕 | 商业化与 Fork 的黄金年代 (1997 – 2004)
- GreatBridge (2000):融资 4000 万美元,却在 16 个月烧光,验证了“太早等于失败”。
- EnterpriseDB (2004):至今仍活跃的首个成熟商用发行版。
- MPP / 云分析:Netezza 7.2、Greenplum 7.4、Amazon Redshift 8.0 等基于旧版 Pg 二次开发后又回馈社区。
- 时序与实时:CitusData、TimescaleDB、PipelineDB……Fork 百花齐放,BSD 许可证让生态更繁荣而非分裂。
第五幕 | 现代社区治理 (2005 – Now)
- [HACKERS] 邮件列表文化:任何人都可提案、争论,最终以“共识”决策,无公司控股。
- CommitFest 流程:每年多次月度评审,9 月左右固定大版本发布,确保节奏稳定。
- 增量主义:功能拆小步,审慎合并,可靠性永远第一位,所以可以看到,PostgreSQL 对于较大的特性一直都比较”保守”。
第六幕 | 技术演进速查表
可靠性
远程数据访问 (Remote Data Access)
终章 | PostgreSQL 的成功密码
Right time, right place + 可扩展特性 + 宽松许可证 + 谦逊务实的全球社区 = The People’s Unicorn。
- 合时机:SQL 崛起、互联网爆发,开源需求井喷。
- 可扩展:类型、索引、FDW、插件化架构让任何垂直场景都能“投胎”到 Pg。
- BSD 许可证:允许闭源商业化,也反向滋养主线。
- 社区文化:邮件列表共识 + CommitFest 浴火锻造可靠性。
小结
从伯克利地下实验室的习作,再到如今现象级的顶级数据库,PostgreSQL 用近半世纪向我们证明:只要足够开放、足够谦逊、足够坚持,一粒学生时代播下的种子也能长成参天大树。社区的每一次邮件争辩、每一场 CommitFest、每一行审慎提交的代码,都是这棵大树的年轮。纵观 PostgreSQL 的发展史,我们敬佩 Stonebraker 的先知胆识,更感激无数匿名黑客的默默耕耘,也希望有生之年,能够一直在 PostgreSQL 这条赛道上耕耘。
写在最后:你第一次使用 PostgreSQL 是哪个版本?不妨在评论区聊聊你的故事。
参考
The Amazing Long History of PostgreSQL