自省 自行 自醒

三十年一梦,从 Post-Ingres 到 PostgreSQL 的蜕变之旅

Word count: 1.5kReading time: 6 min
2025/07/06
loading

前言

最近闲暇之余,特意去详细了解了一下 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 YuJolly 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)

  1. [HACKERS] 邮件列表文化:任何人都可提案、争论,最终以“共识”决策,无公司控股。
  2. CommitFest 流程:每年多次月度评审,9 月左右固定大版本发布,确保节奏稳定。
  3. 增量主义:功能拆小步,审慎合并,可靠性永远第一位,所以可以看到,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

CATALOG
  1. 1. 前言
  2. 2. 第一幕 | 石墨伯克时代 (1976 – 1994)
    1. 2.1. Post‑Ingres:敢于否定自己的续作
    2. 2.2. 大学实验室的”爆肝”迭代
  3. 3. 第二幕 | 两个研究生的“副本” (1994 – 1996)
  4. 4. 第三幕 | 社区的火种与更名 (1996 – 1997)
  5. 5. 第四幕 | 商业化与 Fork 的黄金年代 (1997 – 2004)
  6. 6. 第五幕 | 现代社区治理 (2005 – Now)
  7. 7. 第六幕 | 技术演进速查表
    1. 7.1. 可靠性
    2. 7.2. 远程数据访问 (Remote Data Access)
  8. 8. 终章 | PostgreSQL 的成功密码
  9. 9. 小结
  10. 10. 参考