1.1 数据管理

数据管理是指人们对数据的分类、组织、编码、存储、查询和维护等活动,是数据处理的关键环节。

1.1.1 数据管理的3个阶段

根据数据管理所提供的数据独立性、数据冗余度、数据共享性、数据间相互联系、数据安全性、数据完整性和数据存取方式等水平的高低,通常将数据管理技术划分为人工管理、文件系统和数据库系统3个发展阶段。

1.人工管理阶段

20世纪50年代中期以前,计算机主要用于科学计算,数据管理处于人工管理阶段,主要表现在以下几个方面:

(1)缺乏数据管理软件支持,依靠应用程序管理数据。在应用程序中程序员不仅要规定数据的逻辑结构,还要设计数据的物理结构,包括存储结构、存取方法、输入方式等。

(2)数据是面向应用的,通常一组数据只能对应一个应用程序,数据难以共享。

(3)应用程序完全依赖于数据,不具有数据独立性,一旦数据的逻辑结构或物理结构发生变化,应用程序就必须做相应修改。

(4)数据长期保存主要依靠纸质存储介质。

2.文件系统阶段

20世纪50年代后期至60年代中期,数据管理进入文件系统阶段。在文件系统中,把数据按其内容、结构和用途组织成若干个相互独立的文件。用户通过操作系统对文件进行打开、读/写、关闭等操作。文件系统管理数据具有以下特点:

(1)文件系统利用“按文件名访问,按记录进行存取”的管理技术,可以对文件进行修改、插入和删除操作。数据存取直接由操作系统(OS)提供支持,即采用“应用程序—OS—数据文件”的存取方式。

(2)数据能够长期保存在存储设备上。

尽管用文件系统管理数据比人工管理阶段有了很大的进步,但面对数据量大且结构复杂的数据管理任务,文件系统显现出诸多的不适应,主要表现在以下几个方面:

(1)数据独立性缺乏。由于文件系统中文件逻辑结构的改变必须修改相应的应用程序,并且当语言环境的变化要求修改应用程序时也会引起文件数据结构的改变,因此,数据与程序间缺乏必要的独立性。

(2)数据冗余度大且易出现数据的不一致性。冗余是指相同的数据在某一存储空间中多次出现。数据冗余会影响数据的完整性,浪费宝贵的存储空间,增加用户查找信息的时间。同时由于相同数据重复存储、各自管理,易产生数据的不一致性。

(3)在文件系统中,尽管其记录内部有结构,但记录之间没有联系,故其整体是无结构的。

(4)数据分散管理,无法提供高强度的安全措施,其安全性、完整性难以保证,并且在数据的结构、编码、输出格式等方面难以做到规范化和标准化。

(5)在文件系统中,文件一般为某一用户或用户组所有,文件是面向应用的,一般不支持多个应用程序对同一文件的并发访问,因此数据共享性差,数据处理的效率较低。

(6)使用方式不够灵活。每个已经建立的数据文件只限于一定的应用,且难以对它进行修改和扩充。

文件系统的这些缺点在规模大、结构复杂的数据管理系统中尤为突出。美国于20世纪60年代的阿波罗登月计划采用了一个基于磁带的零部件生产计算机文件管理系统,其文件管理系统的数据冗余高达60%以上,且只能以批处理方式进行工作,系统也难以维护。

文件系统存在的问题是其本身难以解决的,自身的缺陷造成了数据处理效率低、成本高,且有许多潜在问题需要解决。这种文件系统无法克服的难题正是数据库系统产生的真正原因。

3.数据库系统阶段

自20世纪60年代后期以来,为了解决文件系统无法克服的问题,适应日益迅速增长的数据处理的需要,人们开始探索新的数据管理方法与工具。在这一时期,磁盘存储技术取得重要进展,大容量和快速存取的磁盘相继投入市场,为新型数据管理技术的研制奠定了良好的物质基础。为了解决多用户、多应用共享数据的需求,使数据为尽可能多的应用服务,数据库技术由此应运而生。1961年,美国通用电气公司(General Electric Co.)的查尔斯·威廉·巴赫曼(Charles William Bachman)等人成功开发出世界上第一个网状数据库管理系统(DBMS)——集成数据存储(Integrated Data Store,IDS)系统。IDS奠定了网状数据库的基础,并在当时得到了广泛的发行和应用。IDS具有数据模式和日志的特征,能支持多个COBOL程序共享数据库中的数据。但它只能在GE主机上运行,并且数据库中只有一个文件,数据库中所有的表必须通过手工编码来生成。之后,通用电气公司的一个客户——BF Goodrich Chemical公司改进了整个系统,并将改进后的系统命名为集成数据管理系统(IDMS)。无疑,IDS是数据库系统的先驱,为此Bachman于1973年获得了美国计算机协会(ACM)颁发的图灵(Turing)奖。

