80岁Postgres创始人:开源与盈利并行,再次颠覆数据库领域

发表时间: 2024-01-15 10:11

如果我们把操作系统建立在数据库,而非将数据库建立在操作系统上呢?这听起来像是一个大学生喝多后的荒谬提议,但事实绝非如此——这个想法出自一位已经颠覆计算机行业的人,其思想影响已扩散至人们熟悉的微软(Microsoft)和甲骨文(Oracle)公司产品中。


他就是2014年图灵奖得主、Postgres创始人迈克尔-斯通布雷克(Michael Stonebraker)。


斯通布雷克在2023年迎来了自己的80岁生日,即使高龄,他仍坚持从事数据库研究工作。开源关系型数据库系统 PostgreSQL 无疑是斯通布雷克在业界画下最为浓墨重彩的一笔。


根据2023年 tack Overflow 的调查,PostgreSQL首次成为开发人员最受欢迎的数据库。除了成为流行的开源 DBMS (Database Management System,数据库管理系统)之外,云服务行业巨头们、CockroachDB 和 YugabyteDB 等供应商都提供与 PostgreSQL 前端兼容的数据库服务。


从马尔可夫链到数据库

斯通布雷克最有影响力的工作始于早期的关系型数据库系统 Ingres。1971年,被任命为加州大学伯克利分校助理教授后,斯通布雷克开始这项研究课题。


他在接受科技新闻网站 The Register 的采访时回答:“我的博士论文原本是从马尔可夫链的特定视角切入的,但我意识到这没有任何实用价值。我来到伯克利分校后,(依据学校要求)老师可以在五年时间内研究新课题并争取获得终身教职,但我并不想针对马尔可夫链展开研究。此时,伯克利的另一位教员王佑曾(Eugene Wong)提议:‘我们为什么不研究一下数据库呢?’”


他们两人阅读了 IBM 研究员埃德加-科德(Edgar Codd)当时一份内容与关系数据库相关、名为《大型共享数据银行的关系数据模型》的提案。


斯通布雷克和王佑曾认为,这位英国研究员的想法既优雅又简单。“(需要做的)下一步显而易见,我们尝试建立一个关系数据库系统。虽然我和 Eugene (王佑曾)都没有构建系统软件的经验,但学者的钻研心促使我们前进,让我们试一试,看看会发生什么。于是,两个毫无经验的人开始构建Ingres系统,我也借此获得了终身教职。”


Ingres 并非没有竞争者。IBM 的 System R 是第一个证明关系方法实现可用事务性能的系统,也是第一个使用如今已普遍推广的SQL 系统。其后,甲骨文公司(Oracle)在 20 世纪 70 年代推出了自己的关系系统。


与此同时,Ingres 还面临平台方面的问题。


“有很多人到访伯克利,询问谁是 Ingres 最大的用户。亚利桑那州立大学希望使用 Ingres 管理 35,000 名学生的记录数据库,但Ingres 无法在贝尔实验室提供的操作系统Unix之上正常运行。”


Ingres 的目标市场是中端系统,而彼时 Unix 刚刚兴起,这也意味着它不支持当时商业计算领域的主流语言 COBOL。


“唯一的解决办法就是成立一家公司。”斯通布雷克说。


随后,他创建了 Relational Technology 公司,将Ingres 系统商业化。该公司后来更名为 Ingres Corporation,1990 年被 ASK Corporation收购, ASK Corporation在1994 年又被 Computer Associates 公司收购。


伯克利 Ingres 团队的另一位成员罗伯特-爱泼斯坦(Robert Epstein)后来创建了 Sybase 公司,该公司曾有十年在全球关系数据库市场上的份额仅次于甲骨文公司。1992 年,Sybase 的产品线被授权给微软,相关技术被微软用于早期版本的 SQL Server。


但斯通布雷克也必须承认,Ingres 的商业代码库远远领先于开源研究项目——其他研究人员只需支付象征性的一点费用(包括存储所需的磁带及邮寄费用),就能获得代码——因此他的团队决定放弃Ingres ,重新打造一款数据库。


Ingres 之后是什么?Postgres 诞生了。


新时代来临


1986年,斯通布雷克与拉里-罗(Larry Rowe)共同撰写的一篇28页的论文公布了Postgres的设计方案,并提出六项指导性目标。其中两项目标支撑了Postgres的长盛不衰,其一是为复杂对象提供更好的支持;其二是为数据类型、运算符和访问方法提供用户可扩展性


