自SQL首次提出以来的五十年里,它已经成为处理关系数据库的主要查询语言.
因此,它支撑着对政府、企业和世界经济运转至关重要的交易.
但与许多标准一样,它通往全球主导地位的道路并不是一帆风顺的,在它孕育的早期,故事可能会有很大的不同.
虽然这个首字母缩写可能代表结构化查询语言,但它最初被称为Sequel,是对Quel的认可,Quel是一种在关系数据库中处理信息的竞争语言,大约是在同一时间开发的.
IBM的Donald Chamberlin和Raymond Boyce在1974年写了一篇论文《Sequel:A Structed English Query Language》,作为IBM新提出的System R中的一种数据寻址方式,这是第一个体现Edgar Codd的论文[PDF]的数据库,该系统描述了数据库管理的关系模型.
在接受The Register采访时,Chamberlin说Codd的方法与20世纪70年代数据系统中的流行思维背道而驰,需要一种新的语言.
“数据库行业最受尊敬的人物是查尔斯·巴赫曼.
他当时在通用电气工作,这是一家电脑公司.
他发明了整个数据库系统的概念,作为操作系统和应用程序之间的一个不同的软件层,他开发了一个特殊的数据库系统,称为集成数据存储,“Chamberlin说.
Bachman的创建以导航数据库而闻名,但它并不会对行业产生长期的影响.
”Charlie认为,您应该通过编写一个程序程序来访问数据库,该程序告诉计算机如何找到答案.
Codd说,不,这都是错误的,我们应该使用声明式方法,让计算机找出如何找到答案.
这就是大约在70年代初在业界肆虐的冲突,“Chamberlin说.
在他们第一次尝试创建一种语言来解决关系数据库的新概念时,Chamberlin和Raymond Boyce创建了Square或在关系环境中指定查询.
但它依赖于下标和上标符号的组合,而且据Chamberlin自己承认,它很难打字.
1973年从东海岸搬到IBM的圣何塞研究实验室后,Chamberlin和Boyce加入了System R的团队,“关系模型简单、优雅和强大.
但Codd用很多数学术语阐述了他的概念.
他基本上是一位数学家,当我们第一次阅读他的论文时,并不是很明显这个概念是多么优雅和简单.
他采用了一个简单的概念,并将其复杂化.
另一个问题是,最初并不清楚这些想法是否能在一个具有足够性能的程序中有效地实现,“Chamberlin说.
System R是IBM试图证明关系模型实际上可以由当时可用的计算机执行的尝试,但由于Codd的论文已经发表在一本期刊上,IBM团队并不是唯一致力于解决这个问题的人.
在旧金山附近的海岸上,加州大学伯克利分校的另一个团队也在进行类似的项目.
钱伯林说:“建立关系数据库需要三样东西:一种三条腿的凳子.
我们有数据模型.
第二件事是人们即使不是数学专家也能理解的查询语言,第三件事是优化编译器,它可以利用这种高级语言,将其转化为具有良好性能的高效计划.
这正是人们在IBM和伯克利都在做的事情.
当时正在发生一场革命.
计算成本正在下降,每个人都把他们的数据放在网上,而这场革命的赢家是关系数据库.
问题是哪种数据库和使用哪种语言.
70年代初,在伯克利,博士后迈克尔·斯通布雷克和他的计算机科学家尤金·黄开始了一个项目,建立INGES,另一个早期的关系数据库,与System R同时,他们开发了自己的查询语言Quel.
Stonebraker向The Register解释说:“Chamberlin和Boyce基本上把Square变成了一种可以在键盘上打字的语言,但它有这种嵌套结构.
”然而,有些查询不能用嵌套符号来表示.
其结果是,Sequel在嵌套符号的基础上增加了平面符号,这使得这门语言“不必要地复杂”,Stonebraker说,“另一方面,Quel从一开始就是平面符号.
没有嵌套的符号.
Sequel因包含嵌套符号而受到阻碍.
但问题是,一旦你把它放进去,你就不能把它拿出来了,“Stonebraker说.
同时,Sequel的主导地位--SQL术语是后来出现的--远未成为定局,因为IBM最初对将System R作为商业产品开发没有表现出多少兴趣,因为它从现有的数据系统中赚取了如此多的钱.
钱伯林解释说:”这对我来说是一种挫折,这是肯定的,对System R团队的其他成员来说也是如此.
这是IBM做出的一个商业决定.
他们有一个成功的商业数据库产品[在层次化IMS中].
他们为什么要为它引入竞争对手?他们花了几年时间才弄明白.
“与此同时,System R小组在开放的技术文献中发表了关于SQL和优化编译器的论文.
IBM非常慷慨地允许我们这样做,主要是因为从商业角度来看,他们没有太认真地对待这项技术:这是一项研究.
然而,两家公司对生产商业关系数据库感兴趣.
除了他帮助创立的Relational Technology公司将Stonebraker的Ingres商业化外,还有由Larry Ellison、Bob Miner和Ed Oates创立的羽翼未丰的软件开发实验室,该实验室开发了Oracle数据库,后来以甲骨文的名字命名.
Oracle采用了Sequel,并声称是第一个商业化的关系系统,Ingres比IBM有显著的优势,Stonebraker说.
两者都是为微型计算机系统开发的,这与20世纪60年代和70年代的流行大型机不同.
“在80年代初到中期,主要的数据库系统都运行在IBM硬件上,因此它们都是用IBM汇编语言编写的,所以它们不能移植到DEC和Data General小型计算机上,这对两家公司都非常有利.
80年代是微型计算机的兴起,它为甲骨文和Ingres提供了一片绿色的田野,“Stonebraker说.
他说,在Ingres中实施Quel比甲骨文采用SQL好得多.
Stonebraker表示,甲骨文已经抢占了先机,并正在通过“我不会容忍的销售策略”实现强劲增长.
然而,他表示,如果不是IBM的介入,Ingres可能会在1985年超过甲骨文.
1983年底,蓝色巨人推出了DB2.
虽然这不是它的第一个商业关系数据库,但很快就成为新先锋的旗舰.
DB2中使用的是SQL,由于IBM在大型机市场的主导地位,竞争对手的竞争已经结束了,无论它们在技术上是否优越.
但对于Chamberlin来说,是国家和国际标准机构的批准,以及美国政府采购部门的采用,帮助SQL赢得了这一天.
由于Ingres和Oracle的成功,关系数据库变得越来越常见,美国国家标准研究所(ANSI)决定对查询语言产生兴趣.
当时,这两家公司都在营销SQL产品.
最重要的是,英格雷斯人并没有参加这个委员会.
如果该委员会有Ingres的代表,世界可能会不同.
相反,ANSI委员会在市场上看到了两种关系产品,这两种产品都使用因此,如果它的标准基于商业上可用的SQL实现,那么它将获得最大的吸引力,Chamberlin说.
与此同时,美国政府发布了联邦信息处理标准127.
钱伯林说:“你必须通过该标准才能向政府出售软件.
FIPS 127与ANSI标准完全相同.
从向政府推销SQL系统的角度来看,这是非常有益的.
”遵循ANSI标准,国际标准化组织(ISO)在1986年制定了SQL标准.
2023年以来的最新更新包括与JSON和属性图相关的新功能.
在确保了SQL的世界霸主地位后,张伯林反映了他的团队本可以做得不同的事情.
他说,那些指出SQL不是正交的--即操作只改变一件事--的人提出了合理的批评.
然而,创建SQL的目标不是创建一种这样的编程语言,而是创建一种非程序员--业务分析师等--可以用来处理他们的数据的方法.
他说:“我们希望这种语言看起来尽可能接近自然语言,这样他们就可以阅读和理解它,就像它是英语句子一样.
但当然,英语不是一种正交语言,所以我们在这方面做出了一些妥协.
最终,SQL主要由程序员、数据库管理员和数据科学家使用.
他说:“从长远来看,更多地关注语言的正交性将是有益的.
”尽管SQL取得了成功,但张伯林认为需要NoSQL数据库和语言来帮助解决现代应用程序中的数据需求.
但现有关系数据库中的巨大数据量,以及MySQL、PostgreSQL和SQLite等用于构建新应用程序的开源关系数据库的流行,意味着SQL不太可能被取代.
尽管他的语言失败了,但Stonebraker说,数据库行业已经受益于在SQL中有一个单一的“星际”标准.
“在这一点上,我看不到任何东西可以取代它,除非由于某种原因关系数据库不再受欢迎,但我不认为会发生这种情况.
人工智能可能会允许人们使用自然语言来编译SQL,但这只是为它提供了另一个前端,“他说,”软件开发世界中有20到30种流行的编程语言.
在数据库世界里,只有一个.