20世纪90年代,随着基于PC的客户机/服务器计算模式和企业软件包的广泛采用,数据管理的变革基本完成。数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。因特网(Internet)的异军突起以及扩展标记语言(XML)的出现给数据库系统的发展开辟了一片新的天地。

1.1.2 数据库系统发展的3个里程碑

数据库系统真正具有实用价值是从20世纪60年代后期开始的。在这一时期数据管理技术有了突破性的进展,有3个重要事件标志着数据库管理技术进入数据库系统阶段,这3个事件被称为数据库系统发展的3个里程碑。

1.美国国际商用机器公司推出信息管理系统

1969年美国国际商用机器公司(IBM公司)和Rockwell公司合作,研制成世界上第一个实用的数据库系统IMS(Information Management System),为阿波罗飞船于1969年顺利登月提供了重要保证。IMS是一个DB/DC(Database/Data Communication)系统。它采用以层次数据结构为基础的数据模型,即数据组织在逻辑上呈树形结构。在以后的几年中,IBM公司对IMS系统进行了改进,先后推出了IMS 2、IMS/VS版本。由于IBM公司具有极强的竞争力,从而使IMS系统获得了广泛使用,并对数据库技术的发展产生了重要影响,成为层次模型数据库的典型代表。

2.美国数据系统语言委员会下属的数据库任务组提出了“数据库建议书”

1969年10月,美国数据系统语言委员会(Conference On Data System Language,CODASYL)下属的数据库任务组(Database Task Group,DBTG)提出了“数据库建议书”,建议用数据描述语言(Data Description Language,DDL)描述数据库,用数据操纵语言(Data Manipulation Language,DML)作为主语言的扩充对数据库的数据进行操作。该建议书经过广泛的讨论,提出了180多条修改意见,由DBTG于1971年4月进行修改并发表,通常称这个经过修改的数据库建议书为“1971年DBTG报告”。DBTG报告给出了网状系统均采用DBTG方式的数据库系统。最具有DBTG方案典型风格的商用系统是Cullinet软件公司的IDMS,它可以运行在IBM 360/370、UNIVAC 7090、Siemens 4004、PDP-11/45等机器上。

3.关系数据库系统

关系数据库系统是以二维表的形式组织数据,以关系数学理论为基础的数据库系统。关系数据方法的雏形始于20世纪60年代初,1962年CODASYL发表的“信息代数”(Information Algebra)论文最早将关系方法用于数据管理。此后,1968年D.L.Childs关于集合论数据结构(Set-Theoretic Data Structure, STDS)上的n元关系的研究在IBM7090机上实现,这些研究工作为关系数据库的建立打下了基础。然而系统完备的关系数据库理论的建立是从20世纪70年代开始的。1970年6月,IBM公司San Jose研究所的埃德加·弗兰克·科德(Edgar Frank Codd或E.F.Codd)在美国计算机协会会刊Communication of the ACM上发表了题为A Relational Model of Data for Large Shared Data Banks(大型共享数据库的数据关系模型)的著名论文。在论文中首次全面论述了关系数据库的概念,提出了关系模型,引进了关系代数,推导了关系演算,阐述了数据间存在的函数相关性,概括了关系规范,从而在计算机科学中开创了研究关系数据库理论与方法的新领域。此后,科德又相继发表了多篇关于关系模型的论文,定义了关系数据库的基本概念,引进了规范化理论,提出了数据子语言及其完备性问题,为关系数据库的全面发展奠定了坚实的理论基础。科德作为关系数据库的创始人和奠基人,1981年11月荣获了计算机科学的最高荣誉——图灵奖。

综观数据库系统发展的3个里程碑,可以清晰地看出:描述客观世界的实体及其相互联系的方法可采用不同的数据模型,即用树形结构描述的层次模型、用网状结构描述的网状模型以及用表结构描述的关系模型,与这些数据模型相对应的数据库分别称为层次型数据库、网状型数据库和关系型数据库。

1.1.3 数据库管理系统的3个发展阶段