斯通布雷克在采访中提到,通过与 Ingres 客户的交谈,他了解到可扩展性对未来数据库的成功非常重要。“这位客户有次打电话告诉我,‘你们的时间系统全都错乱了’。”


这让身为伯克利大学教授的斯通布雷克非常困惑,因为他的团队已耗费大量精力来确保准确执行儒略历(现今国际通用的公历的前身)以及闰年。某些金融债券的偿付周期将一年看作360天,即每个月是30天。Ingres 无法实现这种时间计算方式,但在 PostgreSQL 中可以实现。


同时,让数据库具备可扩展性也是为了支持新的数据类型。Ingres 的早期项目之一曾试图将其用作地理信息系统,这与其业务数据的主要业务相去甚远。斯通布雷克评价这类用例时说道:“速度慢得离谱,而且无法修复。”


十年之后,这一选择被证明卓有远见且回报颇丰。十年前,PostgreSQL 增加了对 Json 文档的支持,即 NoSQL 数据库 MongoDB 和 Couchbase 使用的文件格式。


斯通布雷克过去曾公开批评过 NoSQL 运动。他在接受媒体The Register采访时说,NoSQL 正在与关系型数据库融合,因为它们正在采用 SQL 或类 SQL 的语言,而且能够满足一致性需求。


“NoSQL 最大的优点是开箱即用的体验,因为使用 SQL 数据库,你必须先构建数据库,然后再定义游标(cursor),所以很难使用。这也是当时SQL数据库饱受诟病的问题:开箱即用体验非常糟糕。用户应该能够直接打开它说‘这里有一些数据’,然后开始使用数据。”


而提供 PostgreSQL 以及 PostgreSQL 兼容数据库的各种服务在一定程度上解决了以上问题,但这款开源 DBMS 系统流行起来则完全是个意外,斯通布雷克并未在推广上费心。


斯通布雷克在1992年创建Illustra公司时就发现,虽然数据库的研究代码自始至终都是开源的,但在当时基于开源代码建立一家数据库公司并不现实。“当我们申请Ingres和Postgres的风险投资时,投资方都未将开源当作投资的决定因素,开源对投资的吸引力在当时仍未显现。”


2005 年,斯通布雷克创立了 Vertica 公司,该公司为数据仓库提供非共享、面向列的DBMS。他认为“如果开放源代码,Vertica 发展将更顺利,但开源项目在风投界受到瞩目是最近才出现的现象,当时没能预料到。”


闭源数据库不符合未来趋势


Illustra 公司也曾一时风光无限。据商业杂志《福布斯》1997年的报道,Illustra 最终在 1996 年以约 4 亿美元的价格卖给 Informix,其中斯通布雷克的股份价值 650 万美元。随后,斯通布雷克还在母公司 Informix 担任了四年的CTO。


650万美元无疑是一笔不菲的收入,但与甲骨文联合创始人拉里-埃里森(Larry Ellison)高达 1450 亿美元的净资产估值相比,简直是小巫见大巫。无需讳言,斯通布雷克对甲骨文公司颇有微词,而甲骨文公司是关系模型的另一个早期采用者。“Ingres在技术方面总是更胜一筹,而Postgres在实用性上更胜一筹,Postgres不仅更加灵活,而且是开源项目。如今,PostgreSQL 的性能也能与Oracle 媲美。总而言之,闭源数据库不是未来的趋势,我认为甲骨文价格昂贵且灵活性不高。”


尽管如此,甲骨文公司收购开源MySQL的决定还推动了开源 PostgreSQL 的发展。甲骨文收购了开源的MySQL,而社区中的部分成员不愿接受MySQL被掌握在专有软件巨头手中。在 Illustra 等企业将 Postgres 商业化的同时,加州大学伯克利分校在 MIT 许可下发布了 POSTGRES 的代码,允许其他开发者在此基础上进行开发。


1994 年,同为伯克利毕业生的 Andrew Yu 和 Jolly Chen 用 SQL 取代了查询语言 POSTQUEL。由此产生的 Postgres95 在更宽松的许可下免费开放并接受修改,随后正式更名为 PostgreSQL。


“最终结果是Illustra逐渐受到重视,而最重要的是,一群素不相识的社区成员在我毫不知情的情况下,转而选择了仍旧活跃的开源Postgres代码,并继续修改运行。”


