SQL竞争对手简史( 二 )


为什么?关键点在于 QUEL 与 Codd 提出的关系演算模型非常接近 , 而 SQL 不是 。 QUEL 也是一种精心设计的语言 , 而 SQL 是由工程师开发的 , 他们在巨大的压力下匆忙将一个名为 System R 的 IBM 数据库推向市场 , 以此来证明关系型数据库模型可以成为数据存储系统的可行架构 。 这在今天看起来有点可笑 , 但在当时 , 主流观点认为关系型数据库只不过是一个小玩具 。 几年后 , System R 工程师和 Oracle 的拉里·埃里森证明了关系型数据库就是未来 。 因此 , 创建 SQL 的工程师们关注的是数据库性能 , 而不是语言设计 , 而且他们从未期望自己发明的接口能够成功并成为标准 。
那么 SQL 有什么问题呢?不符合 Codd 提出的关系模型有什么问题吗?
去年年底 , 我曾与 Holistics 首席工程师 Thanh 进行过一次讨论 。 他问我:“你对 SQL 有什么看法?”我回答说——就像大多数受过正规训练的程序员一样——“我觉得没问题 。 你为什么这么问?”
“我认为 SQL 有缺陷” 。
“但是 Codd 的关系模型……”
【SQL竞争对手简史】“Codd 的关系模型很棒 , 但作为该模型的表达式 , SQL 是有缺陷的 。 ”
Thanh 在 Slack 的一个评论中解释说:
SQL 不具有可组合性 , 这是大多数 SQL 用户都不知道的事实 。 SQL 所基于的关系模型是绝对可组合的 , 但 SQL 不是 , 因为它在语言方面存在一些固有的限制 (它的设计类似自然语言) 。 当你写"select x from a where z"时 , 实际上是在沿着"from a" => “where z” => "select x"这样的路径构建语句 , 而且每个部分都可以单独写出来 。 如果你熟悉 dplyr、Spark 或 Pandas , 就会明白这个 。
就我所知 , QUEL——它更接近 Codd 的关系演算模型——具备离谱的可组合性 。 我们可能曾经生活在一个 QUEL 和 SQL 相互竞争的世界里 , 在这个世界里 , 它们都说自己是“最好的”语言 , 并找到了自己的利基市场 。
但是 , 世界不是这样运作的 。 如果世界以另一种方式运作 , 我们就不会用 QWERTY 键盘打字 , 也不会说英语了 , 取而代之的是 Dvorak 键盘和世界语 。 从那时起 , 世界已经对 SQL 进行了标准化 , 而对另一种历史的遐想只存在于那些参与过早期数据库战争的人的头脑中 。 System R 是由当时计算机行业最强大的公司 IBM 开发的 , 开发 System R 的工程师们后来又想出了一种复杂的语言接口 , IBM 随后采用了这种语言 , 并推动其成为标准 , 一直延续到今天 。
当然 , 整个故事还没有结束 。 Stonebraker 在 1982 年 fork 了 Ingres 代码库创办了自己的公司 , 在 80 年代惨烈的数据库战争中失败后 , 他于 1985 年回到伯克利 , 开始了一个后 Ingres 数据库项目 。 很自然地 , 他将这个数据库命名为 Postgres——在 Ingres 之后的意思 。
就这样 , PostgreSQL 诞生了 。
原文链接:
关注我并转发此篇文章 , 私信我“领取资料” , 即可免费获得InfoQ价值4999元迷你书 , 点击文末「了解更多」 , 即可移步InfoQ官网 , 获取最新资讯~