自20世纪60年代数据库系统诞生以来,50年间数据库领域获得了3次计算机图灵奖(C.W.Bachman、E.F.Codd、J.Gray),充分地说明了数据库是一个充满活力和创新精神的领域。随着计算机技术的飞速发展和应用需求的不断增加,数据库系统的发展也经历了不同的发展阶段。

1.第一代数据库管理系统

20世纪70年代,出现了以网状型数据库和层次型数据库为代表的第一代数据库管理系统。这一时期投入实际应用的数据库系统基本上都是网状型和层次型数据库管理系统,它们已实现数据管理中的“集中控制与数据共享”这一基本目标。

20世纪70年代初,关系数据模型的提出受到了人们的高度重视。然而,当时也有人认为关系模型是理想化的数据模型,用来实现关系型数据库管理系统是不现实的,尤其担心关系数据库的性能难以接受,更有人视其为对当时正在进行的网状数据库规范化工作构成严重的威胁。为了促进对问题的理解,1974年美国计算机协会牵头组织了一次研讨会,会上开展了一场分别以Codd和Bachman为首的支持与反对关系数据库两派之间的辩论。这次著名的辩论推动了关系数据库的发展,使其最终成为现代数据库产品的主流。1976年,IBM公司发布了System R,美国加州大学的伯克利(Berkeley)分校发布了Ingres关系数据库系统。这两个数据库原型系统提供了比较成熟的关系数据库技术,为开发商品化的关系数据库软件创造了有利的条件。IBM公司在System R的基础上先后推出了SQL/DS(1982年)和DB2(1985年)两个商品化关系型数据库管理系统。商品化的Ingres关系数据库软件也于1981年由INGRES公司完成。与此同时,1979年美国ORACLE公司推出了用于VAX小型机上的关系数据库管理软件Oracle(V2.0),它被认为是第一次实现了使用SQL语言的商品化关系数据库管理软件。

数据库理论和技术在20世纪70年代取得了较大的进步,计算机界的一些专家习惯上称20世纪70年代是数据库的年代。

2.第二代数据库管理系统

20世纪80年代,出现了以关系数据库为代表的第二代数据库管理系统。进入20世纪80年代,计算机的快速发展为数据库技术的发展和广泛应用提供了有力的支持。关系数据库由于具有坚实的理论基础,结构简单、操作方便,且查询效率和关系数据库性能方面都取得了突破性的进展,因而在这一时期得到迅猛发展。关系数据库已逐渐成为数据库发展的主流,几乎所有新推出的数据库管理系统都是关系型数据库管理系统。20世纪80年代是数据库技术逐渐走向成熟的时期,DB2、Oracle、Sybase、Informix、Ingres等一批性能稳定的商业化关系数据库管理软件相继进入市场,关系型数据库管理系统已开始应用于大型信息管理系统。

1986年,美国国家标准学会(American National Standards Institute,ANSI)把SQL作为关系数据库语言的美国标准,同年公布了标准SQL文本。SQL标准有3个版本。基本SQL定义是ANSI X3135-89,Database Language-SQL with Integrity Enhancement(ANS89),一般称为SQL-89。SQL-89定义了模式定义、数据操作和事务处理。

SQL-89和随后的ANSI X3168-1989,Database Language-Embedded SQL构成了第一代SQL标准。ANSI X3135-1992(ANS92)描述了一种增强功能的SQL,现在称为SQL-92标准。SQL-92包括模式操作、动态创建和SQL语句动态执行、网络环境支持等增强特性。在完成SQL-92标准后,ANSI和ISO即开始合作开发SQL3标准。SQL3的主要特点在于抽象数据类型的支持,为新一代对象关系数据库提供了标准。目前,SQL的最新标准为SQL:2011。

由于早期的数据库主要用于商业或行政等事务处理,通常把处理常规数据和事务数据为中心的常规数据库称为传统数据库(Traditional Database),因此,有些文献上常称第一代、第二代数据库为传统数据库。

3.新一代数据库管理系统

自20世纪80年代末、90年代初以来,开发新一代数据库技术成为数据库技术研究的热点课题。

进入20世纪90年代,人们对数据库管理系统的功能提出了许多新的期望和需求,除对常规数据进行处理外,还要求对图形、图像、声音等多媒体数据、时态数据、空间数据、知识信息以及各种复杂对象等非常规数据提供有效的数据处理功能。为适应这些应用的需求,人们提出了许多新概念、新思想和新方法,以及一些新的数据模型和新数据库管理系统的体系结构。