前沿观察 | 数据库战争往事

1983年,拉里·埃里森(Larry Ellison)还在一家名为Oracle的小公司工做(固然,如今已是最大的企业级软件公司了),负责数据库产品bug的修改。却不知,在后方,计算机科学教授、数据库传奇人物迈克·斯通布雷克(Mike Stonebraker)正在迅速遇上。程序员

后来,马修·西蒙兹(Matthew Symonds)在他的《Softwar》一书中这样说到:数据库

“拉里·埃里森(Larry Ellison)没有把不少注意力放在销售环节上,就埃里森而言,他对甲骨文成功所能作出的最重要的贡献是压倒一切,专一于使产品更好。他根本不认为本身有能力关心首席执行官应该负责的全部其余事情。对于甲骨文公司的某些人来讲,埃里森的方法是开明的表明团之一,有人说。“相比于受权,他更接近退位。”固然,从结果看,埃里森确实有充分的理由专一于产品。编程

与此同时,迈克·斯通布雷克(Mike Stonebraker)立项了他在加州大学伯克利分校监督的Ingres关系型数据库项目,并围绕它成立了一家名为Relational Technology,Inc.(后文简称RTI)的公司。尽管商业版本的Ingres数据库上市时间比甲骨文晚,但迈克·斯通布雷克(Mike Stonebraker)的公司增加反而比Oracle更快。在1984年,Oracle的销售额翻了一番,达到1,270万美圆,而随着RTI公司愈来愈多地知道,Ingres的销售额翻了三倍,达到900万美圆。架构

后来拉里·埃里森(Larry Ellison)说到:“RTI(当时)真的在踢咱们的屁股,但他们之因此遇上来是由于咱们新的数据库产品变化较大,而且遇到了软件质量问题。”性能

与Oracle开发SQL相比,Ingres的伯克利团队有更多的时间来完善其用户语言QUEL,许多关系专家认为它本质上是一种高级语言。拉里·埃里森(Larry Ellison)说:“也许QUEL比SQL更好,就像有人认为法语比英语好?可是不要紧,SQL和英语同样必胜。”网站

拉里·埃里森(Larry Ellison)最担忧的并非语言的优越性,而是Ingres大量的人才。“对我来讲,很痛苦的是,咱们的开发团队不足以跟上Ingres的团队。因此咱们不得不从新组建它。若是迈克·斯通布雷克(Mike Stonebraker)从伯克利雇用最好的学生,那咱们就从加州理工,麻省理工和斯坦福雇用最好的学生。咱们还将在硅谷招募最有经验的编程人才。在一次大变革中,咱们还从施乐帕克研究中心(当时颇有名的研究机构)聘请了一支精湛的团队,其中有一我的是Derry Kabcenell,他是有史以来在Oracle工做的最重要的人之一。多亏了Derry和他领导的新团队,咱们克服了Oracle第三代中的软件质量问题,提供了卓越的数据库产品(咱们能够为此感到骄傲),这款产品足以杀死Ingres,也就是咱们的Oracle四代。”翻译

固然,这个故事很精简,真实状况远不止这么简单。Oracle 4确实是一个很好的产品,至少比Oracle 3更好,当初Oracle 3向市场发布时,它的bug比废弃的柚子还多。可是4并非成功的缘由,即便它在技术上优于Ingres。设计

之因此成功,是由于强大的IBM,并且迈克·斯通布雷克(Mike Stonebraker)犯了一个很严重的错误。对象

Oracle 4发布,在IBM和Oracle的几个月劝说下,美国国家标准协会(ANSI)宣布SQL为标准的关系数据库语言。马修·西蒙兹(Matthew Symonds)写道:开发

因为Oracle 4的可靠性以及Oracle日益强大的销售力量,Ingres难以维持其发展势头,但真正的威胁是在IBM支持下的美国国家标准学会(ANSI)决定将SQL做为标准的关系型数据库语言。迈克·斯通布雷克(Mike Stonebraker)甚至没有费心出席委员会会议,为采纳QUEL而不是SQL提出(很是有力的)理由,由于他在乎识形态上反对设定技术标准。

