目录
一、反规范化——概念
常见的反规范化技术包括:
1、增加冗余列
增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作。
例如:以规范化设计的理念,学生成绩表中不需要字段“姓名”,因为“姓名”字段可以通过学号查询到,但在反规范化设计中,会将“姓名”字段加入表中。这样查询一个学生的成
绩时,不需要与学生表进行连接操作,便可得到对应的“姓名”。
2、增加派生列
增加派生列指增加的列可以通过表中其他数据计算生成。它的作用是在查询时减少计算量,从而加快查询速度。
例如:订单表中,有商品号、商品单价、采购数量,我们需要订单总价时,可以通过计算得到总价,所以规范化设计的理念是无须在订单表中设计“订单总价”字段。
但反规范化则不这样考虑,由于订单总价在每次查询都需要计算,这样会占用系统大量资源,所以在此表中增加派生列“订单总价”以提高查询效率。
3、重新组表
重新组表指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。
4、分割表
有时对表做分割可以提高性能。表分割有两种方式。
(1)水平分割
根据一列或多列数据的值把数据行放到两个独立的表中。
水平分割通常在下面的情况下使用。
- 情况 1:表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询效率。
- 情况 2:表中的数据本来就有独立性,例如表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用。
- 情况 3:需要把数据存放到多个介质上。
(2)垂直分割
把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。
如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直分割,另外垂直分割可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少 I/O 次数。其缺点是需要管理冗余列,查询所有数据需要连接操作。
二、事务管理——概念
数据库系统运行的基本工作单位是事务,事务相当于操作系统中的进程,是用户定义的一个数据库操作序列,这些操作序列要么全做要么全不做,是一个不可分割的工作单位。
事务通常以 BEGIN TRANSACTION(事务开始)语句开始,以COMMIT 或 ROLLBACK 语句结束。
- COMMIT 称为“事务提交语句”,表示事务执行成功的结束。
- ROLLBACK 称为“事务回退语句”,表示事务执行不成功的结束。
从终端用户来看,事务是一个原子,是不可分割的操作序列。事务中包括的所有操作要么都做,要么都不做(就效果而言)。事务不应该丢失或被分割地完成。
三、并发控制——概念
处理并发控制的主要方法是采用封锁技术。它有两种类型:排他型封锁(X 封锁)和共享型封锁(S 封锁),分别介绍如下:
1、排他型封锁(简称 X 封锁)
如果事务 T 对数据 A(可以是数据项、记录、数据集,乃至整个数据库)实现了 X 封锁,那么只允许事务 T 读取和 修改数据 A,其他事务要等事务 T 解除 X 封锁以后,才能对数据 A 实现任何类型的封锁。可见 X 封锁只允许一个事务独锁某个数据,具有排他性。
2、共享型封锁(简称 S 封锁)
X 封锁只允许一个事务独锁和使用数据,要求太严。需要适当放宽,例如可以允许并发读,但不允许修改,这就产生了S 封锁概念。
S 封锁的含义是:如果事务 T 对数据 A 实现了 S 封锁,那么允许事务 T 读取数据 A,但不能修改数据 A,在所有 S 封锁解除之前绝不允许任何事务对数据 A 实现 X 封锁。
典型真题
若事务T1对数据D1加了共享锁,事务T2、T3分别对数据D2、D3加了排它锁,则事务T1 对数据( );事务T2对数据( )。
- A.D2、D3加排它锁都成功
- B.D2、D3加共享锁都成功
- C.D2加共享锁成功,D3加排它锁失败
- D.D2、D3加排它锁和共享锁都失败
——————————————————————————————————
- A.D1、D3加共享锁都失败
- B.D1、D3加共享锁都成功
- C.D1加共享锁成功,D3如排它锁失败
- D.D1加排它锁成功,D3加共享锁失败
试题分析:
共享锁(S锁):又称读锁,若事物T对数据对象A加上S锁,其他事物只能再对A加S锁,而不能加X锁,而不能加X锁,直到T释放A上的S锁
排他锁(X锁):又称写锁。若事物T对数据对象A加上X锁,其他事物不能再对A加任何锁,直到T释放A上的锁。
参考答案: D 、C
四、分布式数据库——概念
1、分布式数据库系统特点
(1)数据的分布性
分布式数据库中的数据分布于网络中的各个结点,它既不同于传统的集中式数据库,也不同于通过计算机网络共享的集中式数据库系统。
(2)统一性
主要表现在数据在逻辑上的统一性和数据在管理上的统一性两个方面。
分布式数据库系统通过网络技术把局部的、分散的数据库构成一个在逻辑上单一的数据库,从而呈现在用户面前的就如同是一个统一的、集中式的数据库。这就是数据在逻辑上的统一性,因此,它不同于由网络互联的多个独立数据库。分布式数据库是由分布式数据库管理系统统一管理和维护的,这种管理上的统一性又使它不同于一般的分布式文件系统。
(3)透明性
用户在使用分布式数据库时,与使用集中式数据库一样,无须知道其所关心的数据存放在哪里,存储了几次。用户需要关心的仅仅是整个数据库的逻辑结构。
分布透明性包括:分片透明性、位置透明性和局部数据模型透明性。
(1)分片透明性是分布透明性的最高层次
所谓分片透明性是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。
(2)位置透明性是分布透明性的下一层次
所谓位置透明性是指,用户或应用程序应当了解分片情况,但不必了解片段的存储场地。
(3)局部数据模型(逻辑透明)
透明性是指用户或应用程序应当了解分片及各片断存储的场地,但不必了解局部场地上使用的是何种数据模型。
2、分布式数据库优点
与集中式数据库相比,分布式数据库具有下列优点:
(1)坚固性好
由于分布式数据库系统是由多个位置上的多台计算机构成的,在个别结点或个别通信链路发生故障的情况下,它仍然可以降低级别继续工作,如果采用冗余技术,还可以获得一定的容错能力。因此,系统的坚固性好,即系统的可靠性和可用性好。
(2)可扩充性好
可根据发展的需要增减结点,或对系统重新配置,这比用一个更大的系统代替一个已有的集中式数据库要容易得多。
(3)可改善性能
在分布式数据库中可按就近分布,合理地冗余的原则来分布各结点上的数据,构造分布式数据库,使大部分数据可以就近访问,避免了集中式数据库中的瓶颈问题,减少了系统的响应时间,提高了系统的效率,而且也降低了通信费用。
(4)自治性好
数据可以分散管理,统一协调,即系统中各结点的数据操纵和相互作用是高度自治的,不存在主从控制,因此,分布式数据库较好地满足了一个单位中各部门希望拥有自己的数据,管理自己的数据,同时又想共享其他部门有关数据的要求。
注意:
虽然分布式数据库系统与集中式数据库相比有不少优点,但同时也需要解决一些集中式数据库所没有的问题。
首先,异构数据库的集成问题是一项比较复杂的技术问题,目前还很难用一个通用的分布式数据库管理系统来解决这一问题。
其次,如果数据库设计得不好,数据分布不合理,以致远距离访问过多,尤其是分布连接操作过多,不但不能改善性能,反而会使性能降低。
五、故障恢复——概念
1、数据库的故障分类
数据库的故障可用事务的故障来表示,主要分为四类:
(1)事务故障
事务在运行过程中由于种种原因,如输入数据的错误、运算溢出、违反了某些完整性限制、某些应用程序的错误,以及并发事务发生死锁等,使事务未运行至正常终止点就被撤销,这种情况称为“事务故障”。
(2)系统故障
系统故障是指系统在运行过程中,由于某种原因(如操作系统或数据库管理系统代码错误、操作员操作失误、特定类型的硬件错误(如 CPU 故障)、突然停电等造成系统停止运行),致使事务在执行过程中以非正常方式终止,这时内存中的信息丢失,但存储在外存储设备上的数据不会受影响。
(3)介质故障
系统在运行过程中,由于某种硬件故障,如磁盘损坏、磁头碰撞或由于操作系统的某种潜在的错误、瞬时强磁场干扰,使存储在外存上的数据部分损失或全部损失,称为“介质故障”。这类故障比前两类故障的可能性虽然小得多,但破坏性却最大。
(4)计算机病毒
计算机病毒是一种人为破坏计算机正常工作的特殊程序。通过读写染有病毒的计算机系统中的程序与数据,这些病毒可以迅速繁殖和传播,危害计算机系统和数据库。目前大多数病毒是在 PC 和其兼容机上传播的。有的病毒一侵入系统就马上摧毁系统,有的病毒有较长的潜伏期,有的病毒则只在特定的日期发生破坏作用,有的病毒感染系统所有的程序和数据,有的只影响特定的程序和数据。
2、故障的恢复
(1)事务故障的恢复
事务故障是指事务未运行至正常终止点前被撤销,这时恢复子系统应对此事务做撤销处理。事务故障的恢复是由系统自动完成的,不需要用户干预,步骤如下:
- 反向扫描文件日志,查找该事务的更新操作。
- 对该事务的更新操作执行逆操作。
- 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。
- 如此处理下去,直至读到此事务的开始标记,事务故障恢复完成。
(2)系统故障的恢复
系统故障发生时,造成数据库不一致状态的原因有两个:
- 一是由于一些未完成事务对数据库的更新已写入数据库;
- 二是由于一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库。
系统故障的恢复是在重新启动时自动完成的,不需要用户干预,步骤如下:
- 正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入重做(Redo)队列。同时找出故障发生时尚未完成的事务,将其事务标识记入撤销(Undo)队列。
- 对撤销队列中的各个事务进行撤销处理:反向扫描日志文件,对每个 Undo 事务的更新操作执行逆操作。
- 对重做队列中的各个事务进行重做处理:正向扫描日志文件,对每个 Redo 事务重新执行日志文件登记的操作。
(3)介质故障与病毒破坏的恢复
在发生介质故障和遭病毒破坏时,磁盘上的物理数据库被破坏,这时的恢复操作可分为三步:
- 装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。
- 从故障点开始反向读日志文件,找出已提交事务标识将其记入重做队列。
- 从起始点开始正向阅读日志文件,根据重做队列中的记录,重做所有已完成事务,将数据库恢复至故障前某一时刻的一致状态。
(4)具有检查点的恢复技术
检查点记录的内容可包括:
- 建立检查点时刻所有正在执行的事务清单。
- 这些事务最近一个日志记录的地址。
采用检查点的恢复步骤如下:
- 从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。
- 由该检查点记录得到检查点建立时所有正在执行的事务清单队列(A)。
- 建立重做队列(R)和撤销队列(U),把 A 队列放入 U 队列中,R 队列为空。
六、数据库备份——概念
数据库备份按照不同方式可分为多种,这里按照备份内容分为物理备份和逻辑备份两类。
1、物理备份
物理备份是在操作系统层面上对数据库的数据文件进行备份,物理备份分为冷备份和热备份两种。
(1)冷备份
冷备份是将数据库正常关闭,在停止状态下利用操作系统的 copy、cp、tar、 cpio 等命令将数据库的文件全部备份下来,当数据库发生故障时,将数据文件复制回来,进行恢复。
(2)热备份
热备份也分为两种,一种是不关闭数据库,将数据库中需要备份的数据文件依次置于备份状态,相对保持静止,然后再利用操作系统的 copy、cp、tar、cpio 等命令将数据库的文件
备份下来,备份完毕后再将数据文件恢复为正常状态,当数据库发生故障时,恢复方法同冷备份一样。
热备份的另外一种方式是利用备份软件(例如,veritas 公司的netbackup,legato 公司的 network 等)在数据库正常运行的状态下,将数据库中的数据文件备份出来。
(3)备份方式
为了提高物理备份的效率,通常将完全、增量、差异三种备份方式相组合。
完全备份是将数据库的内容全部备份。
不足之处在于,各个全备份磁带中的备份数据存在大量的重复信息;另外,由于每次需要备份的数据量相当大,因此备份所需时间较长。
增量备份是只备份上次完全、增量或差异备份以来修改的数据。
因此备份的数据量不大,备份所需的时间很短。但增量备份的数据恢复是比较麻烦的。
必须具有上一次全备份和所有增量备份磁带(一旦丢失或损坏其中的一盘磁带,就会造成恢复的失败),并且它们必须沿着从全量备份到依次增量备份的时间顺序逐个反推恢复,因此这就极大地延长了恢复时间。
差异备份是备份自上次完全备份后发生变化的所有数据。
差异备份在避免了另外两种备份策略缺陷的同时,又具备了它们各自的优点。
- 首先,它具有了增量备份需要时间短、节省磁盘空间的优势;
- 其次,它又具有了全量备份恢复所需磁带少、恢复时间短的特点。系统管理员只需要两盘磁带,即全备份磁带与灾难发生前一天的差异备份磁带,就可以将系统恢复。
典型真题
试题分析
增量备份在做数据备份前会先判断数据的最后修改时间是否比上次备份的时间晚。如果不是,则表示该数据并没有被修改过,这次不需要备份。
所以该备份方式,只记录上次备份之后的变动情况,而非完全备份。
试题答案:A
七、数据仓库——概念
数据仓库(Data Warehouse)是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
1、数据仓库的结构
(1)数据源
是数据仓库系统的基础,是整个系统的数据源泉。通常包括企业内部信息和外部信息。
- 内部信息包括存放于 RDBMS(关系型 DBMS)中的各种业务处理数据和各类文档数据。
- 外部信息包括各类法律法规、市场信息和竞争对手的信息等。
(2)数据的存储与管理
是整个数据仓库系统的核心。数据仓库的真正关键是数据的存储和管理。
数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。要决定采用什么产品和技术来建立数据仓库的核心,则需要从数据仓库的技术特点着手分析。针对现有各业务系统的数据,进行抽取、清理,并有效集成,按照主题进行组织。
数据仓库按照数据的覆盖范围可以分为企业级数据仓库和部门级数据仓库(通常称为数据集市)。
(3)OLAP 服务器
对分析需要的数据进行有效集成,按多维模型予以组织,以便进行多角度、多层次的分析,并发现趋势。
其具体实现可以分为:ROLAP、MOLAP 和 HOLAP。
- ROLAP 基本数据和聚合数据均存放在 RDBMS 之中;
- MOLAP 基本数据和聚合数据均存放于多维数据库中;
- HOLAP 基本数据存放于 RDBMS 之中,
- 聚合数据存放于多维数据库中。
(4)前端工具
主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具及各种基于数据仓库或数据集市的应用开发工具。
其中数据分析工具主要针对 OLAP 服务器,报表工具、数据挖掘工具主要针对数据仓库。
2、数据仓库的实现方法
从整体的角度来看,数据仓库的实现方法主要有自顶向下法、自底向上法和联合方法。
(1)自顶向下法
在该方法中,首先应找出数据仓库解决方案所要满足的商业需求,把商业需求视为实现数据仓库的首要任务。
数据仓库是一种功能而不是一种特征,数据仓库保存信息,并以外部工具易于显示和操作的方式组织这些信息。因此,如果不借助于可以利用这种功能的外部工具,最终用户就无法将这种功能嵌入数据仓库中。这样,就很难定出该功能的范围,除非用广义上的商业术语,如“数据仓库将包含有关客户、供应商、市场、产品的信息”。
(2)自底向上法
自底向上方法一般从实验和基于技术的原形入手。先选择一个特定的、众所周知的商业问题的子集,再为该子集制订方案。
实现自底向上一般是比较快的。自底向上可以使一个单位在发展时用尽可能少的经费和时间,就可以在做出有效的投入之前评估技术的收益情况。
在数据仓库领域,自底向上方法是快速实现数据集市、部门级数据仓库的有效手段。
(3)混合法
拥有以上两种方法的优点。适合数据仓库技术的快速试运行,并且保留了建立长远的决策方案的机会。
典型真题
试题分析
数据仓库4大特点:
- 面向主题:数据按主题组织。
- 集成的:消除了源数据中的不一致性,提供整个企业的一致性全局信息。
- 相对稳定的(非易失的):主要进行查询操作,只有少量的修改和删除操作(或是不删除)。
- 反映历史变化(随着时间变化):记录了企业从过去某一时刻到当前各个阶段的信息,可对发展历程和未来趋势做定量分析和预测。
试题答案:C
八、数据挖掘——概念
数据挖掘(Data Mining)技术是人们长期对数据库技术进行研究和开发的结果。起初各种商业数据是存储在计算机的数据库中的,然后发展到可对数据库进行查询和访问,进而发展到对数据库的即时遍历。
数据挖掘使数据库技术进入了一个更高级的阶段,它不仅能对过去的数据进行查询和遍历,并且能够找出过去数据之间的潜在联系,从而促进信息的传递。
现在数据挖掘技术在商业应用中已经可以马上投入使用,因为对这种技术进行支持的三种基础技术已经发展成熟,它们是海量数据搜集、强大的多处理器计算机和数据挖掘算法。
数据挖掘与传统的数据分析(如查询、报表、联机应用分析)的本质区别是数据挖掘是在没有明确假设的前提下去挖掘信息、发现知识。
数据挖掘所得到的信息应具有先知,有效和可实用三个特征。
1、数据挖掘的流程
(1)问题定义
在开始数据挖掘之前,最先的也是最重要的要求就是熟悉背景知识,弄清用户的需求。
缺少了背景知识,就不能明确定义要解决的问题,就不能为挖掘准备优质的数据,也很难正确地解释得到的结果。要想充分发挥数据挖掘的价值,必须对目标有一个清晰明确的定义,即决定到底想干什么。
(2)建立数据挖掘库
要进行数据挖掘必须收集要挖掘的数据资源。
一般建议把要挖掘的数据都收集到一个数据库中,而不是采用原有的数据库或数据仓库。这是因为大部分情况下需要修改要挖掘的数据,而且还会遇到采用外部数据的情况;另外,数
据挖掘还要对数据进行各种纷繁复杂的统计分析,而数据仓库可能不支持这些数据结构。
(3)分析数据
分析数据就是通常所进行的对数据深入调查的过程。
从数据集中找出规律和趋势,用聚类分析区分类别,最终要达到的目的就是搞清楚多因素相互影响的、十分复杂的关系,发现因素之间的相关性。
(4)调整数据
通过上述步骤的操作,对数据的状态和趋势有了进一步的了解,这时要尽可能对问题解决的要求能进一步明确化、进一步量化。
针对问题的需求对数据进行增删,按照对整个数据挖掘过程的新认识组合或生成一个新的变量,以体现对状态的有效描述。
(5)模型化
在问题进一步明确,数据结构和内容进一步调整的基础上,就可以建立形成知识的模型。
这一步是数据挖掘的核心环节,一般运用神经网络、决策树、数理统计、时间序列分析等方法来建立模型。
(6)评价和解释
上面得到的模式模型,有可能是没有实际意义或没有实用价值的,也有可能是其不能准确反映数据的真实意义,甚至在某些情况下是与事实相反的,因此需要评估,确定哪些是有效的、有用的模式。
评估的一种办法是直接使用原先建立的挖掘数据库中的数据来进行检验,另一种办法是另找一批数据并对其进行检验,再一种办法是在实际运行的环境中取出新鲜数据进行检验。
2、常用数据挖掘技术
常用的数据挖掘技术包括关联分析、序列分析、分类、预测、聚类分析及时间序列分析等。
(1)关联分析
关联分析主要用于发现不同事件之间的关联性,即一个事件发生的同时,另一个事件也经常发生。
关联分析的重点在于快速发现那些有实用价值的关联发生的事件。其主要依据是事件发生的概率和条件概率应该符合一定的统计意义。
对于结构化的数据,以客户的购买习惯数据为例,利用关联分析,可以发现客户的关联购买需要。
例如,一个开设储蓄账户的客户很可能同时进行债券交易和股票交易,购买纸尿裤的男顾客经常同时购买啤酒等。利用这种知识可以采取积极的营销策略,扩展客户购买的产品范围,吸引更多的客户。通过调整商品的布局便于顾客买到经常同时购买的商品,或者通过降低一种商品的价格来促进另一种商品的销售等。
对于非结构化的数据,以空间数据为例,利用关联分析,可以发现地理位置的关联性。
例如,85%的靠近高速公路的大城镇与水相邻,或者发现通常与高尔夫球场相邻的对象等。
(2)序列分析
序列分析技术主要用于发现一定时间间隔内接连发生的事件。
这些事件构成一个序列,发现的序列应该具有普遍意义,其依据除了统计上的概率之外,还要加上时间的约束。
(3)分类分析
分类分析通过分析具有类别的样本的特点,得到决定样本属于各种类别的规则或方法。
利用这些规则和方法对未知类别的样本分类时应该具有一定的准确度。其主要方法有基于统计学的贝叶斯方法、神经网络方法、决策树方法及支持向量机(support vector machines)等。
利用分类技术,可以根据顾客的消费水平和基本特征对顾客进行分类,找出对商家有较大利益贡献的重要客户的特征,通过对其进行个性化服务,提高他们的忠诚度。
利用分类技术,可以将大量的半结构化的文本数据,如 WEB 页面、电子邮件等进行分类。可以将图片进行分类,例如,根据已有图片的特点和类别,可以判定一幅图片属于何种类型的规则。
对于空间数据,也可以进行分类分析,例如,可以根据房屋的地理位置决定房屋的档次。
(4)聚类分析
聚类分析是根据物以类聚的原理,将本身没有类别的样本聚集成不同的组,并且对每一个这样的组进行描述的过程。
其主要依据是聚到同一个组中的样本应该彼此相似,而属于不同组的样本应该足够不相似。
仍以客户关系管理为例,利用聚类技术,根据客户的个人特征及消费数据,可以将客户群体进行细分。
例如,可以得到这样的一个消费群体:女性占 91%,全部无子女、年龄在 31 岁到 40 岁占 70%,高消费级别的占 64%,买过针织品的占 91%,买过厨房用品的占89%,买过园艺用品的占 79%。针对不同的客户群,可以实施不同的营销和服务方式,从而提高客户的满意度。
对于空间数据,根据地理位置及障碍物的存在情况可以自动进行区域划分。
例如,根据分布在不同地理位置的 ATM 机的情况将居民进行区域划分,根据这一信息,可以有效地进行 ATM 机的设置规划,避免浪费,同时也避免失掉每一个商机。
对于文本数据,利用聚类技术可以根据文档的内容自动划分类别,从而便于文本的检索。
(5)预测
预测与分类类似,但预测是根据样本的已知特征估算某个连续类型的变量的取值的过程,而分类则只是用于判别样本所属的离散类别而已。预测常用的技术是回归分析。
(6)时间序列
分析时间序列分析的是随时间而变化的事件序列,目的是预测未来发展趋势,或者寻找相似发展模式或者是发现周期性发展规律。
典型真题
试题分析
依据题目说明的情况,该做法是进行多维数据分析,而多维数据分析是OLAP的典型应用。数据挖掘一般用于挖掘数据之间的联系,得到一些人类所未知的数据规律。
数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。
- OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
- OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;
OLAP 系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
试题答案:B