那是 1983 年,Oracle 还是一家小公司。当时,拉里·埃里森正专注于重写满是 bug 的数据库产品,而计算机教授、后来成为数据库传奇人物的 Michael Stonebraker 正在迎头追赶。 在《软件战争》(Softwar)一书中,Matthew Symonds 是这样描述这个故事的:
当然,这个故事被简单化了。Oracle 4 是一款好产品——当然比满是 bug 的 Oracle 3 要好,但它并不是因为技术上的优势打败了 Ingres,而是因为 IBM 的强大,也因为 Stonebraker 犯了一个错误。 那一年,经过 IBM 和 Oracle 几个月的劝说,美国国家标准协会 (ANSI) 宣布将 SQL 作为标准关系型数据库语言。Symonds 在书中写道:
QUEL 究竟有多好?Symonds 提到,“很多关系型数据库专家认为它是一种优越的语言”,但即使是这样,仍然低估了 QUEL 在现代关系型数据库先驱们心中的地位。 例如,在 1985 年,也就是 QUEL 和 Ingres 被打败的那一年,数据库传奇人物 C.J.Date——他在 IBM 与 Edgar Codd (关系模型的发明者) 一起研究关系模型——写了一篇论文,他在论文中提到 QUEL 是这两种语言中最好的。 为什么?关键点在于 QUEL 与 Codd 提出的关系演算模型非常接近,而 SQL 不是。QUEL 也是一种精心设计的语言,而 SQL 是由工程师开发的,他们在巨大的压力下匆忙将一个名为 System R 的 IBM 数据库推向市场,以此来证明关系型数据库模型可以成为数据存储系统的可行架构。这在今天看起来有点可笑,但在当时,主流观点认为关系型数据库只不过是一个小玩具。几年后,System R 工程师和 Oracle 的拉里·埃里森证明了关系型数据库就是未来。因此,创建 SQL 的工程师们关注的是数据库性能,而不是语言设计,而且他们从未期望自己发明的接口能够成功并成为标准。 那么 SQL 有什么问题呢?不符合 Codd 提出的关系模型有什么问题吗? 去年年底,我曾与 Holistics 首席工程师 Thanh 进行过一次讨论。他问我:“你对 SQL 有什么看法?”我回答说——就像大多数受过正规训练的程序员一样——“我觉得没问题。你为什么这么问?” “我认为 SQL 有缺陷”。 “但是 Codd 的关系模型……” “Codd 的关系模型很棒,但作为该模型的表达式,SQL 是有缺陷的。” Thanh 在 Slack 的一个评论中解释说:
就我所知,QUEL——它更接近 Codd 的关系演算模型——具备离谱的可组合性。我们可能曾经生活在一个 QUEL 和 SQL 相互竞争的世界里,在这个世界里,它们都说自己是“最好的”语言,并找到了自己的利基市场。 但是,世界不是这样运作的。如果世界以另一种方式运作,我们就不会用 QWERTY 键盘打字,也不会说英语了,取而代之的是 Dvorak 键盘和世界语。从那时起,世界已经对 SQL 进行了标准化,而对另一种历史的遐想只存在于那些参与过早期数据库战争的人的头脑中。System R 是由当时计算机行业最强大的公司 IBM 开发的,开发 System R 的工程师们后来又想出了一种复杂的语言接口,IBM 随后采用了这种语言,并推动其成为标准,一直延续到今天。 当然,整个故事还没有结束。Stonebraker 在 1982 年 fork 了 Ingres 代码库创办了自己的公司,在 80 年代惨烈的数据库战争中失败后,他于 1985 年回到伯克利,开始了一个后 Ingres 数据库项目。很自然地,他将这个数据库命名为 Postgres——在 Ingres 之后的意思。 就这样,PostgreSQL 诞生了。 原文链接: https://www./blog/quel-vs-sql/ 关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书,点击文末「了解更多」,即可移步InfoQ官网,获取最新资讯~ |
|
来自: 漫步之心情 > 《D大数据HR★统计PPT》