1.3 数据管理技术的发展
数据库技术是随着数据管理任务的需求而产生的,管理数据是数据库最核心的任务。数据处理是指对各种数据进行收集、加工、存储和传播的一系列活动的总和。数据管理则是指对数据进行的分类、组织、编码、存储、检索和维护,它是数据处理的核心问题。
计算机设计的初衷是进行复杂的科学计算。随着计算机技术的快速发展,人们开始利用计算机进行数据的管理。总体来说,数据管理技术的发展经历了如下几个阶段:人工管理阶段、文件系统阶段、数据库系统阶段。
1.3.1 人工管理阶段
人工管理阶段是指20世纪50年代中期以前。当时计算机的软硬件技术均不完善,人们主要使用计算机进行科学计算。在硬件方面,存储设备只有磁带、卡片和纸带,没有大容量的外部存储器;在软件方面,没有操作系统和管理数据的软件。人工管理阶段的数据处理方式是批处理,而且基本上依赖于人工。人工管理阶段具有如下特点。
(1)数据不能长期保存,用完就删除
当时的计算机主要应用于科学计算,并不需要长期保存数据,只是在需要时输入数据,完成计算后就可以删除数据。
(2)数据的管理由应用程序完成
当时并没有相关的软件来管理数据,数据需要由应用程序自己来管理。应用程序不仅要规定数据的逻辑结构,还要设计数据的物理结构,如存储结构、存取方法等。
(3)数据面向应用,不能共享
数据是面向应用的,一组数据只能对应一个应用程序。当多个应用程序涉及某些相同的数据时,必须各自定义,无法相互利用、相互参照,产生了大量的冗余数据。
(4)数据不独立。
由于是使用应用程序管理数据,当数据的逻辑结构或物理结构发生变化时,必须也对应用程序做相应的修改。
人工管理阶段的应用程序与数据集的对应关系如图1-2所示。
图1-2 人工管理阶段
1.3.2 文件系统阶段
20世纪50年代后期到60年代中期,计算机软硬件技术迅速发展。硬件方面,有了磁盘、磁鼓等可以直接存取的存储设备;软件方面,操作系统中已经有了专门管理数据的软件,称为文件系统。数据处理方式上不仅有了批处理,而且能够联机实时处理。在这个时期,计算机应用范围逐渐扩大,从科学计算领域发展到了数据管理领域。文件系统阶段具有如下特点。
(1)数据实现了长期保存
由于计算机逐步被应用于数据管理领域,数据可以以文件的形式长期保存在外存储器上,以供应用程序进行查询、修改、插入、删除等操作。
(2)由文件系统管理数据
由专门的软件即文件系统管理数据,文件系统把数据组织成相互独立的数据文件,采用“按文件名访问,按记录存取”的技术对文件进行各种操作。文件系统提供存储方法负责应用程序和数据之间的转换,使得应用程序与数据之间有了一定的独立性,程序员可以更专注于算法的设计而不必过多地考虑物理细节而且数据在存储上的改变不一定反映到应用程序上,在很大程度上减少了维护应用程序的工作量。
(3)数据共享率低,冗余度高
在文件系统中,文件仍然是面向应用程序的。当不同的应用程序具有部分相同的数据时,必须要建立各自的文件,由于不能共享相同数据,导致数据的冗余度高。同时,这部分相同数据的重复存储和独立管理极易导致数据的不一致,给数据的修改和维护带来困难。
(4)数据独立性差
文件系统中的文件是为某一特定的应用程序服务的,数据和应用程序之间是相互依赖的关系,要想改变数据的逻辑结构也要相应地修改应用程序和文件结构的定义。对应用程序进行修改,也会引起文件结构的改变。因此数据和应用程序之间缺乏独立性,文件系统并不能完全反映客观世界事物之间的内在联系。
文件系统阶段的应用程序与文件的对应关系如图1-3所示。
图1-3 文件系统阶段
1.3.3 数据库系统阶段
20世纪60年代后期以来,随着计算机性能的日益提高,其应用领域也日益扩大,数据量急速增长,同时多种应用、多种语言互相交叉地共享数据集合的要求也越来越多。这一时期,计算机硬件技术快速发展,大容量磁盘、磁盘阵列等基本的数据存储技术日趋成熟并投入使用,同时价格不断下降;而软件方面,编制和维护系统软件及应用程序所需的成本却在不断增加;在处理方式上,联机实时处理要求更多,人们开始考虑分布式处理。以上种种导致文件系统作为数据管理手段已经不能满足应用的需要。为了满足和解决实际应用中多个用户、多个应用程序共享数据的要求,从而使数据能为尽可能多的应用程序服务,数据库这样的数据管理技术应运而生。数据库的特点是数据不再只针对某一个特定的应用,而是面向全组织,共享性高,冗余度低,程序与数据之间具有一定的独立性,由数据库对数据进行统一控制。数据库系统阶段具有如下特点。
(1)数据结构化。在描述数据时不仅要描述数据本身,还要描述数据之间的联系。数据结构化是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。
(2)数据共享性高、冗余少且易扩充。数据不再针对某一个应用,而是面向整个系统,数据可被多个用户和多个应用共享使用,而且可轻易增加新的应用来共享数据。数据共享可大大减少数据冗余并节省存储空间,并能更好地保证数据的安全性和完整性。
(3)数据独立性高。应用程序与数据库中的数据相互独立,数据的定义从程序中分离出去,数据的存取由数据库管理系统负责,从而简化了应用程序的编制,大大减少了应用程序的维护和修改带来的开销。
(4)数据由数据库管理系统统一管理和控制。数据库为多个用户和应用程序所共享,对数据库中数据的存取很多时候是并发的,即多个用户可以同时存取数据库中的数据,甚至可以同时存取数据库中的同一个数据,为确保数据库数据的正确有效和数据库系统的有效运行,数据库管理系统提供以下几方面的数据控制功能。
数据安全性控制:防止因不合法使用而造成数据的泄露和破坏,保证数据的安全和机密。
数据完整性控制:系统通过设置一些完整性规则,以确保数据的正确性、有效性和相容性。
并发控制:当多个用户同时存取、修改数据库时,可能由于相互干扰而给用户提供不正确的数据,并使数据库遭到破坏,因此必须对多用户的并发操作加以控制和协调。
数据恢复:当数据库被破坏或数据不可靠时,系统有能力将数据库从错误状态恢复到最近某一时刻的正确状态。
数据库系统阶段应用程序与数据的对应关系如图1-4所示。
图1-4 数据库系统阶段