飞道的博客

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

471人阅读  评论(0)

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

他俩把这门语言叫做  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将会在下周和朋友们见面,敬请期待!


转载:https://blog.csdn.net/coderising/article/details/113287511
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场