【转载程序人生】从空军机长到大厂程序员,关系数据库之父传奇
埃德加·弗兰克·科德(EdgarF.Codd)在二战时是一名空军机长,退役后进入 IBM 工作,首创关系模型理论,被誉为“关系数据库之父”,并因为在数据库管理系统的理论和实践方面的杰出贡献于1981年获图灵奖。
他一生中为计算机科学做出了很多有价值的贡献,而关系模型作为在数据库管理方面举足轻重的基础理论,被认为是他最引人瞩目的成就。
空军机长转行做程序员
科德于1923出生在英国英格兰多塞特郡的波特兰,长大后进入在牛津的埃克塞特学院学习数学与化学。第二次世界大战爆发以后,年轻的科德应征入伍,在皇家空军服役,受训成为一名出色的飞行员。在1942至1945年间,科德以空军机长的身份参与了许多惊心动魄的空战,为反法西斯战争立下了汗马功劳。
二战结束以后,科德进入牛津大学学习数学,并于1948年取得学士和硕士学位。之后,科德远渡大西洋来到美国谋求发展。机缘巧合之下,科德进入 IBM 公司成了一名程序员,为 IBM 初期的计算机 SSEC编制程序,从此开启了他漫长的计算机生涯。
40岁重返校园学习
1953年,因为对参议员约瑟夫·麦卡锡的不满,他离开美国迁往加拿大渥太华,并应聘到加拿大渥太华的 Computing Device 公司工作,担任开发导弹项目的经理。
1957年,科德重返美国,进入 IBM 公司位于圣何塞的阿尔马登研究中心工作,任“多道程序设计系统”的部门主任一职,期间参加了 IBM 第一台科学计算机701及第一台大型晶体管计算机 STRETCH 的逻辑设计。
STRETCH 完成于1961年。STRETCH 首次采用先行控制方式,最多可重叠执行6条连续的指令,是后来流水线方式的原型,因而被认为是第一台流水线计算机。它还采用交换器和多道程序技术,用多个存储器交叉工作等许多创新技术,因而在计算机发展史上有重要意义和影响。科德在 STRETCH 的研制中主持了第一个有多道程序设计能力的操作系统的开发。
1959年11月,科德在《ACM 通讯》上发表相关文章介绍STRETCH的多道程序操作系统,是这方面的最早的学术论文之一。
在这段工作经历中,科德发觉自己虽然数学基础扎实,但是缺乏计算机相关方面的硬件知识,这无疑影响了自己在这些重大工程中发挥更大的作用,于是他决定重返校园进修。年近四十的科德进入密歇根大学学习计算机与通信专业,并于1963年获得硕土学位,1965年又获得博土学位。经过这段校园学习,科德的理论基础更加扎实,专业知识也更加的丰富。
改进数据库,成为“关系型数据库之父”
上世纪六十年代,计算机逐渐被私营机构所使用,为了针对的不同的企业应用,开发了许多标准和语言。其中有两个用于处理数据的模型:层次模型和关系网络模型。然而,对于这两种模型,编写查询语句来检索信息要求深入了解数据本身的导航结构,因而这是一个十分复杂的任务,一般都是由专门的编程人员来完成。
为此,科德经过多年的潜心研究提出了一个新的解决方案,该方案最早发表在1970年具有创新性的技术论文——《大型共享数据库的关系数据模型》及一系列报告中。
科德建议将数据独立于硬件来存储,程序员使用一个非过程语言来访问数据。该解决方案的关键,是将数据保存在由行和列组成的简单表中,而不是将数据保存在一个层次结构中。按照科德的想法,数据库用户或应用程序不需要知道数据结构来查询该数据。
科德发表该论文之后不久,又发布了更为详细的指导原则,提出了其指导创建关系数据库的12项原则,这些原则为日后关系型数据库的发展奠定了基础,被成为“黄金十二定律”,科德也被誉为“关系型数据库之父”。
荣获图灵奖
美国计算机协会后来把科德的这篇论文列为从1958年以来的四分之一个世纪中具有里程碑式意义的最重要的25篇研究论文之一,因为它首次明确而清晰地为数据库系统提出了一种崭新的模型,即“关系模型”。
“关系”本是数学中的一个基本概念,用来反映客观事物间所存在的一定关系。在计算机科学领域,虽然“关系”的概念十分普遍,比如计算机的逻辑设计、编译程序设计、算法分析和信息检索等,都应用了关系的概念,但是用关系的概念来建立数据模型,用以描述、设计与操纵数据库,却是首次提出。
由于关系模型简单明了,经得起反复推敲,一经提出,便立即引起学术界的极度重视,对数据库理论和实践方面都产生了强烈的冲击。
数据库关系模型提出之后,先前主导市场的基于层次模型和网状模型的数据库产品很快走向衰败,最后黯然退场,一大批关系数据库系统很快被开发出来并迅速占领了商业市场,其交替速度之快,刷新了软件历史。
因为在关系型数据库方面的杰出贡献,ACM 将1981年的图灵奖授予了科德。
IBM错失良机,Oracle悄然崛起
尽管科德后来因关系型数据库方面的研究而获得了图灵奖,但当他的理论最初被公开之后,并没有立即被 IBM 所采纳。当时的 IBM 已经投资了一个称为 IMS 的层次型数据库,而且 IBM 也并没有考虑到关系型数据库潜在的巨大商业利益,所以没有足够重视科德的研究成果,转而它让其他公司去考虑如何进一步实践科德的理论。后来,一个叫做拉里·埃利森(Larry Ellison)的人决定涉足关系型数据库。他在1977年与埃德·奥茨(Ed Oates)和鲍勃·米勒(Bob Miner)一起研制了世界上第一个商用关系型数据库管理系统,并在此过程中,创办了一个公司,这个公司后来发展壮大成了我们今天所熟知的 Oracle 公司。
工作到去世
而对于科德本人来说,他自1970年以后,一直致力于完善和发展关系理论。1972年,他提出了关系代数和关系演算,定义了关系的并、交、差(difference)、投影、选择、连接等各种基本运算,为日后成为标准的结构化查询语言SQL奠定了基础。科德还创办了一个研究所和一个公司,它们分别是关系研究所和Codd & Associations公司,进行关系数据库产品的研发与销售。科德也成为美国国内和国外许多企业的数据库技术顾问。1990年,科德编写出版了专著《数据库管理的关系模型:第二版》,全面总结了他几十年的理论探索和实践经验。2003年4月18日,科德因心脏病在佛罗里达威廉姆斯岛的家中去世,享年79岁。直到去世前,科德还一直继续研究和发表关于数据的规范化、分析和数据建模等主体的文章。