数据管理可以从两个方面来理解:一是针对组织业务的管理,负责制定并执行整个组织中关于数据的定义、组织、保护与有效使用的策略、过程和计划;二是依靠技术,负责实现数据作为一种资源的集中控制管理。
在信息社会里,数据管理与计算机技术密切相关,它首先需要以便于处理的某种方式收集数据,并将记录在纸介文件上的数据转换成计算机可处理的形式;然后将收集的数据进行适当的构造,这称为数据组织,其中数据的组织分为逻辑组织和物理组织两种,即数据的逻辑组织是用户或应用程序所使用的数据结构形式,而物理组织则是数据在物理存储设备上的结构形式,这两者之间可以相对独立;为了备用,需要将数据归类进行存储;为了向用户提供信息,存储的数据要能够方便地被选择提取,这称作检索;为了保护数据的正确性和安全性等,必须建立一些相应的规则和执行这些规则的过程来控制数据的存与取,以实现数据管理的目标;同时,保管的数据是那些需要长期、多次使用的数据,但随着时间的推移,数据组织单位的内外环境会发生变化,因而存储的数据在规模和结构方面都可能变化,所以数据管理还必须能够对其进行维护。因此,数据管理的任务就是进行数据的收集、组织、控制、存储、选取、维护,实现在适当的时刻、以适当的形式、给适当的人、提供适当的数据,它是数据处理的中心问题,而数据处理则是指对各种数据进行收集、存储、加工和传播的一系列活动的总和。
随着计算机技术的发展及应用,数据管理技术共经历了人工管理、文件系统和数据库系统三个阶段。
1.人工管理阶段
20世纪50年代中期以前,计算机主要用于科学计算,其所涉及的数据处理工作基本上都是依靠手工方式来进行的。当时,在硬件方面是没有磁盘等直接存取数据的存储设备,数据只能存放在纸带或者卡片上;软件方面只有汇编语言,没有操作系统,更没有专门管理数据的软件,数据处理是通过批处理的方式来实现的,并且程序运行结束后数据不会保存。此阶段数据管理的特点如下。
(1)数据不保存
由于计算机软件和硬件的发展水平还处于起步阶段,当时的计算机主要应用于科学计算,表现为:存储容量有限且价格昂贵,通常一组数据对应一个程序,数据随程序一起输入计算机,处理完毕后即将结果输出,数据空间随着程序空间一起被释放。
(2)应用程序管理数据
当时没有专门的数据管理软件,应用程序的数据由程序自行负责,因而数据的组织方式须由程序员自己设计、说明(定义)和管理。所有包括逻辑结构、物理结构、存取方法等在内的数据库设计工作,都是由应用程序的编写人员来完成,可见程序员的工作负担十分繁重。
(3)数据面向应用
数据是面向应用程序的,一组数据只能对应一个程序。当多个应用程序涉及某些相同的数据时必须各自定义,不能共享,因此程序与程序之间存在着大量的元余数据,数据的独立性差。
2.文件系统阶段
20世纪50年代后期到60年代中期,计算机软、硬件技术发展到了一定阶段。其中,硬件方面配置了磁盘、磁鼓等直接存取存储设备;软件方面,特别是在操作系统中配备了专门的数据管理软件,即文件系统。
文件系统是将数据的逻辑结构和物理结构分离,由“存放方法”实现逻辑结构与物理结构之间的映射。应用程序只涉及数据的逻辑结构,系统决定数据的物理结构,两者之间可以有差别。这样,当物理结构发生改变时,不会导致应用程序的修改,这称为数据的物理独性。数据的物理独立性使应用程序脱离数据的物理结构,使其适用性得以提高。同时,应用程序的编程人员不必关心数据的物理存储细节,因而其生产效率相应也得到提高。
相对于人工管理数据的方法,文件系统管理数据有了很大的改进,具有数据可长期保存专门管理的特点,它提供了物理数据独立性,使应用程序与数据的具体物理存储结构分离,并通过数据的抽取、排序、合并等可以为应用提供新的文件,从而使数据共享成为可能。
但是,在文件系统中,不能实现数据的普通共享,只能实现文件级的共享,而不能在记录或数据项级实现数据的共享。文件的逻辑结构是根据它的应用而设计的,数据的逻辑结与应用程序之间相互依赖。当不同应用程序使用的数据(记录或数据项)大部分相同时,还必须构造各自的文件,这样仍然还存在大量的数据穴余。
3.数据库系统阶段
数据库技术是应数据管理任务的需要而产生的。20世纪60年代后期以来,随着计算技术与工业的迅速发展,计算机日益广泛地应用于企业管理,并对计算机数据管理提出了更高的要求。首先,要求数据作为企业组织的公共资源而集中管理控制,能为企业的各类用户所共享,因此应大量地消去数据穴余,节省存储空间;其次,当数据变更时,能节省对多个数据副本的多次变更操作,从而大大缩小计算机运算时间开销,且更为重要的是不会遗漏某些副本的变更而使系统出现不一致的数据;再次,还要求数据具有更高的独立性,不但具有物理独立性,而且具有逻辑独立性,即当数据逻辑结构改变时,不影响那些不要求这种改变的用户应用程序,从而节省应用程序开发和维护的代价。面对这些需求,用文件系统的数据管理方法已经不能满足,于是数据库技术应运而生,出现了统一管理数据的、专门的软件系统——数据库管理系统。
从文件系统到数据库系统标志着数据管理技术的飞跃。概括起来,与人工管理、文件系统两种数据管理方法相比较,数据库系统具有如下一些特点
- 数据集成
- 数据共享性高
- 数据冗余小
- 数据一致性
- 数据独立性高
- 不同的应用程序(用户)对同样的数据可以使用不同的视图,这意味着应用程序一定范围内修改时,可以只修改它的数据库视图,而不修改数据本身的定义;反之,数据定义的修改,在一定范围内不会引起应用程序的修改。这种独立称为数据的逻辑独立。
- 可改变数据的存储结构或存取方法以响应变化的需求而无须修改现有的应用程序,这称为数据的物理独立。
- 实施统一管理与控制
- 数据的安全性。
- 数据的完整性。
- 并发控制。
- 故障恢复。
- 减少应用程序开发和维护的工作量
数据的集成是数据库管理系统的主要目的。在数据库中,通过相关联数据间定义的逻辑联系,数据被组织成统一的逻辑结构,与数据的物理组织与定位分离,而应用的修改与增只与数据的逻辑结构发生关系。由此,通过数据集成来统一计划和协调遍及各个相关应用领域的信息资源,这样可使数据得到最大程度的共享,且亢余最小。
数据共享是指在数据库中,一个数据可以为多个不同的用户共同使用,也就是说,各个用户可以为了不同的目的来存取相同的数据,他们是从各种不同的角度来看待数据库,即一个数据库有多种不同的用户视图。这些用户视图简化了数据的共享,因为它们可以给每一个用户提供执行其业务职能所要求的数据的准确视图,使用户无须知道数据库的全复杂组成。
当然,共享不只是指同一数据可以被多个不同用户存取,还包含了并发共享,也就是个不同用户同时存取同一数据的可能性。此外,不仅可以为现有的应用(用户)共享,还可开发新的应用来针对数据库中同样的数据进行操作。
在非数据库系统中,每个应用各自会拥有自己的数据文件,这常常带来大量的数据元余。例如,在学生学籍管理应用、学校图书管理应用、校园卡管理应用中,每一个应用都拥有一个包含学生信息的文件。而对于数据库方法,这些独立而有见余的数据文件被集成为一的逻辑结构,并且每一个数据项的值可以理想地只存储一次,从而节约存储空间,避免数据的重复存储。
当然,并非所有的沉余都可以或者应该被消除。有时,由于应用业务或技术上的因,如数据合法性检验、数据存取效率等方面的需要,同一数据可能在数据库中保持多个副本。因此,在数据库系统中,见余是受控的,系统知道兄余,保留必要的兄余也是系统预定的。
通过消除或控制数据允余,可以在一定范围内避免数据的不一致性。例如,假定一位学生的学号信息存储在数据库的两个记录中,当该学生因为调转专业而需要更新他的学号时若无控制,且只更新一个记录时,则会引起同一数据的两个副本的不一致性,此时称数据库是不一致的。
显然,引起不一致的根源是数据允余。若一个数据在数据库中只存储一次,则不会发不一致性。然而,阮余在数据库中是难免的,但它是受控的,所以当发生更新时,数据库系统本身可以通过更新所有其他副本来自动保持数据的一致性。
数据定义与使用数据的应用程序分离称为数据独立。也就是说,数据或应用程序的修改不会彼此引起另一方的修改。数据库系统提供了两层数据独立,分别如下。
这些在传统的文件系统中都是不可能的,因为数据的定义与存取这些数据的逻辑都建立在每个应用程序内,对数据文件的任何变动都要求修改或重写应用程序。
-
数据库管理系统具有对数据的统一管理和控制功能,主要包括数据的安全性、完整性、并发控制与故障恢复等,即数据库保护。
数据的安全性(Security)是指保护数据,以防止不合法的使用而造成数据泄密和破坏,使每个用户只能按规定对某些数据以某些方式进行使用和处理,即保证只有赋予权限的用户才能访问数据库中的数据,防止对数据的非法使用。
数据的完整性(Integrity)是对数据的正确性、有效性和相容性要求,即控制数据在一定的范围内有效或要求数据之间满足一定的关系,保证输入到数据库中的数据满足相应的约束条件,以确保数据有效、正确。例如,确保“性别”的取值只能是“男”或“女”。
并发控制(Concurrency)是指当多个用户的并发进程同时存取、修改数据库时,可能发生相互干扰而得到错误的结构,并使得数据库的完整性早到破坏,因而对多用户的并发操作加以控制和协调。例如,网上购买火车票的应用系统必须能确保不会由于多用户同时购买相同的车票而造成冲突、错误,即必须有并发控制的能力。
计算机产生的硬件故障,操作员的失误以及人为的破坏,都会影响数据库中数据的正确性,甚至造成数据库部分或全部数据的丢失,DBMS必须具有数据库从数据错误状态恢复到某一已知的正确状态的功能,这就是数据库的故障恢复(Recovery)。
数据库方法表现在应用方面的一个优点是:在数据库上开发与维护新的应用所花费的代价和时间大大减少。
由于数据库中的数据具有共享性独立性,使得应用程序的编程人员不再需要承担基本数据文件的设计、建造与维护等繁重负担,因而新的应用程序开发所需的代价和为用户提供服务所需要的时间期限等,都可大大减小。
另外由于应用程序环境,或用户需要发生变化等种种原因,数据必然会频繁的变动,例如,增加新的数据类型,增加或改变数据间的联系,改变数据的结果与格式、采用新存储设备或存取方法等。在传统数据文件环境中,这些变化必然导致相关应用程序修改或重写,而在数据库环境中,由于数据的独立性在一定范围内,数据或相关应用程序,任何一方的改变,都可以彼此不必引起另一方的改变,因此应用程序的维护工作量大大可减少。