作者 | 核子可乐、Tina
编译 | 核子可乐、Tina
刚刚过完 80 岁生日的 Michael Stonebraker 没打算退休,近年来他又开始了新的尝试,希望再一次改变世界。
相较于目前在操作系统之上运行数据库的通行作法,如果我们反其道而行之,在数据库之上构建操作系统,结果又会如何?这听起来似乎是初学者在喝多了之后的胡言乱语,但实际上却是经过审慎考量的结论。这一严肃思路来自这位图灵奖获得者、这位已经颠覆了计算行业的先驱。
Michael Stonebraker 在数据库领域具有相当重要的地位。有人戏称 Stonebraker 是数据库领域的“祖师爷”:“赏了无数人饭吃的那种”。通过一系列学术原型和商业初创公司,Stonebraker 的研究和产品成为当今市场上许多关系数据库系统的核心。
70 年代的 Ingres 和 80 年代的 Postgres 影响了几乎所有普通从业者所听过的数据库系统,列存储的 C-Store 论文演变成了 Vertica 。内存的 H-Store 论文演变成了 VoltDB 。Vertica 和 VoltDB 在商业市场上也极为成功。2014 年,Stonebraker 因其对 Ingres 和 Postgres 的巨大贡献而获得图灵奖。
现在,Stonebraker 创立的公司在五年之内取得了突破性进展,后续还将有更多颠覆性思路逐一落地。
虽然年过 80,Stonebraker 仍在继续自己的数据库研究工作,他给技术行业留下的最大财富就是 PostgreSQL。PostgreSQL 是一套开源关系数据库系统,并在 2023 年的 Stack Overflow 调查中首次成为开发者们最喜爱的数据库选项。除了作为高人气开源 DBMS 之外,各家云超大规模运营商、CockroachDB 以及 YugabyteDB 等厂商也都在提供与 PostgreSQL 前端相兼容的数据库服务。
Stonebraker 的首个拥有广泛影响力的成果,是早期关系数据库系统 Ingres,即他 1971 年担任加州大学伯克利分校助理教授时的研究课题。
在采访当中,他表示“我的博士论文本打算从特定角度讨论马尔可夫链,但我很快意识到这没有任何实际价值。后来我前往伯克利,那边要求新人在五年之内钻研新课题以争取终身教职。我知道马尔可夫链实在没什么意思,于是伯克利大学另一位教员 Eugene Wong 提议,「咱们为什么不研究研究数据库呢?」”
二人阅读了 IBM 研究员 Edgar Codd 当时提出的一项关于关系数据库的提案,名为《一种大型共享数据库的数据关系模型》。
Stonebraker 和 Wong 为这位英国人优雅而简洁的思路而折服。“接下来的工作就很明确了,尝试根据这样的数据关系建立一套关系数据库系统。虽然 Eugene 和我都没有构建系统软件的经验,但作为学者,我们都觉得不妨一试、看看能做到什么程度。于是我们两个说干就干,开始构建 Ingres,我也最终借此在高校中获得了终身教职。”
Ingres 并非没有竞争对手。IBM 的 System R 才是第一套尝试采用关系方法实现可用事务性能的系统,还最早实现了如今大名鼎鼎的 SQL 方法。与此同时,甲骨文也在上世纪 70 年代后期尝试开发关系系统。再有,Ingres 还必须克服平台方面的问题。
他回忆道,“当时有很多人造访伯克利,并问我们 Ingres 的最大用户是谁。后来亚利桑那州立大学希望用 Ingres 来管理包含 3.5 万名学生的记录数据库,但却发现 Ingres 没办法在贝尔实验室提供的操作系统之上正常运行——这套系统就是 Unix。”
Ingres 的目标市场定位于中端,而 Unix 在这一领域中刚刚出现,因此并不支持当时商业计算领域的主导语言 COBOL。
Stonebraker 表示,“唯一的解决办法,就是创办一家公司。”
于是他继续为关系数据库技术、特别是 Ingres 的商业化发展而努力。这家后来被更名为 Ingres Corporation 的公司于 1990 年被 ASK Corporation 收购,ASK 又于 1994 年被 Computer Associates 收购。伯克利 Ingres 团队的另一位成员 Robert Epstein 随后创立了 Sybase,这家企业曾有十年在全球关系数据库市场排名中仅次于甲骨文。1992 年,其产品线被授权给微软,相关技术被引入早期版本的 SQL Server。
但 Stonebraker 不得不承认 Ingres 的商业代码库要远远领先于开源研究项目,毕竟其他研究人员只需要支付象征性的费用(其中还包括存储软件所使用的磁带和寄送费用)就能获取开源代码。因此,他的团队决定推倒重来,在 Ingres 之后重新打造一款真正强大的开源关系数据库——这就是 Postgres。
时间来到 1986 年,Stonebraker 与 Larry Rowe 共同撰写了一篇 28 页的论文,正式公布了 Postgres 数据库的设计,同时提出六项指导性目标。其中有两条直接决定了这套数据库系统的长久存续——其一是为复杂对象提供更好的支持,其二是为数据类型、运算符和访问方法提供用户可扩展空间。
Stonebraker 在采访中指出,通过与 Ingres 客户的交流,他意识到可扩展性对于未来数据库的成功非常重要。“有一次,这位客户打电话过来,告诉我「你的时间系统全都是错的」。”
这可把这位伯克利教授搞懵了,毕竟他带领的团队可是竭尽全力保证在数据库内正确实现了儒略历、闰年等设计。然而,某些金融债券的偿付周期是把一年视为 360 天、每个月则是均等的 30 天。对此 Ingres 根本无法实现,但在 PostgreSQL 中可以。
此外,增强数据库可扩展性还是为了支持新的数据类型。Ingres 中的一个早期项目就试图存放地理信息数据,而这明显背离了其管理业务数据的既定思路。Stonebraker 坦言,Ingres 在这类用例中“速度非常缓慢且无法修复”。
经过十年的努力,这个正确但却无比艰难的选择终于带来回报。十年之前,PostgreSQL 添加了对 JSON 文档的支持,即 NoSQL 数据库 MongoDB 和 Couchbase 所采用的文件格式。
Stonebraker 此前曾公开批评过 NoSQL 运动。他在采访中强调,NoSQL 正在与关系数据库融合,因为二者均采用 SQL 或者类 SQL 语言,而且能够满足一致性方面的需求。
“NoSQL 最大的亮点就在于开箱即用的体验。毕竟在使用 SQL 数据库时,大家首先需要完成数据库构建、之后再定义 cursor 游标,整个过程非常困难。这也是当时 SQL 数据库最受诟病的一点,开箱即用体验特别差劲。我们应该可以直接打开,马上使用里面的数据。”
而面向 PostgreSQL 及其他兼容数据库的各类服务,在一定程度上解决了这个问题。不过这款开源 DBMS 系统的真正流行完全是个意外,Stonebraker 认为自己并没在推广上做过多少努力。
Stonebraker 在 1992 年创立 Illustra 时就意识到,虽然尽管这套数据库的研究代码曾经、现在也仍然开源,但以此为基础建立一家数据库公司并不现实。“当时我们为 Ingres 和 Postgres 申请风险投资时,投资方都没有将开源视为注资的理由。开源的投资吸引力到后来才逐渐体现出来。”
2005 年,Stonebraker 创立了 Vertica,这是一家专为数据仓库提供非共享、面向列的 DBMS 的公司。他现在认为“如果选择开源,那么 Vertica 的发展会更加顺利。但开源项目在风险投资领域的爆红是近年来才有的现象,当时根本无法预见。”
Illustra 公司也曾拥有自己的辉煌岁月。据《福布斯》杂志 1997 年的报道,该公司于 1996 年以约 4 亿美元价格被 Informix 所收购,其中 Stonebraker 持有的股份价值 650 万美元。Stonebraker 随后还在 Informix 母公司担任了四年 CTO。
虽然 650 万美元已经相当可观,但与 Larry Ellison 高达 1450 亿美元的净资产估值相比,只能算是小菜一碟。不用说,Stonebraker 对于关系模型的另一位早期采用者甲骨文也是评价不高。“Ingres 一直在技术层面上占优,而 Postgres 则更进一步。它不仅更灵活,而且是开源项目。从当下来看,PostgreSQL 与 Oracle 数据库的性能大致相当。我认为闭源数据库不符合时代发展的趋势,毕竟 Oracle 数据库价格很高而且不太灵活。”
尽管如此,甲骨文的技术选型仍然推动了开源 PostgreSQL 的发展。甲骨文买下了开源 MySQL,但社区中的不少成员拒绝接受这样一款软件被掌握在专有软件巨头手中。于是在 Illustra 等厂商将 Postgres 商业化的同时,伯克利在 MIT 许可之下发布了 POSTGRES 代码,允许其他开发者以此为基础进行后续开发。
1994 年,伯克利大学毕业生 Andrew Yu 和 Jolly Chen 用 SQL 取代了查询语言 POSTQUEL。由此诞生的 Postgres95 在更宽松的许可下免费开放并接受修改,后续被正式更名为 PostgreSQL。
Stonebraker 评论道,“最终,Illustra 获得了高度关注。而更令人兴奋的是,这群我根本不认识的社区成员接过了开源 Postgres 代码,并开始进行我毫不知情的修改和设计。这真是一场奇妙的意外。”
“当 MySQL 被甲骨文收购时,开发者们普遍产生了怀疑情绪,并纷纷转向 PostgresSQL。这又是另外一个预料之外的走向。PostgreSQL 的商业成功固然令人振奋,但整个过程实属偶然。”
与此同时,数据库服务也开始围绕 PostgreSQL 不断发展,使其成为谷歌(AlloyDB 和 CloudSQL)、微软(Azure PostgreSQL)、亚马逊云科技(Aurora 和 RDS)CockcroachDB、YugabyteDB、EDB 和 Avien 等系统最主要的兼容前端。
“随着整个世界开始向云端迁移,谷歌、亚马逊和微软也纷纷开始向 PostgreSQL 兼容性靠拢。我觉得这是个好主意。CockroachDB 就与 PostgreSQL 实现了 wire-compatible 兼容。大家可以挑选一款 PostgreSQL 应用程序,再把它直接放进 CockroachDB。PostgreSQL 没有任何分布式数据库功能,但 YugabyteDB 和 CockroachDB 都有。”
Stonebraker 的影响力甚至在竞争对手甲骨文的产品组合中有所体现。他打造的联合数据库 Mariposa 成为 Cohera 的基础,后者是甲骨文于 2001 年收购的 PeopleSoft 开发的数据库,并于 2004 年成为 Oracle 数据库中的一部分。2014 年,Stonebraker 因其对 Ingres 和 Postgres 的巨大贡献而获得图灵奖,从谷歌手中接过 100 万美元奖金。
尽管 Stonebraker 的很多理念在数据库行业得到了广泛认可(Gartner 称该行业在 2022 年的总值达到 910 亿美元),但他从来没想过要把这些思路看作只属于自己的成果。
“我的财务状况一直不错。我认识 Ted Codd,并从那里学到了管理技术构思的方法。毕竟我们的目标是改变世界,而每个人都只是其中非常有限的参与者。我一直坚持与其他参与者共享开源代码,过程当中也获得了不错的财务回报。所以我一点也不觉得后悔。”
更重要提,Stonebraker 压根没考虑过退休。凭借最新项目,他正准备再一次改变世界。
DBOS(面向数据库的操作系统)的理念来自 Stonebraker 与 Apache Spark 作者 Matei Zaharia 的对话。Zaharia 同样是伯克利大学副教授,也是分析和机器学习厂商 Databricks 的联合创始人。
Stonebraker 解释道,“Spark 和 Databricks 的主营业务,就是管理云端 Spark 实例。Zaharia 提到,Databricks 随时随地都在为不同用户管理数百万个 Spark 实例,而传统操作系统的调度能力根本不足以支撑这样的需求。因此,他们需要可扩展性更强的方案。而最显而易见的答案,当然就是把所有调度信息都放进数据库。Databricks 的开发团队就是这么做的:他们把所有内容都放进 PostgreSQL 数据库中,并发现 Postgres 的性能有点跟不上。”
于是向来乐于接受挑战的 Stonebraker 决定,“那咱们就把问题解决好。”
新项目尝试利用新的操作系统栈替代 Linux 和 Kubernetes,其底层为数据库系统,原型则是 Stonebraker 发起的多节点、多核心、事务性、高可用 VoltDB。
“简单来讲,这里的操作系统成为数据库的具体应用,而不像传统上数据库作为操作系统的具体应用。”
Stonebraker 与 Zaharia 等人共同撰写的论文对此做出具体解释,“所有操作系统状态都应统一表示为数据库表,并应通过来自其他无状态任务的查询对该状态进行操作。这样的设计能够让操作系统拥有更灵活的扩展和开发空间。无需对整个操作系统进行重构、无需检查和调度系统状态、也无需停机即可升级组件;同时配合机器学习来管理决策,并实现复杂的安全功能。”
无论成功与否,操作系统即数据库应用的思路可能只是 Stonebraker 人生新阶段中的又一次尝试。哪怕是今年 10 月年满 80 岁,他也一刻没有放慢过探索的脚步。
“我无法想象每周拿出大段的时间去打高尔夫或者以其他的形式浪费掉。我喜欢我做的一切,只要脑力还跟得上,我就绝不会退出。”
原文链接:80岁Postgres创始人、数据库领域“祖师爷”想颠覆数据库设计:不推翻下当前技术,不足以谈人生_数据湖仓_核子可乐_InfoQ精选文章