Postgres 先驱 Stonebraker 承诺将颠覆数据库

导读:一位图灵奖获得者、超级资深技术专家,他的初创技术公司在五年内就取得了突破性进展,他告诉开发者们,他还有更多的锦囊妙计。

“如果我们准备在数据库之上构建操作系统,和现在的样子正好相反,会是什么样的情况?”

这乍听起来像是一名本科生在服用过多剂量兴奋剂后提出的想法,但事实上并非如此。

其实这是一个很严肃的思考,来自一个已经颠覆了计算行业的人,而且他的影响力已经扩展到微软与甲骨文的产品线中。

今年,人们为他隆重庆祝了 80 岁生日,这就是 Michael Stonebraker (米歇尔.斯通布雷克)。

虽然已经是这个年纪,但他仍然持续自己的数据库研发工作。

Michael Stonebraker在IT世界中给人们的最深印象是来自 PostgreSQL 这个产品。PostgreSQL 是一个开源关系数据库系统,近年来,已经日趋成为开发主要流行的数据库选项。

根据 2023 年 Stack Overflow 调查数据,今年的开发者使用该数据库系统的数量最多。除了成为流行的开源 DBMS 之外,包括超大规模云提供商、CockroachDB 和 YugabyteDB 在内的供应商都提供有 PostgreSQL 兼容的云数据库服务。

Stonebraker的“光辉岁月”

Stonebraker 的第一个有影响力的作品始于早期关系数据库系统 Ingres,这个系统是他在 1971 年被任命为加州大学伯克利分校助理教授后的研究课题。

他在接受采访时表示:“我的博士论文是关于马尔可夫链的一个方面,我意识到它没有任何实际价值。我于是到了伯克利,我想用五年的时间做出实质贡献,并获得终身教职。我想找一个产品让它成为我的论文主题。伯克利的另一位教员尤金·王 (Eugene Wong) 跟我说,“我们为什么不看看数据库呢?”

于是两人阅读了 IBM 研究员Edgar Codd新提出的一项和关系数据库有关的提案,名为“大型共享数据库的数据关系模型”。

两个人觉得这个英国人的想法优雅并且很简洁。

“当初显而易见的问题,我们确实想尝试构建一个关系数据库系统。尤金和我都没有构建系统软件的经验。虽然我们都是老师,但我们都认为,一定要尝试一下,看看会发生什么,因此就算没有经验,我们开始开发 Ingres,这也是我后来获得终身职位的原因。”

Ingres也存在竞争性产品,而 IBM 的 System R 就是,后者是第一个展示关系方法,可以提供工作事务性能的系统,也是第一个实现 SQL 全支持的系统。

此外,爱钱的Oracle 在 20 世纪 70 年代后期就开始使用关系型数据库系统。

Ingres 还必须直面多操作系统问题。

Stonebraker在回想刚开发Ingres时的情况这样说道:

“有很多人访问伯克利大学,经常询问我们谁是 Ingres 的最大用户群。后来亚利桑那州立大学希望将Ingres用于记录 35,000 名学生的数据库,但他们没法克服操作系统不受支持的事实,还有来自贝尔实验室的一些人,他们正在用纯种的 Unix”。

于是,Ingres 的目标市场描准了 Unix “中端”系统,它当时也没有当时支持商业计算的主流语言 COBOL。

Stonebraker 于是下定决心:

“唯一的解决方案,就是创办一家全新的数据库公司,”

他继续创建关系技术来,然后将 Ingres 商业化。后来公司更名为 Ingres Corporation,并于 1990 年被 ASK Corporation 收购,ASK Corporation 又在 1994 年被 Computer Associates 收购。

Ingres 团队的另一位成员 Robert Epstein 也走出来创建了 Sybase,该公司在十年内的全球排名中仅次于 Oracle。1992年,Sybase产品被授权给了微软,微软将它用在了早期版本的SQL Server。

当时Ingres 的商业代码库远远领先于开源项目,公司的研发人员只需支付象征性的费用即可获得源代码,其中包括存储所需的磁带和快递费用。

于是,Stonebraker 决定将这些代码推向悬崖,全部扔掉,重新开始。

Ingres之后叫什么名字?他们称为 “ Postgres ”。

Postgres 新时代

1986 年,Ingres 与 Larry Rowe 共同撰写的一篇 28 页论文,在上面宣布了 Postgres 的设计,并提出了六个指导性目标。其中有两个与数据库系统的寿命有关:一是为复杂对象提供更好的支持;第二个是为数据类型、运算符和访问方法,提供给用户良好的可扩展性。

Stonebraker 对可扩展性深有感受,他知道这个对于未来数据库的成功非常重要。

他举到一个例子,有一次客户打电话给他说,‘你那东西执行的时间全错了’。

这位伯克利教授当时感到异常困惑,因为他的团队已经竭尽全力确保正确实施儒略历、闰年等历法的计算。但有些金融行业公司是在一年 360 天的 12 个相同的月份中支付的,这在 Ingres 中无法实现,后来在 PostgreSQL 中完全可用。

使数据库可扩展的想法,有一部分还来自于想要支持新的数据类型。Ingres 的在早期时还想作地理信息系统,远离其业务数据的主战场,因为这个系统“非常缓慢,且经常无法修复”。

这一愿景在过去十年的努力中得到了回报。在这段时间里,PostgreSQL添加了对 Json 文档的支持,这是 NoSQL 数据库 MongoDB 和 Couchbase 所支持的文件格式。

Stonebraker公开批评过NoSQL 运动,后者被批评后正积极在与关系数据库融合,它们采用 SQL 或类似 SQL 的语言,并且接受了数据一致性的需求。

NoSQL 的优点就是开箱即用。如果使用标准的 SQL 数据库,你必须先创建数据库,然后定义游标,这些对于一些非专业用户很难使用。这是针对 SQL 数据库的常见批评之一,而且“开箱即用”的体验很糟糕。人们其实想在打开数据库时对它说,我要有一些数据。”

后来,可用于提供 PostgreSQL 和 PostgreSQL 兼容数据库的各种服务在某种程度上解决了这个问题。

DBMS 作为开源系统的出现是一个“意外”,但令人惊喜,Stonebraker 的项目开始时与开源无半毛钱关系。

该数据库的研究代码曾经并且仍然是开源的,但是用它建立一家数据库公司是根本不可能的。Stonebraker 在 1992 年创立 Illustra ,他说:“当我们为 Ingres 和 Postgres 获得风险投资资金时,风险投资将与开源无关,那是后来的现象”。

2005 年,Stonebraker 创立 Vertica,该公司基于用于数据仓库的无共享、面向列的 DBMS,他现在表示“如果当时就开源的话,Vertica 将受益匪浅,但那时开源代码和 VC 的活力是一个相对较新的现象。”

“闭源数据库不是未来潮流”