第一节 数据库技术的产生与发展
数据库技术产生于20世纪 60 年代中期,几十年来得到了迅速发展。进入 21世纪,信息和知识更加迅速膨胀,数据库技术在组织和利用庞大的信息和知识方面将起着越来越重要的作用。人类活动的整个历史都贯穿着对信息(或数据)的收集、处理、保存和利用。20 世纪60 年代以来,随着社会生产力的高速发展,信息量急剧膨胀,整个人类社会正成为信息化社会。人们对信息和数据的利用和处理已进入自动化、网络化和社会化阶段,如银行储蓄、股票交易、资料查询、气象预报、机票预定等。这些任务既需要大量数据,又要求快速处理并及时得到结果,是传统的人工方法不可能完成的。飞速发展的计算机技术使上述大规模的数据处理得以实现。即使是很平常的数据处理,借助计算机也可以极大地提高效率。例如,学生的学籍管理是学校的一项重要工作,靠人工查找期末考试有 3 门或 3 门以上课程不及格的学生姓名、学号、不及格课程不仅很麻烦,还可能出差错。用计算机管理,就可以快速、准确地完成这项工作。随着计算机和网络技术的迅速发展,现在已经能实现全国几百万考生、几千所学校的高考网上录取工作。至于全国范围内的股票交易、信用卡支付已经是很平常的事了。
数据库(Database)这个名词起源于 20 世纪 50 年代。当时,美国为了军事目的将各种情报集中到一起,揭开了数据库技术的序幕。到了 70 年代,数据库得到了蓬勃发展,网状系统和层次系统占主导,关系数据库系统处于实验阶段。从 80 年代起,关系数据库系统逐步取代了网状系统和层次系统。此后,关系数据库得到了长足的发展。70 年代中期以后,分布式数据库系统、面向对象的主动数据库系统、智能型数据库系统的相继出现表明数据库技术在不断向更高的水平发展。从目前情况看,关系数据库仍然占绝对的主导地位,并将影响着数据库技术的发展。正因为关系数据库如此重要,像 Oracle、SQLServer、Informix、Sybase 和 MicrosoftAccess 等大型与中小型关系数据库系统都在不断发展。到现在,数据库技术的发展已经历了如下4个阶段。
1、人工管理阶段
20 世纪 50 年代中期以前,计算机主要用于科学计算。当时在硬件方面,外存储器只有卡片、纸带、磁带,没有像磁盘这样的可以随机访问、直接存取的外部存储设备。软件方面,没有专门管理数据的软件,数据由计算或处理它的程序自行携带。数据处理方式基本是批处理。
其数据管理的特点是:
(1)数据不能保存。因为计算机主要用于科学计算,对于数据保存的需求按一定的规则组织起来,成为一个文件,并取一个文件名,应用程序通过文件名访问该文件,用户不必过多地考虑数据的物理结构,这个问题由文件系统来考虑,减轻了用户的编程强度,文件系统充当了应用程序和数据之间的接口并提供数据的存取方法(读 /写)。一般是将原始数据随使用它的程序一起输入主存,运算处理后将结果数据输出。随着计算任务的完成用户作业退出计算机系统,数据空间随同程序空间一起被释放。
(2)数据管理软件尚不存在。因为没有专门的软件对数据进行管理,用户进行数据处理时,除了要考虑应用程序、数据的逻辑定义和组织外,还必须考虑数据在存储设备上的存储方式和存储的物理地址,从而要求应用程序员必须对各种数据存储结构的性能、实现和维护有较深的了解。应用程序和数据在程序中合成一个整体,互相依赖,一组数据只对应一组程序,因而数据与程序不具有独立性。如果数据的类型、格式或者数据量、存取方法、输入输出方式等改变了,程序必须作相应的修改。此外,由于程序是直接面向存储结构的,因此不存在逻辑结构与物理结构的区别。
(3)只有程序(program)的概念,没有文件(file)的概念。即使有文件,也大多是顺序文件,其他组织方式必须由程序员自行设计与安排。
(4)数据面向于应用。即一组数据对应于一个程序,即使有相同的数据存在,由于多个应用程序只能使用自己定义的数据,从而造成数据的很大冗余。
(5)对数据的存取以记录为单位,灵活性差。
2、文件系统阶段
20世纪50年代后期至60年代中后期,计算机开始大量地用于数据处理工作。大规模的数据存储、检索和维护成为紧迫的需求。在硬件方面,磁鼓、磁盘成为联机的主要外存,数据可直接存取。在软件方面,出现了高级语言和操作系统,操作系统中的文件系统(也称为信息处理模块)是专门管理外存的数据管理软件。数据处理方式有批处理,也有联机实时处理。
其数据管理的特点是:
(1)数据可以保存。由于硬件的发展,大量的数据可以被保存在磁盘上,用户可随时通过文件系统进行查询、修改和增删等处理。
(2)文件的形式多样化。有索引文件、链接文件和直接存取文件等,因而对文件的记录可顺序访问,也可随机访问。但文件之间是独立的,联系要通过程序去构造,文件的共享性差。
(3)数据不再属于某个特定的程序。有了存储文件以后,数据可以被多个应用程序所访问,但文件结构的设计仍然是基于特定的用途,程序仍然是基于特定的物理结构和存取方法编制的,因此,数据结构与程序之间的依赖关系并未根本改变。
(4)对数据的存取基本上还是以记录为单位。在文件系统中,虽然文件系统提供了存取方法,但这只是初级的数据管理。这种文件系统,还未能彻底体现用户观点下的数据逻辑结构独立于数据物理结构的要求。因此,数据的物理结构修改时,仍然需要修改用户的应用程序。文件系统阶段是数据管理技术发展中的一个重要阶段。在这一阶段中,得到充分发展的各种数据结构和各种算法大大丰富了计算机科学,今天的数据库技术也正是在文件系统的基础上发展起来的。
从数据库技术的角度看,文件系统具有三大缺陷:
(1)数据冗余度大。数据冗余是指不必要的重复存储,文件系统中,数据文件基本上与各自的应用程序相对应,相同记录或数据项重复出现在多个数据文件中。数据不能以记录和数据项为单位共享。即使有部分数据相同,只要逻辑结构不同,用户也必须各自建立自己的数据文件,既浪费存储空间,又增大开销。更严重的是,由于不能统一修改,容易造成数据的不一致性。
(2)缺乏数据的独立性。文件系统中,数据文件是为特定领域的专门需要而设计的,服务于某一特定应用程序。数据和程序相互依赖,如果改变数据文件的逻辑结构或组织方法,必须修改相应的应用程序。同样,如果修改应用程序,也将影响数据文件的结构。
(3)数据不能集中管理。除了对记录的存取由文件系统承担以外,文件系统没有对数据统一管理的机制,其安全性与完整性无法保障。数据的维护任务仍然由应用程序来承担。文件是无弹性、无结构的数据集合。所谓无弹性是指由于记录的内部结构由应用程序自己定义,而不是由文件系统来统一管理,因此对现有数据文件的应用不易扩充,不易移植,也不能增删数据项以适用新的应用要求。无结构是指各个数据文件之间是独立的,缺乏联系,不能反映现实世界事物之间的联系。上述问题阻碍数据处理技术的发展,不能满足对信息日益增长的需求,随着计算机技术的进一步发展和计算机应用领域的不断扩大,一种新的数据管理技术———数据库技术产生了。
3、数据库系统阶段
从 20 世纪 60 年代中后期开始,计算机应用与管理的规模更加庞大,需要计算机管理的数据量急剧增加,数据冗余越来越突出,数据共享的必要性也越来越高。在计算机硬件方面,采用了大容量磁盘(数百兆字节以上)系统,使计算机联机存取大量数据成为可能。在计算机软件方面,由于软件价格的上升,使独立开发系统维护软件的成本增加。文件系统的数据管理方法已无法适应开发应用系统的需要。为解决数据的独立性问题,实现数据的统一管理,达到数据共享的目的,发展了数据库技术,使数据管理进入了一个新阶段。数据库(database)是通用化的相关数据集成的集合体,它不仅存储数据,而且还存储数据之间的联系。数据库中的数据面向多种应用,可以被多个用户、多个应用程序共享,为此数据与程序应具有较高的独立性。这就需要一个软件系统对数据实行专门管理,提供安全性和完整性等统一控制机制,方便用户以交互命令或程序方式对数据库进行操作。为数据库的建立、使用和维护而配置的软件称为数据库管理系统 DBMS(database managementsystem),它是在操作系统支持下运行的。
其数据库系统的主要特点是:
(1)实现数据共享,减少数据冗余。数据共享(data sharing)是建立数据库的主要目标之一,在数据库系统中,对数据的定义和描述已经从应用程序中分离开来,通过数据库管理系统来统一管理。数据的最小访问单位是数据项,既可以按数据项的名称存取库中某一个或某一组数据项,也可以存取一条记录或一组记录。建立数据库时,是以面向全局的观点组织数据库中的数据,不像文件系统那样仅仅考虑某一部门的局部应用。数据库中的数据是“集成的”,数据库中存放全组织(如企业)通用化的综合性的数据,可以为多个用户共享,即数据库是多种性质不同的数据文件的统一体,某一类应用的数据通常是总体数据的子集,实现了数据的最小冗余。
(2)采用特定的数据模型。数据库中的数据按数据模型的特定结构组织,并且数据之间存在有机的关联。在文件系统中只表示记录内部的联系,即属性之间的联系,不涉及不同文件记录之间的联系。要想在不同文件中查询相关的数据,必须编写一个程序。在数据库系统中不仅表示属性之间的联系,而且表示实体之间的联系。
(3)较高的数据独立性。数据独立性( data independence)是指数据与应用之间可以互相独立,包括物理数据独立性和逻辑数据独立性。逻辑数据独立性是指局部逻辑数据结构与总体逻辑数据结构间的独立。当总体逻辑数据结构变化时,局部逻辑数据结构可以不变。这样,当添加新的数据项扩充整体逻辑数据结构时,不必改写应用程序。物理数据独立性是指应用程序对存储结构与存取方法的独立性。当存储结构与存取方法改变时,不会影响逻辑数据结构,应用程序也不必重写。在数据库系统中,DBMS 提供映像的功能,确保应用程序对数据结构和存取方法有较高的独立性。用户只面对逻辑结构来操作数据,无需考虑物理结构与存取方法。
(4)统一的数据控制功能。数据库作为多个用户和应用程序的共享资源,对数据的存取往往是并发的,即多个用户同时使用同一个数据库。数据库管理系统提供如下四方面的控制功能:
①数据库并发控制功能:避免并发程序之间的相互干扰,防止数据库被破坏,杜绝提供给用户不正确的数据。
②数据库的安全性控制功能:数据共享的同时带有安全和保密的问题,数据保密涉及控制信息的收集、存储、传播和使用权。数据的安全涉及对数据的存取控制、修改和传播的技术手段,即实现对数据库中数据的合法权检验,保证数据的安全和机密,防止不合法的查询、存入、更改和破坏数据库数据的事件发生。
③数据库的完整性控制功能:数据的完整性(integrity)是指数据的正确性有效性和一致性,防止数据库存在不符合语义的数据和错误的输入与输出。为保证数据库中的数据始终正确。用户可设计一些完整性规则。例如,可把数据值限制在某个范围内,并对数据值之间的联系进行各种检验。
④数据库的恢复功能:在数据库被破坏时或数据不可靠时,系统有能力把数据库恢复到最近某个时刻的正确状态。
综上所述,数据库是一个存储起来为某个特定组织的多种应用服务并具有尽可能小的冗余度的互相关联的数据集合。其数据结构独立于使用数据的程序,对数据的增添、删除、修改和检索由数据库管理系统进行统一的控制,而且数据模型也有利于将来应用的扩展。
4、高级数据库系统阶段
这一阶段的主要标志是分布式数据库系统、面向对象的数据库系统的出现。
(1)分布式数据库系统(distributed databasesystems)
20世纪70年代后期之前,数据库系统多数是集中式的。在20世纪80年代中期已有商品化产品问世,如 ORACLE、SYBASE 等,分布式数据库系统是数据库技术和计算机网络技术相结合的产物,它是一个逻辑上统一、地域上分布的数据集合,是计算机网络环境中各个结点局部数据库的逻辑集合,同时受分布式数据库管理系统的控制和管理。分布式数据库在逻辑上像一个集中式数据库系统,实际上数据存储在处于不同地点的计算机网络的各个结点上。每个结点有自己的局部数据库管理系统,它有很高的独立性。用户可以由分布式数据库管理系统(网络数据库管理系统)通过网络通信相互传输数据。分布式数据库系统有高度透明性,每台计算机上的用户并不需要了解他所访问的数据究竟在什么地方,就像在使用集中式数据库一样。
其主要特点有:
①局部自主:网络上每个结点的数据库系统都具有独立处理本地事务的能力,而且各局部结点之间也能够互相访问、有效地配合处理更复杂的事务。因此,分布式数据库系统特别适合各个部门的地理位置分散的组织机构,例如银行业务、飞机定票、企业管理等。
②可靠性和可用性:分布式系统比集中式系统有更高的可靠性,在个别结点或个别通信链路发生故障的情况下,其他结点可以继续工作。一个局部系统发生故障不至于导致整个系统停顿或破坏,只要有一个结点上的数据备份可用则数据是可用的。可见,支持一定程度的数据冗余是充分发挥分布式数据库系统优点的先决条件之一。
③效率和灵活性:分布式系统分散了工作负荷,缓解了单机容量的压力数据可以存储在临近的常用结点上,如果本结点的数据子集包含了要查询的全部内容,显然比集中式数据库在全集上查找节省时间。
④系统易于扩展:如果在网络上增加一个新结点,分布式数据库系统能够在对现有系统影响较小的情况下实现扩充。因此说,扩大系统规模比集中式系统更加方便、经济、灵活。
(2)面向对象的数据库系统( OODS,object-oriented database systems)
进入20世纪80年代,在数据库领域,虽然关系数据库的使用已相当普遍,但在新的应用领域(例如,现代集成制造系统 CIMS、计算机辅助软件工程 CASE、办公自动化系统 OA、地理信息系统 GIS、知识库系统 KBS)内显得力不从心。为了支持新的应用,人们一般采用的方法是,在传统 DBMS(主要是关系型 DBMS)的基础上针对不同应用进行不同功能扩充,以满足应用需要,但结果常常不能令人满意。在面向对象程序设计方法的影响下,把面向对象的技术与数据库技术相结合,出现了面向对象数据库系统(OODBS,object-oriented database system)。面向对象的数据库系统在逻辑上和物理上都从面向记录上升为面向具有复杂结构的对象,它允许以自然方法并结合数据抽象机制在结构和行为上对复杂对象建立模型,从而大幅度地提高了管理效率,降低了用户使用复杂性,为版本管理、动态模式修改等功能的实现创造了条件。
面向对象的数据库系统主要特点如下:
①OODBS中基本结构是对象而不是记录。在OODBS中,一切事物、概念等都是对象。一个对象可以由多个对象复合而成,一个对象不仅包括描述它的数据,而且还包括对它的操作方法,因而能对现实世界的实体进行自然而直接的模拟,这是传统数据库系统所不能比拟的。在传统数据库系统中,记录与实体不一定相对应,一个记录中可以包括几个实体的信息,一个实体型也可以划分成多个记录类型存储,记录结构带有随意性,不一定反映人们对现实世界的认识。
②OODBS可以定义更多的数据类型。传统数据库系统只提供一些简单的数据类型,如整数、实数及字符串等,而在OODBS中,用户可以通过构造,一个对象类定义自己需要的数据类型。一个对象类定义中,不仅定义了数据结构,还定义了其上的操作,体现了抽象数据类型的特点。因此,与传统数据库系统相比,OODBS 具有容纳不同类型数据对象的能力,具有对不同类型对象进行管理的机制。
③OODBS具有更多的语义。虽然关系模型中的键的概念、层次模型中的父子关系以及网络模型中的系统都提供了一定的语义信息,但总的来说,语义比较贫乏,记录中各个属性的关系和作用是不明确的,数据的语义要由用户来掌握。在面向对象数据库系统中,属性类、子类、超类的概念,可以直接表达现实世界的对象与联系,可表示诸如某个对象由“哪些对象组成”、有“什么性质”处在“什么状态”、哪些对象类具有共同的特征等等,具有丰富的语义信息。
④OODBS允许扩充数据类型。新数据类型可定义为原有类型的子类或超类,系统扩充通过复用已有模式中的信息进行。此外,OODBS还支持版本演化、模式演变等,这些都是传统数据库系统所不具备的。