40年前的6月,《纽约时报》刊登了一篇文章,这篇文章塑造了信息技术的长期发展方向,而这在计算机科学中几乎没有其他观点能与之相提并论。这篇文章的开头是“大型共享数据库的数据关系模型”,它以一种和模型本身一样简单而优雅的方式总结了它:“必须保护大型数据库的未来用户,让他们不必知道数据是如何在机器中组织的,”IBM研究员埃德加·f·科德(Edgar F. Codd)写道。
它确实保护了他们。当时的程序员和用户主要处理粗糙的本地数据库系统或商业产品,如IBM的信息管理系统(IMS),它基于低级的、分层的数据模型。“这些数据库非常严格,很难理解,”Ronald Fagin回忆道,他是Codd protégé的用户,现在是IBM阿尔马登研究中心的计算机科学家。IMS中的等级“树”是脆弱的。添加单个数据元素、经常出现的情况,甚至是调优更改,都可能涉及大量的重新编程。此外,与IMS一起使用的编程语言是一种类似于汇编程序的低级语言。
但是Codd的关系模型将数据按行和列存储在简单的表中,通过高级数据操作语言(DML)进行访问。该模型提高了抽象级别,以便用户指定什么他们想要,但没有如何去得到它。当他们的需求改变时,重新编程通常是不必要的。这类似于10年前从汇编语言到Fortran和COBOL的过渡,后者也提高了抽象级别,因此程序员不再需要知道和跟踪内存地址等细节。
Yahoo!的用户和云计算首席科学家Raghu Ramakrishnan说:“人们惊讶地发现,复杂的、一页长的(IMS)查询可以在关系语言的几行代码中完成。”
Codd的模式主导了一个数十亿美元的数据库市场,但它不是一夜之间的成功。有人说,这种模式太简单了,根本行不通。其他人说,即使它真的能工作,它也永远不会像经过精细调优的IMS程序那样高效地运行。尽管Codd的关系概念简单而优雅,但他在数学上严谨的语言,关系微积分和关系代数,可能令人生畏。
1969年,一个名为CODASYL的临时联盟提出了一个基于IMS背后概念构建的分层数据库模型。CODASYL声称它的方法比IMS更灵活,但是它仍然需要程序员跟踪比关系模型多得多的细节。它成为许多商业产品的基础,包括后来成为Cullinet的公司的综合数据库管理系统(IDMS)。
在20世纪70年代的大部分时间里,CS社区中围绕模型展开了激烈的辩论,关系热衷者与CODASYL倡导者对立,而IMS用户则在遗留软件的浪潮中顺风顺水。
尽管关系模型非常出色和优雅,但如果不是有三个旨在实现关系数据库管理系统(RDBMS)的项目,它可能仍然局限于计算机科学课程中。在20世纪70年代中期,IBM的System R项目和加州大学伯克利分校的Ingres项目着手将关系概念转化为可操作的、可维护的和高效的计算机代码。开发了对多用户、锁定、日志记录、错误恢复等的支持。
System R用后来的DB2追逐利润丰厚的大型机市场。特别是,System R产生了结构化查询语言(SQL),它成为关系数据库事实上的标准语言。与此同时,Ingres的目标是UNIX机器和数字设备公司(DEC)的小型计算机。
然后,在1979年,另一篇分水岭论文出现了。IBM System R研究人员Patricia Selinger及其合著者的《关系数据库管理系统中的访问路径选择》描述了一种算法,通过该算法,关系系统在用户查询时可以从多个备选方案中选择通向解决方案的最佳路径。它通过从CPU时间、所需磁盘空间等方面考虑各种方法的总成本来做到这一点。
“Selinger的论文确实是使关系数据库系统成为可能的一项工作,”威斯康辛-麦迪逊大学微软Jim Gray系统实验室主任David DeWitt说。“这是一个完整的本垒打。”这篇论文使她在1999年当选美国国家工程院院士,并为她赢得了一系列奖项(包括2002年的SIGMOD Edgar F. Codd创新奖),并且仍然是关系系统查询优化方面的开创性工作。
在Selinger的新思想的推动下,System R、Ingres和他们的商业后代证明了关系系统可以提供出色的性能。IBM的DB2在大型机上挤掉了IMS和IDMS,而Ingres及其衍生产品则独享了快速增长的DEC Vax市场。很快,数据库之战基本上结束了。
在20世纪80年代,DeWitt发现了另一种加速对关系数据库查询的方法。他的伽玛数据库机项目(Gamma Database Machine Project)表明,通过在一个小型计算机集群中使用多个cpu和磁盘,可以实现近乎线性的速度提升。他关于数据分区和并行查询执行的开创性思想在几乎所有的商业并行数据库系统中都得到了应用。
DeWitt说:“如果数据库社区没有从CODASYL转换到关系型,那么整个并行数据库行业就不可能存在。”SQL的声明式(而非命令式)编程模型极大地促进了他的工作,他说。
IBM的费金说,关系模型的简单性对用户来说具有明显的优势,但它还有一个更微妙的好处。“对于像我这样的理论家来说,为它开发理论要容易得多。我们可以找到让模型运行得更好的方法,找到在模型中构建函数的方法。关系模型使得理论家和实践者之间的合作更加容易。”
事实上,理论家和实践者在很大程度上进行了合作,操作技术和应用从他们的工作中产生。例如,他们的合作产生了锁定的概念,通过这个概念,同时的用户可以避免同时更新记录。
关系模式的霸权并非没有挑战。例如,在20世纪80年代末,以面向对象数据库(oodb)的形式出现了一个竞争对手,但它们从未流行起来。对于很多应用程序来说,OODB并不是最佳选择,而且事实证明,将OODB的关键特性添加到关系模型中要比从头开始使用一个新范式更容易。
最近,一些人提出MapReduce软件框架(今年由谷歌申请专利)将取代关系模型,用于非常大的分布式数据集。[参见Moshe Y. Vardi在2010年1月号的第5页所写的“请更多的辩论!通信。显然,每一种方法都有其优点,目前尚无定论。
随着rdbms的不断发展,科学家们正在探索新的探索之路。费金目前的研究重点是异质数据的集成。他说:“一个特殊的情况仍然非常困难,那就是模式映射——将数据从一种格式转换为另一种格式。”“这听起来很直接,但其实非常微妙。”DeWitt感兴趣的是研究人员将如何处理查询地理分布数据库的“未解决问题”,特别是当数据库由不同的组织创建且几乎但不完全相似时。雅虎的Ramakrishnan !正在研究如何在云上维护数据库,在云上服务供应商可以托管许多客户机的数据库。“因此,‘规模’现在不仅仅是数据量,它还包括客户的数量、应用的种类、地点的数量等等,”他说。“可管理性是该领域的关键挑战之一。”
进一步的阅读
科德,E.F.
用于大型共享数据库的数据关系模型。13 . ACM通信1970年6月。
塞林格,p.g.,阿斯特拉罕,m.m.,钱伯林,d.d.,洛里,r.a.,普莱斯,T.G.
关系数据库管理系统中的访问路径选择。1979年ACM SIGMOD数据管理国际会议论文集, 1979年。
Ullman J.D.
数据库和知识库系统原理:第二卷:新技术,W.H. Freeman & Co.,纽约,纽约,1990。
赫勒斯坦和斯通布雷克。
数据库系统阅读(第四版)麻省理工学院出版社,剑桥,马萨诸塞州,2005年。
Agrawal, R.等人
数据库研究的克莱蒙特报告加州大学伯克利分校,2008年9月。http://db.cs.berkeley.edu/claremont/claremontreport08.pdf
©2010 acm 0001-0782/10/0500 $10.00
允许为个人或课堂使用本作品的全部或部分制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或付费。
数字图书馆是由计算机协会出版的。版权所有©2010 ACM, Inc。
以下这封信以《致编辑的信》的形式发表在2010年10月的中国学术期刊(//www.eqigeno.com/magazines/2010/10/99482)上。
——CACM管理员
虽然我们很高兴通信公司在Gary Anthes的《RDBMS生日快乐》(2010年5月)中庆祝了E.F. Codd的重要文章《大型共享数据库的数据关系模型》(1970年6月),但我们也对其中的不准确和错误表述感到失望,包括关于RDBMS诞生之前的历史。
例如,说“Codd的关系模型将数据存储在行和列中……”与Codd的目标完全不一致,Codd的目标是“必须保护大型数据库的未来用户,使他们不必知道数据是如何在机器中组织的”。行和列是Codd关系的规范表示,而不是对物理数据结构的约束。如果这个错误完全破坏了Codd的贡献。此外,没有可行的商业RDBMS将数据纯粹地存储在行和列中,也没有任何供应商完全实现了他的理论使之成为可能的逻辑和物理数据独立性。
其他不准确和误导性的陈述比比皆是:
DB2没有“挤掉IMS和IDMS”。任何商业RDBMS的事务率都需要很长时间才能与IMS竞争,而IMS仍然是一个重要的商业DBMS;
安格尔及其衍生品没有“DEC VAX市场”。Interbase、Oracle和Rdb/VMS是早期的玩家(20世纪80年代),Ingres最初在VAX/VMS上可用,但像许多RDBMS产品一样,在IBM产品引入Unix之前;
“数据库战争”持续了近20年。关系型必须反复地在网络、分层和面向对象的dbms面前证明自己,继续与XML和Hadoop的竞争者竞争;
Map/Reduce是一个非声明性程序员的分布式查询模板,Hadoop分布式文件系统是一个存储模型。两者都没有上升到数据模型或编程语言的级别;
是否“将oodb的关键特性添加到关系模型中比从头开始一个新的范式更容易”从来没有发生过。充其量,特性被添加到SQL和基于SQL的产品中,但是这些被误导的添加破坏了关系模型实现所需功能的方式,即可扩展的域支持;
“查询地理分布的关系数据库”并不是没有解决的问题。实现关系模型的物理数据独立性解决了这个问题;
自1980年以来,许多RDBMS产品提供了物理数据独立性的部分实现,并在工业中得到广泛应用。也许David DeWitt(引用Anthes的话,他是威斯康辛大学麦迪逊分校的微软Jim Gray系统实验室主任)指的是查询异构分布式数据的问题,元数据不足,因为他被引用说数据库“由不同的组织创建”,“几乎但不完全相似”;而且
数据库可伸缩性一直与并发用户和位置的数量、用户种类和可管理性有关,而不仅仅是数据量。我们中的一员(mcgovern)发表了(80年代末、90年代)的研究,评估了沿着这些路线的商业产品的可伸缩性。
大卫McGoveran
博尔德溪,
C.J.日期
claros公司,
---------------------------------------------
作者的回应
E.F. Codd的模型让用户“看到”他们的数据,就好像数据存储在普通的表、行和列中一样。这比其他模型中使用的指针和层次树更容易理解。这种简化是RDBMS模型淘汰IMS和IDMS的原因之一,尽管IMS仍然在一些狭窄(但重要)的领域中使用。然而,正如麦戈文和戴特所指出的,供应商并没有以最纯粹的形式实现Codd的规则。
加里尖刺外壳
弗吉尼亚州阿灵顿
以下这封信发表在2010年7月出版的《致编辑的信》(//www.eqigeno.com/magazines/2010/7/95049)上。
——CACM管理员
Gary Anthes在他的新闻文章《生日快乐,RDBMS!》中提供了很好的报道,但也有一些关于RDBMS诞生前历史的严重错误。(2010年5月),他说:“1969年,一个名为CODASYL的特设联盟提出了一个建立在IMS背后概念上的分层数据库模型。CODASYL声称它的方法比IMS更灵活,但它仍然需要程序员跟踪比关系模型多得多的细节。”
请与维基百科中报道的以下基本事实进行比较:“在1965年CODASYL成立了一个列表处理工作组。这个小组被特许开发COBOL语言扩展来处理记录集合;这个名字的产生是因为Charles Bachman的IDS系统(它是项目的主要技术输入)使用指针链管理记录之间的关系。1967年,该小组更名为数据库任务小组,并于1969年10月发布了网络数据库模型的第一个语言规范,该模型后来被称为CODASYL数据模型。”
自1964年以来,集成数据存储(IDS)一直在持续的生产使用中,首先在GE 200计算机上运行。1966年,它开始支持全国性的24/7订单录入系统(OLTP)。1969年,在GE 600上运行时,它开始支持共享访问(OLTP)数据库,包括锁、死锁检测、自动恢复和重新启动。
IBM直到1969年9月才发布了基于分层数据模型的IMS/360(信息管理系统),当时未来的关系数据库还只是特德·科德眼中的一个闪光。
B.F. Goodrich于1964年从GE公司获得IDS源代码,在为IBM 360(19691971)重新编写时,将其更名为集成数据库管理系统(IDMS)。IDMS被Cullinane(后来的Cullinet)收购(1973年)并在全球销售。IDMS(1989年)被CA(前身为Computer Associates)收购,该公司仍在全球4000多台IBM大型机上积极支持IDMS。英国电信和巴西政府是最著名的IDMS用户,在2005年被评为世界第二和第三大OLTP系统。
更多信息,请参阅IEEE计算历史年鉴(10月- 12月)中关于IDS、IMS、IDMS和其他DBMS产品的参考论文。2009)“主机软件:数据库管理系统”特刊。未来的一期计划涵盖更多的RDBMS最新历史。
查尔斯·w·(查理)巴赫曼
ACM点1973年图灵奖
列克星敦,马
显示所有2评论