零基础学Java项目开发
上QQ阅读APP看书,第一时间看更新

3.2 软件项目数据库架构特性

每一种数据库架构模式都有它自己的特点,选择正确的数据库架构模式来满足需求功能和质量特性是非常重要的。本节总结了数据库架构的共同特性。

3.2.1 实现数据共享

数据共享就是让在不同地方使用不同计算机、不同软件的用户能够读取他人的数据并进行各种操作运算和分析。数据共享包括所有用户可同时存取数据库中的数据,也包括用户可以各种方式通过接口来使用数据库,并提供数据共享。

实现数据共享可以使更多的人更充分地使用已有数据资源,减少资料收集、数据采集等重复劳动和相应费用,而把精力重点放在开发新的应用程序及系统集成上。不同用户提供的数据可能来自不同的途径,其数据内容、数据格式和数据质量千差万别,因而给数据共享带来了很大困难,有时甚至会遇到数据格式不能转换或数据转换格式后丢失信息的棘手问题,严重地阻碍了数据在各部门和各软件系统中的流动与共享。

3.2.2 减少数据的冗余度

数据冗余是指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。数据冗余会妨碍数据库中数据的完整性,也会造成存储空间的浪费。尽可能地降低数据冗余度是数据库设计的主要目标之一。

同文件系统相比,由于数据库实现了数据共享,避免了用户各自建立应用文件,因此减少了大量重复数据和数据冗余,维护了数据的一致性。

为了减少数据冗余,可以使用以下方法。

(1)重复存储或传输数据以防止数据的丢失。

(2)对数据进行冗余性的编码来防止数据的丢失、错误,并提供对错误数据进行反变换得到原始数据的功能。

(3)为简化流程所造成的数据冗余(例如,向多个目的发送同样的信息、在多个地点存放同样的信息),不对数据进行分析而减少工作量。

(4)为加快处理过程而将同一数据在不同地点存放。例如,并行处理同一信息的不同内容,或用不同方法处理同一信息等。

(5)为方便处理而使同一信息在不同地点有不同的表现形式。例如,一本书的不同语言版本。

(6)对大量数据的索引,一般在数据库中经常使用。

3.2.3 数据的独立性

数据的独立性是数据库系统最基本的特征之一。数据独立性是指应用程序和数据结构之间相互独立,互不影响。在三层模式体系结构中,数据独立性是指数据库系统在某一层次模式上的改变不会使它的上一层模式也发生改变的能力。三级模式间的两层映像保证了数据库系统中的数据具有较高的数据独立性。数据独立性包括数据逻辑独立性和数据物理独立性。

(1)物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。即数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构。这样,当数据的物理存储改变时,应用程序不用改变。

为了实现数据库系统模式与内模式的联系和转换,在模式与内模式之间提供了映像,即模式/内模式映像。通过模式与内模式之间的映像,把描述全局逻辑结构的模式与描述物理结构的内模式联系起来。由于数据库只有一个模式,也只有一个内模式,因此,模式/内模式映像也只有一个。通常情况下,模式/内模式映像放在内模式中描述。

有了模式/内模式映像,当内模式改变(如存储设备或存储方式有所改变)时,只要对模式/内模式映像做相应的改变,可使模式保持不变,则应用程序就不受影响,从而保证了数据与程序之间的物理独立性,称为存储数据独立性。

(2)逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即当数据的逻辑结构改变时,用户程序也可以不变。

为了实现数据库系统的外模式与模式的联系和转换,在外模式与模式之间建立映像,即外模式/模式映像。通过外模式与模式之间的映像,把描述局部逻辑结构的外模式与描述全局逻辑结构的模式联系起来。由于一个模式与多个外模式对应,因此对于每个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系,这些映像定义通常包含在各自外模式的描述中。

