1
数据库原理与应用技术
1.2.1.3 1.1.3 数据管理技术的发展
1.1.3 数据管理技术的发展

从最早的商用计算机起,数据处理就一直推动着计算机技术的发展。事实上,数据处理自动化早于计算机的出现。Hollerth发明的穿孔卡片,早在20世纪初就用于记录美国的人口普查数据,且用机械系统来处理这些卡片并列出结果。穿孔卡片后来被广泛作为将数据输入计算机的一种手段。

数据处理的核心问题就是数据管理。计算机数据管理随着计算机硬件(主要是外存)、软件技术和计算机应用的发展而不断发展,大致经历了以下几个阶段:人工管理阶段、文件系统阶段、数据库系统阶段、分布式数据库系统阶段和面向对象的数据库系统阶段。

1. 人工管理阶段

20世纪50年代以前,人们把计算机当成一种计算工具,主要用于科学计算。这一时期就是我们所说的数据的人工管理阶段。通常的办法是:用户针对某个特定的求解问题,首先确定求解的算法;然后利用计算机系统所提供的编程语言,直接编写相关的计算程序;最后将程序和相关的数据通过输入设备送入计算机,计算机处理完后输出用户所需的结果。不同的用户针对不同的求解问题,均要编写各自的求解程序,整理各自程序所需的数据,数据的管理完全由用户自己负责。

这一时期数据管理的特点是数据与程序不具有独立性。数据由程序自行携带,这就使程序严重依赖数据。如果数据类型、格式,或者数据量、存取方法、输入/输出方式等发生变化,程序就要做出相应修改。同时,因为没有统一的数据管理软件,数据的存储结构、存取方式、输入/输出方式等都由应用程序处理,这就给应用程序开发人员增加了很重的负担,并且效率较低。此阶段还有大量的数据冗余。由于数据是面向应用程序的,一个程序携带的数据,在程序运行结束后就连同该程序一起退出计算机系统。如果别的程序要共享该程序的数据,只能重新组织携带。因此,程序间经常会存在大量的重复数据。人工管理阶段的程序与数据的关系如图1-2所示。由图1-2可知,该阶段的数据在程序内部,程序和数据之间是一一对应的。

图1-2 人工管理阶段程序与数据的关系

2. 文件系统阶段

20世纪50年代后期至60年代中后期,计算机开始大量用于数据处理工作,大量的数据存储、检索和维护成为紧迫的需求。为了方便用户使用计算机,提高计算机系统的使用效率,产生了以操作系统为核心的系统软件,以有效地管理计算机资源。文件是操作系统管理的重要资源之一,而操作系统提供了文件系统的管理功能。在文件系统中,数据以文件形式组织与保存。文件是一组具有相同结构的记录的集合。记录是由某些相关数据项组成的。数据组织成文件后,就可以与处理它的程序相分离而单独存在。数据按其内容、结构和用途的不同,可以组织成若干不同命名的文件。文件一般为某一用户(或用户组)所有,但也可供指定的其他用户共享。文件系统还为用户程序提供了一组对文件进行管理与维护的操作或功能,包括对文件的建立、打开、读/写和关闭等。应用程序可以调用文件系统提供的操作命令来建立和访问文件,应用系统就成了用户程序与文件之间的接口。在这一阶段,程序和数据间的关系如图 1-3所示。

图1-3 文件系统阶段应用程序与数据的关系

用户在设计应用程序时,只要按文件系统的要求来建立和使用相应的数据文件,考虑数据的逻辑结构和特征、规定的组织方式与存取方法就行,而不必关心数据的物理存储等各方面的具体细节。这简化了应用程序对数据的直接管理功能,提高了系统的使用效率,对数据的管理也因此进入了所谓的文件系统阶段。这个阶段的数据管理虽然较人工管理阶段迈进了一大步,但它仍有以下弊端。

