1.2 数据库技术的发展回顾
数据库技术是数据管理技术一个发展阶段的产物。在数据库技术出现之前,人们普遍采用文件系统管理数据。但是,随着数据规模的不断增长以及数据共享需求的提出,文件系统方法越来越难以适应数据管理的要求。另外,数据库技术自20世纪60年代开始发展以来,经历了网状数据库、层次数据库、关系数据库、对象/对象关系数据库等发展阶段,而且即使到了今天,XML数据库、NoSQL数据库等技术还在不断地发展。了解数据库技术的发展历史,纵观整个数据库领域在最近几十年里的发展历程,会使我们对当今一些新的数据库技术的背景有更深入的理解。
1.2.1 数据管理技术的发展历程
数据库技术从概念上讲只是数据管理技术的一种。因为数据库技术在数据管理方面具有高效、一致等优点,所以得到了广泛应用。要了解数据库技术的发展历程,首先应当对整个数据管理技术的发展历程有所认识。
数据管理技术的发展历程大致可分为三个阶段,即人工管理阶段、文件系统阶段和数据库管理阶段。
1.人工管理阶段
20世纪50年代中期以前为人工管理阶段。当时计算机刚刚面世不久,处理能力还非常弱,数据管理能力也非常有限。
人工管理阶段的数据管理具有以下的特点(见图1-6):
1)数据不保存在计算机中。此时还没有出现磁盘这样的二级存储概念,数据都是纯二进制数,并且以打孔纸带的形式表示。
2)应用程序自己管理数据。根据应用程序的要求要准备打孔纸带形式的数据,这些数据只能被该应用程序使用。不同的应用程序需要准备不同的数据。
3)数据无共享。
4)数据与应用程序之间不具有独立性。如果应用程序发生修改,原先的数据一般不能继续使用,需要再重新准备打孔纸带。同理,如果数据修改了,应用程序也同样无法处理。
5)只有程序的概念,没有文件的概念。此时还没有文件存储的概念。
图1-6 人工管理阶段的数据管理特点
2.文件系统阶段
在20世纪50年代中期到60年代中期,出现了文件系统形式的数据管理技术。它主要是随着操作系统技术的发展而出现的。
这一阶段数据的主要特点是以文件形式保存和管理。这一阶段数据管理的主要特点可归纳为以下几点(见图1-7):
1)数据以文件形式存在,由文件系统管理。
2)数据可以长期保存在磁盘上。
3)数据共享性差,冗余大。冗余是由于必须建立不同的文件以满足不同的应用。例如,在一个教学信息管理系统中,教师数据同时被选课、科研管理、人事管理等应用使用,在文件系统阶段,只能将教师数据文件复制到这些不同的应用中。这样一方面带来了数据的冗余存储,另一方面如果某些教师数据发生了变化,则很容易出现数据的不一致。
4)数据与应用程序之间具有一定的独立性,但非常有限。应用程序通过文件名即可访问数据,但文件结构改变时必须修改程序。
图1-7 文件系统阶段的数据管理特点
3.数据库管理阶段
20世纪60年代末开始,数据管理进入了数据库管理阶段。这一阶段引入了DBMS实现数据管理(见图1-8),其主要特点如下:
1)数据结构化。DBMS采用了数据模型来组织数据,不仅可以表示数据,还可以表示数据间的联系。
2)高共享,低冗余。应用程序之间可以高度共享数据,并且可以保证数据存储的最小冗余。
3)数据独立性高。数据的修改不会影响应用程序的运行,具有高度的数据独立性。
4)数据由DBMS统一控制,应用程序中所有的数据都由DBMS负责存取。
图1-8 数据库管理阶段的数据管理特点
1.2.2 数据库技术的发展历程
数据库技术从20世纪60年代末开始发展,至今仍是计算机领域中一个非常活跃的研究方向。下面的时间表简单地总结了数据库技术发展历程中的一些里程碑。
1)1961年,通用电器(GE)的Charles W.Bachman设计了历史上第一个DBMS——网状数据库系统IDS(integrated data store)。Bachman本身是一名工业界的研究人员,为了解决GE项目中的复杂数据管理问题而设计了IDS,开创了数据库这一新的研究领域。Bachman本人也因为在网状数据库方面的贡献于1973年获得了计算机领域的最高奖项——图灵奖。他是第一位获得图灵奖的数据库研究人员。
2)1968年,IBM设计了层次数据库系统IMS(information management system)。
3)1969年,CODASYL(数据系统语言协会)的DBTG(database task group,数据库任务组)发表了网状数据模型报告,奠定了网状数据库技术。层次数据库技术和网状数据库技术一般被合称为第一代数据库技术。
4)1970年,IBM的Edgar F.Codd在Communications of ACM上发表了论文“A Relational Model of Data for Large Shared Data Banks”,提出了关系数据模型的概念,奠定了关系数据库理论基础。关系数据模型采用了一种简单、高效的二维表形式来组织数据,从而开创了数据库技术的新纪元。Edgar F.Codd本人也因为在关系数据模型方面的贡献于1981年获得了图灵奖。关系数据库技术也被称为第二代数据库技术。
5)1973年—1976年,Edgar F.Codd牵头设计了System R。System R是数据库历史上第一个关系数据库原型系统,其字母R是Relation的首字母。之所以称之为原型系统而不是产品,是因为System R开发完成后并没有及时进行商业化,从而导致Oracle后来居上。在这期间,加州大学伯克利分校的Michael Stonebraker设计了Ingres。Ingres是目前开源DBMS PostgreSQL的前身。在20世纪70年代,Ingres是少数几个能和IBM的IMS竞争的产品。
6)1974年,IBM的Ray Boyce和Don Chamberlin设计了SQL语言。SQL语言最早是作为System R的数据库语言而设计的。经过Boyce和Chamberlin的不断修改和完善,最终形成了现在流行的SQL语言。目前,SQL语言已经成为ISO国际标准。前面提到的Ingres就是因为没有在其系统中支持SQL语言导致了最终没落。
7)1976年,IBM的Jim Gray提出了一致性、锁粒度等设计,奠定了事务处理基础。Jim Gray本人也因为在事务处理方面的贡献获得了1998年的图灵奖。这是第三位获得该奖项的数据库研究人员。
8)1977年,Larry Ellison创建了Oracle公司,1979年发布Oracle 2.0,1986年Oracle上市。Oracle公司的创建和发展是一个传奇。Larry Ellison在执行美国国防部的一个项目时遇到了数据管理方面的问题,后来他读到了Edgar F.Codd发表的关于System R的论文,于是基于System R的思想他很快地实现了一个数据管理系统,并且将其商业化。在后面的发展中,Oracle很果断地采取了兼容SQL的做法,使其逐步占领了数据库领域的龙头地位。Oracle的发展对数据库技术的商业化起到了十分重要的作用。
9)1983年,IBM发布DB2。Oracle在商业领域的成功,让IBM意识到了数据库技术的发展前景。凭借其雄厚的技术实力,IBM马上推出了商业化DBMS DB2。这一产品至今仍在市场上占据重要地位。
10)1985年,面向对象数据库技术被提出。面向对象数据库技术是随着面向对象程序设计技术(object oriented programming,OOP)出现的,它实质上是持久化的OOP。
11)1987年,Sybase 1.0发布。
12)1990年,Michael Stonebraker发表“第三代数据库系统宣言”,提出了对象关系数据模型。面向对象数据库及对象关系数据库技术标志着第三代数据库技术的诞生。但从商业应用上看,第三代数据库技术还远远赶不上关系数据库技术。
13)1987年—1994年,Sybase和Microsoft合作,发布了Sybase SQL Server 4.2。后合作破裂,Sybase继续发布了Sybase ASE 11.0。
14)1996年,Microsoft发布了Microsoft SQL Server 6.5。Microsoft SQL Server是很特殊的一个产品,其版本号直接从6.5开始。因为Microsoft和Sybase合作破裂后双方都拥有了Sybase SQL Server的源码,但SQL Server这一名称从此开始属于微软,而Sybase则启用ASE作为产品名称。
15)1996年,开源的MySQL正式发布。MySQL后来被Oracle收购,目前已经是数据库领域影响较大的DBMS之一。按照最新的DB-Engines排名,其流行度仅次于Oracle,排在全世界第二位。
16)1998年,出现了半结构化数据模型(XML 1.0)。由于网络数据管理需求的不断增长,XML数据管理技术在近年受到了重视,至今仍是数据库领域的一个研究热点。曾经有人将XML数据库技术命名为“第四代数据库技术”,但没有得到认可。
17)2005年,Michael Stonebraker等人开发完成C-Store。C-Store是列存储的DBMS(column-based DBMS),它完全抛弃了传统基于行记录的数据库存储方式,开创了一个全新的研究方向。Stonebraker也因为在数据库系统创新和应用方面的贡献获得了2015年的图灵奖。
18)2007年,NoSQL(非关系数据库)在Web领域大行其道。传统的SQL数据库技术经过了几十年的发展和应用,在新的应用领域如Web、云计算等面临着一些数据表示、查询处理方面的新问题。NoSQL数据库技术被提出并且得到了多个互联网企业的支持,包括Amazon(Dynamo)、Google(BigTable)、Facebook(Cassandra)等。目前,NoSQL在互联网领域得到了广泛的应用,但在传统领域如银行、证券、政府部门等还依然难以替代关系数据库技术。