有了外模式/模式映像,当模式改变(如增加新的属性、修改属性的类型)时,只要对外模式/模式的映像做相应的改变,可使外模式保持不变,则以外模式为依据编写的应用程序就不受影响,从而应用程序不必修改,保证了数据与程序之间的逻辑独立性,也就是逻辑数据独立性。

3.2.4 数据的集中控制

数据的集中控制是指在组织中建立一个相对稳定的控制中心,由控制中心对组织内外的各种信息进行统一的加工处理,发现问题并提出问题的解决方案。这种形式的特点是所有的信息(包括内部、外部)都流入中心,由控制中心集中加工处理,且所有的控制指令也全部由控制中心统一下达,因此可以全面保证数据的完整性、可用性和机密性。

在文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可以对数据进行集中控制和管理,并通过数据模型表示各种数据的组织及数据间的联系。

数据库集中控制的优势如下。

(1)可以降低存储数据的冗余度。

(2)有更高的数据一致性。

(3)存储数据可以共享。

(4)能够实现数据的安全性。

(5)便于维护数据的完整性。

(6)建立数据库所遵循的标准。

3.2.5 数据的一致性和可维护性

数据库一致性是指事务执行的结果必须是使数据库从一个一致性状态转变到另一个一致性状态。保证数据库一致性是指当事务完成时,必须使所有数据都具有一致的状态。在关系型数据库中,所有的规则必须应用到事务的修改上,以便维护所有数据的完整性。

可维护性是衡量一个系统的可修复(恢复)性和可改进性的难易程度。所谓可修复性,是指在系统发生故障后能够排除(或抑制)故障予以修复,并返回到原来正常运行状态的可能性。而可改进性则是系统具有接受对现有功能的改进,增加新功能的可能性。

可维护性实际上也是对系统性能的一种不可缺少的评价体系。它主要包括两个方面:首先是评价一个系统在实施预防型和纠正型维护功能时的难易程度,其中包括对故障的检测、诊断、修复及能否将该系统重新进行初始化等功能;其次是衡量一个系统能接受改进,甚至为了进一步适应外界(或新的)环境而进行功能修改的难易程度。

数据的一致性和可维护性可以确保数据的安全性和可靠性。其主要包括对以下几个方面的控制。

(1)安全性控制:防止数据丢失、错误更新和越权使用。

(2)完整性控制:保证数据的正确性、有效性和相容性。

(3)并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用。

3.2.6 数据的故障恢复

由数据库管理系统提供的方法可以及时地发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,这种故障可能是物理上或是逻辑上的错误,例如由对系统误操作造成的数据错误等。

数据库的故障恢复处理有以下3种方法。

1.事务故障恢复

事务故障由系统自动完成,对用户是透明的。

DBMS执行恢复操作的步骤如下。

(1)反向扫描日志文件(即从最后向前扫描日志文件),查找该事务的更新操作。

(2)对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。

(3)继续反向扫描日志文件,做同样处理。

(4)如此处理下去,直至读到此事务的开始标记,该事务故障的恢复就完成了。

2.系统故障恢复

系统故障可能会造成数据库处于不一致性状态。

(1)未完成事务对数据库的更新可能已写入数据库。

(2)已提交事务对数据库的更新可能还留在缓冲区,没来得及写入数据库。

因此,恢复操作就是要撤销故障发生时未完成的事务,重做已完成的事务。

系统故障的恢复步骤如下。

(1)正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列)。

(2)对撤销队列中的各个事务进行UNDO处理。进行UNDO处理的方法是,反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。

(3)对重做队列中的各个事务进行REDO处理。进行REDO处理的方法是,正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作,即将日志记录中“更新后的值”写入数据库。

3.介质故障恢复

介质故障是最严重的一种故障。恢复方法是重装数据库,然后重做已完成的事务。介质故障的具体恢复步骤如下。

(1)DBA装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到转储时的一致性状态。

(2)DBA装入转储结束时刻的日志文件副本。

(3)DBA启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。