(1) 应用程序的开发效率低。应用程序开发人员必须对所用文件的逻辑结构和物理结构有清楚的了解。文件系统只提供建立、打开、读/写、关闭等几个低级的文件操作命令,对文件的查询、修改等处理都必须在应用程序内解决,这样就不可避免地导致应用程序功能上的重复设置。

(2) 文件的设计很难满足多种应用程序的不同要求,数据冗余不可避免。在文件系统中,没有维护数据一致性的监控机制,数据的一致性由用户自己维护。这样,在复杂的大型信息系统中,要保证数据的一致性,几乎不可能实现。

(3) 数据独立性差。文件系统中文件结构的设计是面向应用程序的,文件结构的每一处修改都将导致应用程序的修改,而随着应用环境和需求的变化,文件结构的修改是经常发生的,因此,应用程序的维护工作量很大。

(4) 文件系统一般不支持对文件的并发访问。现在的计算机系统多为多通道程序系统,允许多个应用程序并发运行。但文件系统一般不支持多个应用程序对同一文件的并发访问。典型应用是航空公司的机票自动查询和订票系统,查询通常是询问在某一段时间内,从某个城市飞往另一个城市的航班有什么座位可供选择及机票的价格,数据更新可以是为旅客登记航班、分配座位等。而任何时刻都可能会有多个票务代理同时来访问数据文件的某些部分,因此系统必须能够支持这种并发访问,同时要能够避免“两个票务代理同时卖出了同一座位的机票”之类的错误发生。文件系统在这一点上是无能为力的。

(5) 无法对数据进行统一管理。由于数据缺少统一管理,在数据的结构、编码、表示格式、命名及输出格式等方面不容易做到规范化、标准化,在数据的安全保密方面也难以采取有效措施。

这些问题阻碍了数据处理技术的发展,不能满足人们日益增长的信息需求。应用需求和计算机技术的发展促使人们研究新的数据管理技术,因此,数据库技术就应运而生了。

3. 数据库系统阶段

从20世纪60年代后期开始,计算机应用于管理的规模更加庞大,需要计算机管理的数据急剧增长,对数据共享的要求也与日俱增。随着大容量磁盘系统的使用,计算机联机存取大量数据成为可能;软件价格相对上升,硬件价格相对下降,使独立开发系统和维护软件的成本增加,文件系统的管理方法已无法满足要求。为了解决独立性问题,实现数据统一管理,最大限度地实现数据共享,必须发展数据库技术。数据库技术为数据管理提供了一种较完善的高级管理方式,它克服了文件系统方式下分散管理的缺点,对所有的数据实行统一、集中管理,使数据的存储独立于它的程序,从而实现数据共享。

数据库是通用化的相关数据的集合,它不仅包括数据本身,而且包括相关数据之间的联系。数据库中的数据通常是整个信息系统全部数据的汇集,面向所有合法用户,其数据结构独立于数据的程序。数据库的建立、使用和维护等操作由专门的软件系统即DBMS统一进行。该阶段应用程序与数据的关系如图1-4所示。

图1-4 数据库系统阶段应用程序与数据的关系

这个阶段的数据库系统有以下特点。

(1) 从全局观点组织数据。在数据库系统中,对于数据,不仅要描述数据本身,而且要描述数据之间的联系。从整体看,不仅要考虑一个应用的数据结构,更要考虑整个应用的数据结构。数据库系统实现整体数据的结构化,是数据库的一个主要特征。

(2) 实现数据共享,减少数据冗余。数据库从整体角度描述数据,数据是面向整个系统的,因此数据可以被多个用户、多个应用程序共享使用。数据共享可以大大减少数据冗余,节约存储空间,减少存取时间,避免数据之间的不相容性和不一致性,更好地实现数据规范化和标准化。

(3) 采用特定的数据模型,具有较高的数据独立性。在数据库系统阶段,由DBMS对数据进行统一管理,用户可以在更高的抽象级别上观察和访问数据,而不必考虑有关文件的建立、打开、读/写、关闭等一些低级操作,也不必关心数据存储和其他实现的具体细节。同时,DBMS屏蔽了对文件结构所做的一些修改,从而减少了应用程序维护和修改的工作量,提高了数据的独立性。

