1.2 关系数据库
虽然对于数据的集中存储、管理和共享的问题,网状数据库和层次数据库已经给出较好的解答,但是在数据独立性和抽象级别上仍有较大的欠缺。为了解决这些问题,关系数据库应运而生。
1970年,IBM的研究员Edgar F. Codd发表了A Relational Model of Data for Large Shared Data Banks论文,提出了关系数据模型的概念,奠定了关系数据模型的理论基础,这是数据库发展史上具有划时代意义的里程碑。随后,Edgar F. Codd又陆续发表了多篇文章,论述了范式理论,用数学理论奠定了关系数据库的基础,为关系数据库建立了一个数据模型——关系数据模型。关系数据模型的概念非常简单,结构特别灵活,能满足所有布尔逻辑运算和集合运算规则形成的查询要求;可以搜索、比较和组合不同类型的数据;使用关系数据模型进行数据增加和删除操作非常方便,关系数据模型具有较高的数据独立性和更好的安全保密性。然而,当数据库比较大的时候,查找满足特定关系的数据比较耗时,同时也难以描述空间数据关系。
在关系数据模型的基础上,IBM公司从1970年就开始了关系数据库项目System R的研究和开发。然而,由于IBM已有层次数据库产品IMS,System R产品化进程十分缓慢,直到1980年才完成产品化,作为一个产品正式推向市场。后来,IBM公司在System R的基础上发布了DB2数据库系统。
IBM公司研发进程缓慢,没能在产品上抢占先机。1973年,加州大学伯克利分校的Michael Stonebraker和Eugene Wong利用IBM公司已发布的信息,以及关系模型的理论,开始开发自己的关系数据库系统Ingres。1976年,霍尼韦尔公司(Honeywell)开发了世界上第一个商用关系数据库系统——Multics Relational Data Store。
1974年IBM的Ray Boyce和Don Chamberlin将Edgar F. Codd论述的关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language,结构化查询语言)。SQL是一种操作关系数据库的标准语言,它包括了对数据进行定义、操纵、查询和控制功能的类型分句。用户只需要在高层数据结构上进行数据处理,无须用户指定数据的存取方法,也不需要用户了解具体的数据存储方式,就可以使用SQL对不同关系数据库进行数据操作。SQL有着一体化、使用方式灵活、非过程化和简单易用的特点,几乎所有的关系DBMS(Database Management System,数据库管理系统)产品都支持SQL,例如Oracle、DB2、Sybase、SQL Server、MS Access、MySQL、PostgreSQL等。
1978年,Larry Ellison在为美国中央情报局做一个数据项目的时候,敏锐地发现关系数据库的商机。几个月后,Oracle 1.0诞生了,它除了完成简单关系查询之外,不能做任何事情。但是经过短短十几年,Oracle公司的数据库产品不断发展成熟,成为了数据库行业的巨头。至此,关系数据模型的理论才通过SQL在商业数据库Oracle中使用。
虽然加州大学伯克利分校的Ingres项目结束于20世纪80年代早期,但在Ingres的基础上产生了很多商业数据库软件,包括Sybase、Microsoft SQL Server以及Informix等其他众多的数据库系统。在20世纪80年代中期,加州大学伯克利分校又启动了Ingres的后继项目Postgres,该项目产出了很有影响力的PostgreSQL数据库系统。Ingres作为比较早的数据库系统,对关系数据库的发展产生了重要影响,是数据库发展史上最有影响力的项目之一。
关系数据库系统以关系代数为坚实的理论基础,经过几十年的发展和实际应用,技术越来越成熟和完善,直到今天,关系数据库仍然在数据库领域占据着最重要的地位,应用范围非常广泛。由于Edgar F. Codd在关系数据库理论和实现方面的杰出贡献,他于1981年被授予图灵奖。为了表彰Michael Stonebraker在数据库系统原型和初步商业化方面的巨大贡献,2014年Michael Stonebraker被授予图灵奖。
虽然关系数据库系统的技术很成熟,但随着市场和信息技术的发展,其局限性也逐渐暴露出来,即它能很好地处理所谓的“表格型数据”,却无法处理当前出现的越来越多的复杂类型数据(如文本、图像、视频等)。