27岁发明SQL以后,上帝把他带走了

开发 开发工具
1974年,图灵奖获得者查尔斯·巴赫曼参加一次数据库会议,遇到了埃德加·科德。科德还没有图灵奖加身,但其关系数据库却如同一轮红日从东方升起,图灵奖是早晚的事儿。

 [[379288]]

1974年,图灵奖获得者查尔斯·巴赫曼参加一次数据库会议,遇到了埃德加·科德。

科德还没有图灵奖加身,但其关系数据库却如同一轮红日从东方升起,图灵奖是早晚的事儿。

一位是网状数据库的领袖,另外一位是关系数据库的旗手, 两位大宗师展开了一场火星撞地球般的论战。

 

对于现在的程序员来说,MySQL,Oracle等关系数据库是司空见惯的事情。

在数据库的课本上,几乎通篇介绍关系数据库, 层次数据库和网状数据库仅仅是作为数据库历史的一个小小的点缀。

但是在70年代,新生的关系数据库却饱受质疑。

因为当时大家都认为,程序员应该是数据结构的导航者, 程序员能在网状数据库中记住每条记录和其他记录之间的关系,然后通过“指针”在各条记录之间导航访问。

 

科德的想法完全不同:程序员不应该接触底层的物理结构。

应该有个更高层的、声明式的语言来访问数据,完全和数据库的底层数据存储方式隔离。

用声明式的语言来描述查询,那数据库能不能“聪明地”把它转化成底层的物理查询呢?

 

要知道,高级语言(如Fortran)的编译器,可是费了很大的劲才被开发出来。

1972年,IBM招兵买马,决定攻下这座山头。

IBM以科德所在的加州圣何塞研究院为中心,开发一套关系数据库的原型产品。

加入这个原型项目的有两个年轻的博士生,他们两个一起将会做出一个名垂青史的伟大贡献。

 

张伯伦和博伊斯都非常认可科德的关系模型。

觉得这个想法既简单又优美,只有一个缺点:太数学化了!

 

基于关系模型,科德提出的查询方案更加让人生畏。

 

张伯伦和博伊斯决定把数学部分给隐藏起来。

他们把关系称为表,然后把复杂的数学符号替换成简单的英语SELECT FROMWHERE, 这样普通人都能理解。

 

最终,晦涩的关系代数和关系演算变成了非专业人士都能理解的英语。

 

他俩把这门语言叫做 SEQUEL:Structured English Query Language ,既结构化的英语查询语言。

后来,由于SEQUEL已经是一家英国公司的商标,两人灵机一动,改名为更简单,更容易记忆的SQL

 

在当时,IBM还没有把SEQUL给产品化的想法,于是允许张伯伦和博伊斯把论文在一个技术会议上发表。

他们俩通过掷硬币的方式来确定谁去宣读论文,最后博伊斯赢了。

 

但不幸的是,会议之后仅仅一个月, 博伊斯便因为脑瘤去世,年仅27岁。

 

博伊斯的贡献还不仅仅是SQL,他和科德合作,建立了一个数据库课本上必讲的概念:BCNF范式。

 

痛失挚友的张伯伦继续前行,完成博伊斯的遗志。

他被任命为System R的技术经理,在System R中实现SQL, 同时用来证明关系数据库的能力:能不能胜任商业的事务处理。

于此同时,为了同一个目的, UC Berkeley也在开发一个叫做Ingres的关系数据库, 不过他们提出了一套自己的查询语言:QUEL

 

到了80年代, 计算机的价格持续下降,终于到了一个临界点:大量的公司都可以购买计算机和软件,把他们的纸质表格放到计算机中存储。

对数据库的需求开始激增, 由于“表”非常容易理解,开发基于关系数据库的程序变得简单,System R 和 Ingres 都获得了成功, 但是SQL和QUEL到底谁能一统江湖呢?

 

这时候,在科德所在的城市圣何塞,一个叫Larry的年轻人改变了天平的平衡。

 

Larry 立刻和他两个朋友一起成立了一个小公司,开发基于VAX小型机的关系数据库。

深受张伯伦和博伊斯论文影响的他自然选择了SQL。

 

1979年,Oracle正式问世,Larry凭借“关系”,成功地把数据库卖给了多个美国政府部门。

 

Oracle 在美国政府中的应用非常成功,以至于美国政府发布了一个联邦信息处理标准,指定在联邦数据库中要使用SQL,而不是别的查询语言!

你绝对想不到吧,现在恶名累累的Oracle居然对SQL的普及做过重大的贡献。

很快,SQL被ANSI, ISO等重磅机构采纳为正式标准。

 

得到官方认证的SQL击败了QUEL,成为了最终的胜利者。

 

到了90年代,连Ingres自己也放弃了QUEL ,开始拥抱SQL。

 

关系数据和SQL在八九十年代横扫市场,占据了主流。

科德于1983年获得图灵奖。张伯伦于1988年获得ACM 软件系统奖。

 

90年代后期,一个新的数据格式出现了:XML

XML非常火热,大家恨不得什么都要和XML扯上关系。

 

这种数据格式和关系数据库大相径庭,它也面对这样一个问题,如何从中进行查询。

张伯伦发挥自己的专长,为它定义了一套新的查询语言 XQuery。

 

但是时间证明,XML并没有成为广泛使用的数据存储格式, 所以XQuery也就没有像SQL那样被广泛使用。

 

SQL经过多年的发展,产生了广泛的影响力,成功地占据了广大程序员的心智。

很多产品为了降低学习成本,虽然底层不是关系数据库,也努力向SQL靠近,尤其是SELECT、FROM 、 WHERE、Order By、Group等核心概念。

 

SQL成了数据查询的王者。

直到有一天,有个叫NoSQL的家伙带着一帮小弟出现了。

 

NoSQL将会在下周和朋友们见面,敬请期待!

 

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2021-01-23 20:00:53

程序员技能开发者

2016-03-11 19:01:15

2022-08-26 14:58:30

编程代码

2015-03-18 10:04:06

LyftUber

2020-04-17 10:05:05

自动驾驶特斯拉人工智能

2009-08-12 09:27:31

Google搜索

2013-05-17 10:02:50

SEOmoz创始人按时下班

2017-12-16 12:31:34

程序员跳楼身亡

2013-03-18 15:27:54

中兴通信蒙古国

2013-05-15 10:23:03

云计算发展警察突击互联网

2020-08-04 11:30:15

开发鼠标发明

2021-03-16 10:21:42

互联网工程师技术

2009-07-23 09:41:32

程序员职业发展

2018-01-26 14:41:04

编程Python开发

2022-06-15 17:55:43

IE浏览器Windows微软

2012-11-21 11:14:06

Windows 1.0

2022-11-05 20:29:22

科技

2014-08-20 13:35:26

流量170卡

2016-03-07 10:59:07

电子邮件

2020-12-03 06:19:52

程序员经济职场
点赞
收藏

51CTO技术栈公众号