(4) 有统一的数据控制功能。数据库是系统中各用户的共享资源,因此系统必须提供数据的安全性、完整性和并发性等控制机制。这些在文件系统中难以实现的功能在DBMS中都一一实现了。数据安全性访问控制能保护数据不被非法使用,且能防止数据库被非法使用而造成数据的泄密和破坏。完整性控制能保证数据的正确性、有效性和相容性,在发生故障的情况下能实现数据一致性的恢复功能。并发控制能使用与不同类型用户交互的多用户界面,保证并发访问时的数据一致性。

目前,数据库系统的使用非常广泛。

4. 分布式数据库系统阶段

20世纪70年代后期,随着计算机硬件系统与通信系统的发展,分布式数据库应运而生,它是数据库技术和计算机网络技术结合的产物。所谓分布式数据库系统是由一组数据组成的,这些数据物理上分布在计算机网络的不同节点(也称为场地)上,逻辑上则属于同一个系统。分布式数据库实质上是指一个数据在多个不同地理位置存储的数据库。数据库的某一部分在一个位置存储和处理,数据库的其他部分在另外一个或多个位置存储和处理。

分布式数据库本身是分布的,能很好地适应一个单位的具体需求,用户可以根据自己的实际需要与能力来构建自己的分布式网络系统。如果经济比较紧张,开始时可以少建立一些节点,以后需要扩大时再增加节点,因此灵活性好,可扩充性强。

由于数据是分布的,所以通常处理也是分布的,也就是说,位于本地计算机上的数据通常由本地计算机处理,降低了对网络服务器的处理要求,提高了整个系统的处理能力。

虽然数据是相关的,要为各个用户所共享,但是异地访问的数据往往比本地访问的数据要少得多,因而减少了通信的开销,提高了系统的性能。

由于数据分布在不同位置的计算机上,若某些计算机出了故障,但其他节点计算机仍可正常工作,因此不会导致整个数据的破坏。如果进一步采用数据冗余技术(例如,将某些重要的数据定期补充到其他节点计算机上),则整个系统还可以具有一定的容错能力。

作为一个良好的分布式数据库系统,需要很好地解决分布式数据库的维护和数据一致性的问题,解决分布式环境下的数据安全保密问题。

5. 面向对象的数据库系统阶段

从20世纪80年代开始,随着数据库技术应用领域的进一步拓宽,要求数据库不仅能方便地存储和检索结构化的数字和字符信息,而且可以方便地存储和检索诸如图形、图像等复杂的信息。传统的DBMS很难处理这些复杂的数据对象,如包括复杂关系、CAD数据库中的设计数据。若要在关系型数据库系统中处理这些复杂的数据对象,则需要使用专门的应用程序把这些复杂的数据对象分解成适合于在二维表中存储的数据。面向对象的数据库可以像对待一般对象一样存储这些数据与过程,这些对象可以方便被系统检索。

在面向对象的数据库中,存储的对象除具有简单数据类型的对象外,还具有非常复杂的数据类型对象,如图形、图像、声音等,这些复杂的数据类型可以由基本数据类型组成。在面向对象的数据库系统中,可以以整型、实型、布尔型、字符串型等基本类型为基础,使用记录结构、聚集类型、引用类型等类型构造符构造新的数据类型。

在数据库研究领域,有关面向对象数据库系统的研究是近几年来的热点之一,主要包括以下几个主要方面:一是以关系数据库和SQL语言为基础,研究其扩展关系模型,目前, Informix、DB2、Oracle、Sybase等关系数据库厂商都在不同程度上扩展了关系模型,推出了对象关系数据库产品。二是以面向对象的程序设计语言为基础,研究持久化程序设计语言,支持面向对象模型。例如,Servialogic公司的Gemstone是以面向对象语言Smalltalk为基础开发的。三是研究开发新的面向对象数据库系统,支持面向对象数据模型,如美国ItascaSystem公司的Itasca产品等。