这是一个学术上傲慢的学者的行为,不是一个谨慎的商人保护他的公司利益的行为。拉里·埃里森(Larry Ellison)说:“ 迈克·斯通布雷克(Mike Stonebraker)发明了QUEL并像一个骄傲的父亲同样坚持下去,而IBM和Oracle支持SQL标准。缺少SQL支持会严重伤害Ingres,同时缺少可移植性和读取一导致得Ingres的表现远远落后于其余数据库。全部的这些共同形成了Ingres的没落。”

回到语言自己,QUEL到底有多好?马修·西蒙兹(Matthew Symonds)举了个例子:许多关系专家认为这本质上是一种高级语言,不少人都低估了发明现代关系数据库的先驱者对QUEL的尊重程度。

例如,在1985年QUEL和Ingres失利的那一年,数据库传奇人物CJ Date与IBM关系模型的发明者科德(Codd)一块儿在IBM的关系模型上工做–写了一篇论文,他认为QUEL是两种语言中的佼佼者。

为何?争论的关键是,QUEL与科德(Codd)提出的关系演算关系密切,而SQL没有,QUEL仍是一种通过精心设计的语言,SQL是由工程师编写的,他们在巨大的压力下将名为System R的IBM数据库推向市场,以证实关系数据库模型能够成为数据存储系统(源)的可行架构。今天看来有点荒谬,可是当时,主流观点认为关系数据库不过是个小玩具而已。System R工程师以及几年后在Oracle任职的Larry Ellison都为他们完成了工做,以证实RDBMSes是将来。所以,建立SQL的工程师专一于数据库性能,而不是语言设计,他们历来没有想到他们发明的用户界面会成为标准。

那么SQL有什么问题?偏离科德(Codd)概述的关系模型有什么问题?

去年下半年,我与Holistics的首席工程师Thanh进行了一次这样的讨论。“您如何看待SQL?” 他问,我就像大多数受过经典训练的程序员所作的那样回答道,“我认为还能够,你为何要问?”

“哦,我认为SQL有缺陷,科德(Codd)的关系模型很棒。可是,做为该模型的一种表达,SQL是有缺陷的。”

后来Thanh在他撰写的一篇评论中解释道:

“…语言(SQL)不太容易组合。大多数SQL用户都不知道这一事实。SQL所基于的关系代数是绝对可组合的,可是SQL并非因为语言的固有限制(由于它被设计为相似于天然语言)。当你写“从z的位置选择x”时,其实是在代数中按照“从a” =>“其中z” =>“选择x”的方式构建对象,实际上你能够分别组成每一个部分。若是你熟悉dplyr,Spark或pandas,你将当即得到此信息。”

据我所知,QUEL与科德(Codd)的关系演算关系更为紧密是荒谬的。这个世界并不是非黑即白,若是有一个平行世界,在这个世界中,可能QUEL就是如今的SQL,这门“最佳”语言找到了本身的归属。可是,这不是世界运做的方式。若是世界工做方式不一样,咱们将再也不使用如今的键盘书写,也不说英语。像Dvorak和Esperanto这样技术上更好的替代品将被接管。

总之,如今世界已经在SQL上实现了标准化,而替代历史的梦想只存在于那些参与早期数据库战争的人们的头脑中。System R是在IBM(当时计算机行业中最强大的公司)内部构建的,这只是历史的一个怪癖。后来,构建System R的工程师提出了一个怪异的语言界面,这是一个怪癖,而后IBM采纳了该语言并将其推向一种标准,这是一种怪癖……一直持续到今天。

固然,做为传奇,迈克·斯通布雷克(Mike Stonebraker)并无一直沉寂下去,他于1982年建立了Ingres代码库,从而建立了本身的公司。在80年代激烈的数据库战争战胜后,他于1985年返回伯克利,并开始了Ingres后的数据库项目。

接着,PostgreSQL诞生了。

声明:本文由腾讯云数据库产品团队整理翻译,原内容来自于db weekly英文官网(https://dbweekly.com),若转载请注明出处。翻译目的在于传递更多全球最新数据库领域相关信息,并不意味着腾讯云数据库产品团队赞同其观点或证明其内容的真实性。若是其余媒体、网站或其余任何形式的法律实体和我的使用,必须通过著做权人合法书面受权并自负所有法律责任。不得擅自使用腾讯云数据库团队的名义进行转载,或盗用腾讯云数据库团队名义发布信息。因笔者翻译水平有限,翻译过程不免出现纰漏,若有谬误,望各位读者批评指正。

本文由博客一文多发平台 OpenWrite 发布!

相关文章
相关标签/搜索