MySQL被甲骨文收购后,开发人员纷纷起疑,转向PostgreSQL。斯通布雷克对此评价道,“这真是一个奇妙的意外”,“PostgreSQL在商业上的成功则是另一个令人高兴的意外,商业成功固然美妙,但很大程度上也是一种偶然”。


与此同时,数据库服务也围绕着 PostgreSQL 发展起来。它已成为谷歌(AlloyDB 和 CloudSQL)、微软(Azure PostgreSQL)、AWS(Aurora 和 RDS)、CockcroachDB、YugabyteDB、EDB 和 Avien 等系统最主要的兼容前端。


“整个世界都在向云计算发展,谷歌、亚马逊和微软都把赌注押在了 PostgreSQL 的兼容性上,我认为这一选择是明智的。CockroachDB与PostgreSQL实现wire-compatible兼容,你可以把 PostgreSQL 应用程序放到 CockroachDB 上。PostgreSQL没有任何分布式数据库功能,但YugabyteDB和CockroachDB都有。”


斯通布雷克的影响力甚至延伸到了竞争对手甲骨文公司的产品组合中。他的联盟数据库Mariposa成为Cohera的基础,后者是PeopleSoft在2001年收购的一家数据库公司,2004年被甲骨文收购。


2014 年,斯通布雷克因其对 Ingres 和 Posgres 工作的深刻影响而获得图灵奖,并获得了谷歌发放的 100 万美元奖金。


尽管斯通布雷克的许多想法在数据库行业得到了广泛应用(Gartner 称 2022 年该行业价值将达到 910 亿美元),但他却不甚在意其他人使用他的想法(获得利益)。


“我的财务状况很好。我认识泰德-科德(Ted Codd,关系模型的发明者,被誉为关系数据库之父),他非常宽宏大量地说,你们都应该使用这些‘创意’。因为我们的目标是改变世界,而任何一个人都是改变世界的参与者,所以我一直在做开放源代码,与任何需要的人共享代码。在这个过程中,我获得了不错的物质回报,所以我一点也不后悔。”斯通布雷克说。


但这并不是说他准备退休了。在他的最新项目中,斯通布雷克准备再次改变世界。


再次颠覆数据库


DBOS(DataBase Operating System)是一种面向数据库的操作系统,它的创意来源于斯通布雷克与马泰-扎哈里亚(Matei Zaharia,Apache Spark 的作者、分析和机器学习厂商Databricks 的联合创始人兼伯克利大学副教授)的一次谈话。


“Spark和Databricks的业务是管理云上的Spark实例。扎哈里亚告诉我,Databricks 随时随地都在为不同用户管理数百万个 Spark 子任务。使用传统的操作系统调度技术无法支持这种需求:他们需要一种可以扩展的技术。最显而易见的答案,就是将所有调度信息放到数据库中。这正是 Databricks 的开发人员所做的:他们把所有信息都放到 PostgreSQL 数据库中,然后开始抱怨 Postgres 的性能。”


从不逃避挑战的斯通布雷克想:“我可以做得更好。”


新项目使用新的操作系统栈取代Linux 和 Kubernetes,其底层为数据库系统,其原型是 Stonebraker 发起的多节点、多核心、事务性、高可用 VoltDB。


斯通布雷克解释道:“基本上,操作系统是数据库的一个应用程序,而非相反。”


斯通布雷克与扎哈里亚等人共同撰写的一篇论文对此解释道:“所有操作系统的状态都应统一表示为数据库表,应通过其他无状态任务的查询对这些状态进行操作。这样的设计可以轻松地扩展和演进操作系统,而无需对整个系统进行重构、检查和调试系统状态,不停机即可升级组件,使用机器学习管理决策,以及实现复杂的安全功能。”


无论成功与否,“操作系统即数据库”的应用想法都不可能是斯通布雷克的最后一个创意。去年10月,他已年满八十,但他告诉 The Register,他并不打算放慢脚步。


“我无法想象一周打三天高尔夫球的生活方式。我喜欢我的工作,只要我的脑子还能转动,我就会继续做下去。”


作者丨Lindsay Clark 编译丨onehunnit

来源丨theregister.com/2023/12/26/michael_stonebraker_feature/


*本文为dbaplus社群编译整理,如需转载请取得授权并标明出处!欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn