数据库系统
数据库模式
数据库系统是指在计算机信息系统中引入数据库后的系统,一般由数据库、数据库管理系统(DataBase Management System,DBMS)、应用系统、数据库管理员(DataBase Administrator,DBA)和用户构成。数据库系统的结构典型的是三级划分法,其中包括三级模式和两级映射。
1.三级模式
数据库系统由外模式、概念模式和内模式三级构成。
(1)外模式也称为子模式或用户模式,对应于用户级数据库,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。一个数据库可以有多个外模式,一个应用程序只能使用一个外模式。
(2)概念模式也称为模式或逻辑模式,对应于概念级数据库。概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。概念模式通常还包含有访问控制、保密定义和完整性检查等方面的内容,以及概念/物理之间的映射。一个数据库只有一个概念模式。
(3)内模式对应于物理级数据库,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式。
2.两级独立性
数据库系统两级独立性是指物理独立性和逻辑独立性。三个抽象级别之间通过两级映射(外模式/模式映射和模式/内模式映射)进行相互转换,使得数据库的三级模式形成一个统一的整体。
物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的,当数据的物理存储改变时,应用程序不需要改变。
逻辑独立性是指用户的应用程序与数据库中的逻辑结构是相互独立的,当数据的逻辑结构改变时,应用程序不需要改变。
数据模型
数据模型是现实世界数据特征的抽象。数据模型所描述的内容包括三个部分,分别是数据结构、数据操作和数据约束
数据模型的分类
数据模型主要有两大类,分别是概念数据模型(实体联系模型)和基本数据模型(结构数据模型)。
概念数据模型是按照用户的观点来对数据和信息建模,主要用于数据库的设计,一般用实体-联系(Entity-Relationship,E-R)方法表示,所以也称为E-R模型。
基本数据模型是按照计算机系统的观点来对数据和信息建模,主要用于数据库的实现。基本数据模型是数据库系统的核心和基础,通常由数据结构、数据操作和完整性约束三部分组成。基本数据模型,其中最着名的有层次模型、网状模型、关系模型和面向对象模型。
1.层次模型
层次模型是最早出现的数据模型,采用了树形结构作为数据的组织方式。层次模型数据库系统的典型代表是IBM公司的IMS数据库管理系统(现已经被淘汰)。
2.网状模型
网状模型用有向图表示实体类型和实体之间的联系。网状模型的优点是记录之间的联系通过指针实现,多对多的联系容易实现,查询效率高;其缺点是编写应用程序比较复杂,程序员必须熟悉数据库的逻辑结构。
3.关系模型
关系模型用表格结构表达实体集,用外键表示实体之间的联系。关系模型建立在严格的数学概念基础上,概念单一、结构简单、清晰,用户易懂易用;存取路径对用户透明,从而数据独立性和安全性好,能简化数据库开发工作;其缺点主要是由于存取路径透明,查询效率往往不如非关系数据模型。
关系模型是目前应用最广泛的一种数据模型,例如,Oracle、DB2、SQL Server、Sybase和MySQL等都是关系数据库系统。
4.面向对象模型
面向对象模型是用面向对象的观点来描述现实世界实体的逻辑组织、对象之间的限制和联系等的模型。目前,已有多种面向对象数据库产品,例如,ObjectStore、Versant Developer、Suite Poet和Objectivity等,但其具体的应用并不多。
关系模型
在关系模型中,实体以及实体间的联系都是用关系来表示。在一个给定的现实世界领域中,相应于所有实体及实体之间的联系的关系的集合构成一个关系数据库。
1.关系运算
关系代数的基本运算主要有并、交、差、笛卡尔积、选择、投影、连接和除法运算。
2.元组演算
在元组演算中,元组演算表达式简称为元组表达式,其一般形式为{t|P(t)},其中,t是元组变量,表示一个元数固定的元组;P是公式,在数理逻辑中也称为谓词,也就是计算机语言中的条件表达式。{t|P(t)}表示满足公式P的所有元组t的集合。
规范化理论
1.函数依赖与键
函数依赖是数据库的一种约束,决定了关系模式属于哪种范式。
设R(U)是属性U上的一个关系模式,X和Y是U的子集,r为R的任一关系,如果对于r中的任意两个元组u,v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记作X→Y。
在R(U)中,如果X→Y,并且对于X的任何一个真子集X′,都有X′→Y不成立,则称Y对X完全函数依赖。若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖;在R(U)中,如果X→Y(Y不是X的真子集),且Y→X不成立,Y→Z,则称Z对X传递函数依赖。
在关系模式中,用户正在使用的候选键称为主键。如果两个关系拥有公共属性(集),且公共属性在一个关系中是主键,则称公共属性是另一个关系的外键。一个关系的候选键有多个,但主键只能有一个。
在此,引入一种求候选键的快捷方法,即图示法。使用图示法求候选键,主要有两个步骤:
(1)将关系模式的函数依赖关系,用有向图的方式表示,其中顶点表示属性,弧表示属性之间的依赖关系。
(2)找出入度为0的属性集,并以该属性集为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键;若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间顶点(既有入度,也有出度的顶点)并到入度为0的属性集中,直至该集合能遍历所有顶点,则该集合为候选键。
2.范式
为了设计一个好的数据库,人们定义了一些好的关系模式标准,称它们为规范的关系模式或范式(Normal Form,NF)。
(1)第一范式(1NF)。在关系模式R中,当且仅当所有属性只包含原子值,即每个分量都是不可再分的数据项,则称R满足1NF。
(2)第二范式(2NF)。满足1NF的关系模式会有许多重复值,修改数据可能会引起疏漏。为了消除这种数据冗余和避免更新数据的遗漏,需要使用更加规范的2NF。当且仅当关系模式R满足1NF,且每个非键属性(即不属于任何候选键的属性,也称为非主属性)完全依赖于候选键时,则称R满足2NF。
(3)第三范式(3NF)。当且仅当关系模式R满足1NF,且R中没有非键属性传递依赖于候选键时,则称R满足3NF。
(4)BCNF。如果关系模式R满足1NF,且R中没有属性传递依赖于候选键时,则称R满足BCNF。
3.关系模式分解
将一个关系模式分解成几个子关系模式,需要考虑的是该分解是否保持函数依赖,是否是无损联接。
数据库访问接口
数据库访问接口是指应用程序与数据库之间的连接部分。常见的数据库访问接口有专用调用、ODBC(Open DataBase Connectivity,开放数据库互连)和JDBC(Java DataBase Connectivity,Java数据库连接)等。
1.专用调用
专用调用接口的优点是执行效率高,由于是专用,编程实现较简单。但对程序员而言,专用调用并不是一件好事情。因为这使得程序员在程序中连接数据库时变得非常困难,对每一种数据库进行编程,就必须对该数据库的底层API有相当程度的了解。这意味着需要同时了解多种数据库的底层API,还不能混淆。
2.开放数据库互连
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。
ODBC的最大优点是能以统一的方式处理所有的数据库,其缺点也是非常明显的,主要体现在以下三个方面:
(1)ODBC只支持关系型数据,像电子邮件之类的非关系型数据是不能支持的。
(2)由于ODBC最初的设计理念就是能够访问所有类型数据库,这种普遍适用也造成了ODBC对每种数据库的支持都不是特别理想。
(3)使用ODBC需要进行一些系统的配置工作。当然,这个操作也是可以用程序来完成。
3.Java数据库连接
Java数据库连接(Java DataBase Connectivity,JDBC)的作用与ODBC是类似的,只不过JDBC只能用在Java程序设计语言中。
数据库的控制功能
DBMS的控制功能,包括并发控制、性能优化、数据完整性和安全性,以及数据备份与恢复等问题。
并发控制
1.事务的基本概念
DBMS运行的基本工作单位是事务,事务是用户定义的一个数据库操作序列,这些操作序列要么全做,要么全不做,是一个不可分割的工作单位。事务具有以下特性:
(1)原子性(Atomicity)。事务是数据库的逻辑工作单位,事务的原子性保证事务包含的一组更新操作是原子不可分的,也就是说,这些操作是一个整体,不能部分的完成。
(2)一致性(Consistency)。一致性是指使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的,一致性在逻辑上不是独立的,它由事务的隔离性来表示。
(3)隔离性(Isolation)。隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
(4)持久性(Durability)。持久性也称为永久性,是指事务一旦提交,改变就是永久性的,无论发生何种故障,都不应该对其有任何影响。
事务的原子性、一致性、隔离性和持久性通常统称为ACID特性。
2.数据不一致问题
数据库的并发操作会带来一些数据不一致问题,例如,丢失修改、读“脏数据”和不可重复读等。
(1)丢失修改。事务A与事务B从数据库中读入同一数据并修改,事务B的提交结果破坏了事务A提交的结果,导致事务A的修改被丢失。
(2)读“脏数据”。事务A修改某一数据,并将其写回磁盘,事务B读取同一数据后,事务A由于某种原因被撤消,这时事务A已修改过的数据恢复原值,事务B读到的数据就与数据库中的数据不一致,是不正确的数据,称为“脏数据”。
(3)不可重复读。不可重复读是指事务A读取数据后,事务B执行了更新操作,事务A使用的仍是更新前的值,造成了数据不一致性。
3.封锁协议
处理并发控制的主要方法是采用封锁技术,主要有两种封锁,分别是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封锁。
在多个事务并发执行的系统中,主要采取封锁协议来进行处理,常见的封锁协议如下:
(1)一级封锁协议。事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。一级封锁协议可防止丢失修改,并保证事务T是可恢复的,但不能保证可重复读和不读“脏数据”。
(2)二级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。二级封锁协议可防止丢失修改,还可防止读“脏数据”,但不能保证可重复读。
(3)三级封锁协议。一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。三级封锁协议可防止丢失修改、读“脏数据”,且能保证可重复读。
(4)两段锁协议。所有事务必须分两个阶段对数据项加锁和解锁。其中扩展阶段是在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;收缩阶段是在释放一个封锁之后,事务不能再申请和获得任何其他封锁。若并发执行的所有事务均遵守两段封锁协议,则对这些事务的任何并发调度策略都是可串行化的。遵守两段封锁协议的事务可能发生死锁。
使用封锁技术来解决并发控制问题,存在一个封锁粒度问题。所谓封锁粒度,是指被封锁数据对象的大小,在关系数据库中封锁粒度有属性值、属性值集、元组、关系、某索引项(或整个索引)、整个关系数据库、物理页(块)等几种。封锁粒度小则并发性高,但开销大;封锁粒度大则并发性低但开销小。
4.死锁问题
死锁是指多个用户申请不同封锁,由于申请者均拥有一部分封锁权,而又需等待另外用户拥有的部分封锁而引起的永无休止的等待。
数据库性能优化
通常,对一个集中式数据库的性能进行优化,可以从硬件升级、数据库设计、检索策略和查询优化等方面入手。
1.硬件升级
要提升数据库的运行速度,最直接的方式就是硬件升级,涉及的硬件包括处理器、内存、磁盘子系统和网络。
(1)处理器的升级主要可以考虑用更高频率的处理器代替现有频率较低的处理器,也可以将单处理器的计算机系统升级为多处理器系统。
(2) 内存的升级主要是容量的扩充,当容量扩充以后,数据库服务器可以将更多的数据保存在缓冲区,以减少磁盘I/O操作,从而提升数据库的整体性能。
(3)磁盘子系统的性能提升主要体现在两个方面,第一,采用高速磁盘系统替代速度较低的磁盘系统,以减少读盘等待时间,提高响应速度;第二,合理分布磁盘I/O到多个设备上,以减少资源竞争,提高并行操作能力。
(4)网络方面主要是对带宽的升级。
2.数据库设计
对数据库进行设计优化,主要可以从逻辑设计和物理设计两个方面入手。
从某种程度上来说,非规范化(反规范化)可以改善系统的性能。在进行数据库设计时,可以考虑合理增加冗余属性,以提升系统性能,常用的措施如下:
(1)将常用的计算属性(例如,总计和最大值等)存储到数据库实体中。
(2)重新定义实体,以减少外部属性数据或行数据的开支。
(3)将关系进行水平或垂直分割,以提升并行访问度。
数据库逻辑结构的设计固然重要,但物理设计也不可忽视,将数据放在不同的物理位置,有时能对性能提升起到非常关键的作用。例如,可以遵循以下准则:
(1)与每个属性相关的数据类型应该反映数据所需的最小存储空间,特别是对于被索引的属性更是如此。例如,能使用smallint类型就不要用integer类型,这样,索引字段可以被更快地读取,而且可以在一个数据页上放置更多的数据行,相应地减少了I/O操作。
(2)将一个频繁使用的大关系分割开,并放在两个单独的智能型磁盘控制器的数据库设备上,这样也可以提高性能。因为有多个磁头在查找,数据分离也能提高性能。
(3)将数据库中文本或图像属性的数据存放在一个单独的物理设备上,也可以提高性能。如果使用专用的智能型控制器,就能进一步提高性能。
3.索引优化策略
索引的建立与选择对数据库性能优化具有意义重大。索引的建立与选择可遵循以下准则:
(1)建立索引时,应选用经常作为查询,而不常更新的属性。避免对一个经常被更新的属性建立索引,因为这样会严重影响性能。
(2)一个关系上的索引过多会影响UPDATE、INSERT和DELETE的性能,因为关系一旦进行更新,所有的索引都必须做相应的调整。
(3)尽量分析出每个重要查询的使用频度,这样,可以找出使用最多的索引,然后可以先对这些索引进行适当的优化。
(4)对于数据量非常小的关系不必建立索引,因为对于小关系而言,关系扫描往往更快,而且消耗的系统资源更少。
4.查询优化
查询优化也称为应用程序优化,它是数据库性能优化的最后一个环节,同时,也是最重要的一个环节。查询语句的构造不当,可以使之前的优化功亏一篑。SQL语句优化的策略很多,例如,建立物化视图或尽可能减少多表查询;以不相干子查询替代相干子查询;只检索需要的属性;用带IN的条件子句等价替换OR子句;经常提交(COMMIT),以尽早释放锁等。
数据库的完整性
数据库的完整性是指数据库中数据的正确性和相容性。
1.完整性约束条件
保证数据完整性的方法之一是设置完整性检查,即对数据库中的数据设置一些约束条件,这是数据的语义体现。完整性约束条件是指对数据库中数据本身的某些语法或语义限制、数据之间的逻辑约束,以及数据变化时应遵守的规则等。完整性约束条件的作用对象可以是关系、元组或属性三种。
数据库中数据的语法、语义限制与数据之间的逻辑约束称为静态约束,它反映了数据及其之间的固有逻辑特性,是最重要的一类完整性约束。
数据库中的数据变化应遵守的规则称为数据动态约束,它反映了数据库状态变迁的约束。
2.实体完整性
实体完整性要求主键中的任一属性不能为空,所谓空值是“不知道”或“无意义”的值。
3.参照完整性
若基本关系R中含有与另一基本关系S的主键PK相对应的属性组FK(FK称为R的外键),则参照完整性要求,对R中的每个元组在FK上的值必须是S中某个元组的PK值,或者为空值。
对于参照完整性,需要明确外键能否接受空值的问题,以及在被参照关系中删除元组的问题。针对不同的应用,可以有不同的删除方式:
(1)级联删除。将参照关系中所有外键值与被参照关系中要删除元组主键值相同的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去。
(2)受限删除。这是一般DBMS默认的删除方式。仅当参照关系中没有任何元组的外键值与被参照关系中要删除元组的主键值相同时,系统才可以执行删除操作,否则拒绝执行删除操作。
(3)置空删除。删除被参照关系的元组,并将参照关系中相应元组的外键值置为空值。
同样,还需要考虑在参照关系中插入元组的问题,一般可以采用以下两种方式:
(1)受限插入。仅当被参照关系中存在相应的元组时,其主键值与参照关系插入元组的外键值相同时,系统才执行插入操作,否则拒绝此操作。
(2)递归插入。首先向被参照关系中插入相应的元组,其主键值等于参照关系插入元组的外键值,然后向参照关系插入元组。
4.用户定义的完整性
实体完整性和参照完整性适用于任何关系型DBMS。用户定义的完整性就是针对某一具体数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。如果在一条语句执行完后立即检查,则称立即执行约束;如果在整个事务执行结束后再进行检查,则称延迟执行约束。完整性规则的五元组表示为(D,O,A,C,P),其中D表示约束作用的数据对象,O表示触发完整性检查的数据库操作,A表示数据对象必须满足的断言或语义约束,C表示选择A作用的数据对象值的谓词,P表示违反完整性规则时触发的过程。
5.触发器
触发器是在关系型DBMS中应用得比较多的一种完整性保护措施,其功能比完整性约束要强得多。所谓触发器,其抽象的含义即是一个事件的发生必然触发(或导致)另外一些事件的发生,其中前面的事件称为触发事件,后面的事件称为结果事件。触发事件一般即为完整性约束条件的否定,而结果事件即为一组操作用以消除触发事件所引起的不良影响。
数据库的安全性
就整个信息系统的安全而言,数据的安全是最重要的。
数据库系统的安全性在技术上依赖于两种方式,一种是DBMS本身提供的用户身份识别、视图、使用权限控制和审计等管理措施,大型DBMS均有此功能;另一种就是靠应用程序来实现对数据库访问进行控制和管理,也就是说,数据的安全控制由应用程序里面的代码来实现。
1.用户标识和鉴别
用户的身份认证是用户使用DBMS系统的第一个环节,是系统提供的最外层保护。进行用户标识和鉴别的常用方式有口令认证和强身份认证。
(1)口令认证。口令认证是一种身份认证的基本形式,用户在建立与DBMS的访问连接前,必须提供正确的用户账号和口令,DBMS与自身保存的用户列表中的用户标识和口令比较,如果匹配则认证成功,允许用户使用数据库系统;如果不匹配,则返回拒绝信息,这种认证判断过程往往是数据库登录的第一步。
(2)强身份认证。在网络环境下,客户端到DBMS服务器可能经过多个环节,在身份认证期间,用户的信息和口令可能会经过很多不安全的节点(例如,路由器和服务器),而被信息的窃听者窃取。强身份认证过程使认证可以结合信息安全领域一些更深入的技术保障措施,来强化用户身份的鉴别,例如,可以与数字证书、智能卡和用户指纹识别等多种身份识别技术相结合。
2.数据授权
一般可以将权限角色分为三类,分别是数据库登录权限类、资源管理权限类和DBA权限类。有了数据库登录权限的用户才能进入DBMS,才能使用DBMS所提供的各类工具和实用程序。
3.视图
视图可以被看成是虚拟关系或存储查询,可通过视图访问的数据不作为独特的对象存储在数据库内,数据库内存储的是SELECT语句。SELECT语句的结果集构成视图所返回的虚拟关系。
使用视图可以实现下列功能:
(1)将用户限定在关系中的特定元组上。例如,只允许雇员看见工作跟踪表内记录其工作的行。
(2)将用户限定在特定属性上。例如,对于那些不负责处理工资单的雇员,只允许他们看见雇员表中的姓名、工作电话和部门属性,而不能看见任何包含工资信息或个人信息的属性。
(3)将多个关系中的属性连接起来,使它们看起来像一个关系。
(4)聚合信息而非提供详细信息。例如,显示一个属性的和,或属性的最大值和最小值等。
4.审计与跟踪
跟踪主要是满足系统调试的需要,捕捉到的用户行为记录往往只用于分析,而并不长久地保存,而审计作为一种安全检查的措施,会将系统的运行状况和用户访问数据库的行为记录以日志保存下来,这种日志往往作为一种稽查用户行为的一种证据。
备份与恢复技术
数据库备份有多种分类方式。按备份的实现方式,可分为物理备份与逻辑备份,而物理备份又可以分为冷备份与热备份;按备份数据量情况,可分为完全备份、增量备份与差异备份。其中,完全备份是指将整个数据库中的数据进行备份,增量备份是指备份上一次备份(包括完全备份、增量备份和差异备份)后发生变化的数据,差异备份是指备份上一次完全备份后发生变化的所有数据。
1.物理备份
物理备份是在操作系统层面上对数据库的数据文件进行备份,可分为冷备份和热备份两种。冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来。冷备份是数据库备份中最快和最安全的方法;热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
为了提高物理备份的效率,通常将完全、增量和差异三种备份方式相组合。一般来说,一个备份周期通常由一个完全备份和多个增量、差异备份组成。
2.逻辑备份
逻辑备份是指利用DBMS自带的工具软件备份和恢复数据库的内容。
在数据库容量不大的情况下,逻辑备份是一个非常有效的手段,既简单又方便,但现在随着数据量的越来越大,甚至上TB,利用逻辑备份来恢复数据库已力不从心,速度很慢。针对大型数据库的备份和恢复,一般结合磁带库或光盘库,采用物理备份方式。
3.日志文件
事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。这种文件就称为日志文件。
日志文件是用来记录对数据库每一次更新活动的文件,在热备份方式中,必须建立日志文件,后援副本和日志文件综合起来才能有效地恢复数据库;在冷备份方式中,也可以建立日志文件,当数据库毁坏后,可重新装入后援副本,将数据库恢复到备份结束时刻的正确状态,然后利用日志文件,将已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤销处理。
事务在运行过程中,系统将事务开始、事务结束(包括COMMIT和ROLLBACK),以及对数据库的插入、删除和修改等每个操作作为一个登记记录存放到日志文件中。
事务在运行过程中,系统将事务开始、事务结束(包括COMMIT和ROLLBACK),以及对数据库的插入、删除和修改等每个操作作为一个登记记录存放到日志文件中。每个记录包括的主要内容有执行操作的事务标识、操作类型、更新前数据的旧值(对插入操作而言此项为空值)、更新后的新值(对删除操作而言此项为空值)。登记的次序严格按并行事务操作执行的时间次序,同时遵循“先写日志文件”的规则。
4.数据恢复
将数据库从错误状态恢复到某一个已知的正确状态的功能,称为数据库的恢复。数据恢复的基本原理就是冗余,建立冗余的方法有数据备份和登录日志文件等。可根据故障的不同类型,采用不同的恢复策略。
(1)事务故障的恢复。事务故障的恢复是由系统自动完成的,对用户是透明的(不需要DBA的参与)。其步骤如下:反向扫描日志文件,查找该事务的更新操作;对该事务的更新操作执行逆操作;继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理;如此处理下去,直至读到此事务的开始标记,事务故障恢复完成。
(2)系统故障的恢复。系统故障的恢复在系统重新启动时自动完成,不需要用户干预。其步骤如下:正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入重做(Redo)队列。同时找出故障发生时尚未完成的事务,将其事务标识记入撤销(Undo)队列;对撤销队列中的各个事务进行撤销处理:反向扫描日志文件,对每个Undo事务的更新操作执行逆操作;对重做队列中的各个事务进行重做处理:正向扫描日志文件,对每个Redo事务重新执行日志文件登记的操作。
(3)介质故障与病毒破坏的恢复。介质故障与病毒破坏的恢复步骤如下:装入最新的数据库后备副本,使数据库恢复到最近一次备份时的一致性状态;从故障点开始反向扫描日志文件,找出已提交事务标识并记入Redo队列;从起始点开始正向扫描日志文件,根据Redo队列中的记录,重做已完成的任务,将数据库恢复至故障前某一时刻的一致状态。
(4)有检查点的恢复技术。检查点记录的内容可包括建立检查点时刻所有正在执行的事务清以及这些事务最近一个日志记录的地址。采用检查点的恢复步骤如下:从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录;由该检查点记录得到检查点建立时所有正在执行的事务清单队列(A);建立重做队列(R)和撤销队列(U),将A队列放入U队列中,R队列为空;从检查点开始正向扫描日志文件,若有新开始的事务T1,则将T1放入U队列。若有提交的事务T2,则将T2从U队列移到R队列。直至日志文件结束;对U队列的每个事务执行Undo操作,对R队列的每个事务执行Redo操作。
数据中心的建设
数据中心可以实现异地备份,在异地备份的架构中,一个数据中心被损毁,其他数据中心有完整的数据保存,可以保证数据不丢失。
数据中心的功能,不仅限于异地备份。数据中心形式的数据库建设为用户构建了统一的集中运行平台,建立开放式多层架构体系,优化整合现有设备资源。
以信息数据库为核心的数据中心建设,可从以下几个方面着手:
(1)构建专用存储系统,集中存储数据。采用网络存储技术,构建专用、大容量存储系统,通过区域划分,满足各类数据的集中存储,保证存储系统的灵活性和可扩展性。
(2)构建统一的数据库集中运行平台,提高数据处理能力。按照“运行可靠、性能优良、满足应用”的要求,建设计算机集群系统,采用并行运行和互为备份的集群技术,保证计算机高效和不间断运行。同时,通过分区技术,在计算机上构建不同应用数据库的运行区域,满足不同应用数据库系统的运行需要,使各类应用数据库既集中又相对独立地运行,以降低不同数据库之间的相互影响,提高数据库处理能力。
(3)建立多种系统应用平台,提高集中运行平台的适应性。按照各类应用系统所需的不同系统运行环境,建立与之相适应的多种系统运行平台,提供UNIX、Windows 或Linux平台上应用服务和Web浏览等应用。通过共享统一的存储系统,建立主流数据库运行平台,提供数据库服务,为有关部门的不同应用系统提供相应的运行环境。
(4)整合优化现有计算机设备资源,提高集中管理和应用的水平。根据系统建设的整体框架要求,按照数据集中整合和应用的需要,对用户现有计算机设备资源进行调整,纳入统一、集中运行管理框架中。同时,按照设备集中管理的要求,在数据中心计算机房建成后,将用户各类服务器及相关设备集中起来,根据不同应用的要求进行整合优化,实行统一的运行与管理。
(5)扩展数据备份系统,提高系统可靠性。数据中心的数据是企业极其宝贵的重要资源,必须做到安全上的万无一失,且各类应用系统要求7×24小时不间断运行,要求有多层面的系统可靠性保障,所有层面要建立相应的容错机制,确保设备发生故障或升级维护时系统服务不中断;设备自身必须具备容错能力,尽可能在设备一级就能屏蔽大多数故障。此外,构建存储系统的“快照”复制和磁带备份系统,包含专业的数据备份系统、备份管理策略与手段,通过在现有备份系统基础上进行扩展,实现数据的快速备份和统一的常规备份,以及高效的数据恢复,使集中运行平台具备高效、全面备份数据的能力,保证数据的安全可靠。
(6)建立集中运行管理机制,实现设备和系统资源的统一管理。按照信息系统和数据集中运行的要求,建立设备和系统的集中运行管理机制,实现对集中设备和系统的性能监控、配置优化和维护服务的统一运行管理,确保设备和系统的高效、可靠和安全地运行,提高对设备和系统的运行管理水平。
数据库设计与建模
数据库设计阶段
基于数据库系统生命周期的数据库设计可分为五个阶段,分别是规划、需求分析、概念设计、逻辑设计和物理设计。
1.规划
规划阶段的主要任务是进行建立数据库的必要性及可行性分析,确定数据库系统在企业和信息系统中的地位,以及各个数据库之间的联系。
2.需求分析
需求分析的目标是通过调查研究,了解用户的数据和处理要求,并按一定格式整理形成需求说明书。
3.概念设计
概念设计也称为概念结构设计,其任务是在需求分析阶段产生的需求说明书的基础上,按照特定的方法将它们抽象为一个不依赖于任何DBMS的数据模型,即概念模型。
4.逻辑设计
逻辑设计也称为逻辑结构设计,其任务是将概念模型转化为某个特定的DBMS上的逻辑模型。逻辑设计的目的是将概念设计阶段设计好的E-R图转换为与选用的具体机器上的DBMS所支持的数据模型相符合的逻辑结构。
5.物理设计
物理设计也称为物理结构设计,其任务是对给定的逻辑模型选取一个最适合应用环境的物理结构,所谓数据库的物理结构,主要是指数据库在物理设备上的存储结构和存取方法。物理设计的步骤如下:
(1)设计存储记录结构,包括记录的组成、数据项的类型和长度,以及逻辑记录到存储记录的映射。
(2)确定数据存储安排。
(3)设计访问方法,为存储在物理设备上的数据提供存储和检索的能力。
(4)进行完整性和安全性的分析与设计。
(5)数据库程序设计。
实体联系模型
E-R模型也称为E-R图,它是描述概念世界,建立概念模型的实用工具。在E-R图中,主要包括以下三个要素:
(1)实体(型)。实体用矩形框表示,框内标注实体名称。
(2)属性。单值属性用椭圆形表示,并用连线与实体连接起来。如果是多值属性,在椭圆形外面再套实线椭圆;如果是派生属性,则用虚线椭圆表示。
(3)实体之间的联系。实体之间的联系用菱形框表示,框内标注联系名称,并用连线将菱形框分别与有关实体相连,并在连线上注明联系类型。
1.联系的类型
E-R图中的联系可以归结为三种类型,分别是一对一联系、一对多联系和多对多联系。
(1)一对一联系(1:1)。设A、B为两个实体集,若A中的每个实体至多和B中的一个实体有联系,反过来,B中的每个实体至多和A中的一个实体有联系,则称A对B或B对A是1:1联系。要注意的是,1:1联系不一定都是一一对应的关系,可能存在着无对应。
(2)一对多联系(1:n)。如果实体集A中的每个实体可以和B中的几个实体有联系,而B中的每个实体至少和A中的一个实体有联系,则A对B属于1:n联系。
(3)多对多联系(m:n)。若实体集A中的每个实体可与B中的多个实体有联系,反过来,B中的每个实体也可以与A中的多个实体有联系,则称A对B或B对A是m:n联系。
2.E-R图的集成
在数据库的概念设计过程中,先设计各子系统的局部E-R图,其设计过程是,首先,确定局部视图的范围;然后,识别实体及其标识,确定实体之间的联系;最后,分配实体及联系的属性。各子系统的局部E-R图设计好后,下一步就是要将所有的分E-R图综合成一个系统的总体E-R图,一般称为视图的集成。
视图集成通常有两种方式,一种方式是多个局部E-R图一次集成,这种方式比较复杂,做起来难度较大;另一种方式是逐步集成,用累加的方式一次集成两个局部E-R图。这种方式每次只集成两个局部E-R图,可以降低复杂度。
在合并E-R图时,不能简单地将各个局部E-R图画到一起,而是必须着力消除各个局部E-R图中的不一致,以形成一个能为全系统中所有用户共同理解和接受的统一的概念模型。各局部E-R图之间的冲突主要有三类,分别是属性冲突、命名冲突和结构冲突。
(1)属性冲突。属性冲突包括属性域冲突和属性取值冲突。属性冲突理论上好解决,只要换成相同的属性就可以了,但实际上需要各部门协商,解决起来并不简单。
(2)命名冲突。命名冲突包括同名异义和异名同义。处理命名冲突通常也像处理属性冲突一样,通过讨论和协商等行政手段加以解。
(3)结构冲突。结构冲突包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同。对于前者的解决办法是将属性变换为实体或实体变换为属性,使同一对象具有相同的抽象。对于后者的解决办法是使该实体的属性取各局部E-R图中属性的并集,再适当调整属性的次序。
3.E-R图向关系模式的转换
该阶段需要将E-R模型转换为某种DBMS能处理的关系模式,具体转换规则如下:
(1)一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的主键就是关系的主键。
(2)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的模式,则与该联系相连的各实体的主键和联系本身的属性均转换为关系的属性,每个实体的主键均是该关系的键属性;如果与某一端实体对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的主键和联系本身的属性。
(3)一个1:n联系可以转换为一个独立的关系模式,也可以与任意n端对应的关系模式合并。如果转换为一个独立的模式,则与该联系相连的各实体的主键和联系本身的属性均转换为关系的属性,而关系的主键为n端实体的主键;如果与n端实体对应的关系模式合并,则需要在该关系模式的属性中加入1端关系模式的主键和联系本身的属性。
(4)一个m:n联系转换为一个独立的关系模式,与该联系相连的各实体的主键以及联系本身的属性均转换为关系的属性,而关系的主键为各实体主键的组合。
(5)三个以上实体间的一个多元联系可以转换为一个独立的关系模式,与该联系相连的各实体的主键和联系本身的属性均转换为关系的属性,而关系的主键为各实体主键的组合。
另外,还有四种情况是需要特别注意的:
(1)多值属性的处理。如果E-R图中某实体具有一个多值属性,则应该进行优化,把该属性提升为一个实体,通常称为弱实体;或者在转化为关系模式时,将实体的主键与多值属性单独构成一个关系模式。
(2)BLOB型属性的处理。典型的BLOB是一张图片或一个声音文件,由于它们的容量比较大,必须使用特殊的方式来处理。处理BLOB的主要思想就是让文件处理器(例如,数据库管理器)不去理会文件是什么,而是关心如何去处理它。因此,从优化的角度考虑,应采用的设计方案是将BLOB属性与关系的主键独立为一个关系模式。
(3)派生属性的处理。因为派生属性可由其他属性计算得到,因此,在转化成关系模式时,通常不转换派生属性。
(4)在面向对象模型中,本节的关系模式就对应类,关系模式的属性就对应类的属性。
分布式数据库概述
分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力(称为场地自治),它可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。
分布式数据库系统具有如下特点:
(1)数据独立性。在分布式数据库系统中,数据独立性这一特性更加重要,并具有更多的内容。除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。
(2)集中与自治共享结合的控制结构。各局部的DBMS可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。
(3)适当增加数据冗余度。在不同的场地存储同一数据的多个副本,这样,可以提高系统的可靠性和可用性,同时也能提高系统性能。
(4)全局的一致性、可串行性和可恢复性。
1.分布式数据库的体系结构
在分布式数据库中,局部DBMS中的内模式与概念模式与集中数据库是完全一致的,不同之处在于新增的全局DBMS。整个全局DBMS,可以看作是相对于局部概念模式的外模式。
(1)全局外模式。全局外模式是全局应用的用户视图,是全局概念模式的子集,该层直接与用户(或应用程序)交互。
(2)全局概念模式。全局概念模式定义分布式数据库中数据的整体逻辑结构,数据就如同根本没有分布一样,可用传统的集中式数据库中所采用的方法进行定义。
(3)分片模式。在某些情况下,需要将一个关系模式分解成为几个数据片,分片模式正是用于完成此项工作的。
(4)分布模式。分布式数据库的本质特性就是数据分布在不同的物理位置。分布模式的主要职责是定义数据片段(即分片模式的处理结果)的存放节点。分布模式的映射类型确定了分布式数据库是冗余的还是非冗余的。若映射是一对多的,即一个片段分配到多个节点上存放,则是冗余的分布式数据库,否则是不冗余的分布式数据库。根据分布模式提供的信息,一个全局查询可分解为若干子查询,每个子查询要访问的数据属于同一场地的局部数据库。
(5)局部概念模式。局部概念模式是局部数据库的概念模式。
(6)局部内模式。局部内模式是局部数据库的内模式。
2.分布式数据库的优点
分布式数据库的物理层面分布、逻辑层面统一的特色,让它具有一些集中式数据库所不可及的优势:
(1)分布式数据库可以解决企业部门分散而数据需要相互联系的问题。例
(2)如果企业需要增加新的相对自主的部门来扩充机构,则分布式数据库系统可以在对当前机构影响最小的情况下进行扩充。
(3)分布式数据库可以满足均衡负载的需要。数据的分片使局部应用达到最大,这使得各服务器之间的相互干扰降到最低。负载在各服务器之间分担,可以避免临界瓶颈。
(4)当企业已存在几个数据库系统,而且实现全局应用的必要性增加时,就可以由这些数据库自下而上构成分布式数据库系统。
(5)相等规模的分布式数据库系统在出现故障的概率上不会比集中式数据库系统低,但由于其故障的影响仅限于局部数据应用,因此,就整个系统来说,它的可靠性是比较高的。
数据分片
1.数据分片的分类
分片的方式有多种,水平分片和垂直分片是两种基本的分片方式,混合分片和导出分片是较复杂的分片方式。
(1)水平分片。水平分片将一个全局关系中的元组分裂成多个子集,每个子集为一个片段。分片条件由关系中的属性值表示。对于水平分片,重构全局关系可通过关系的并操作实现。
(2)垂直分片。垂直分片将一个全局关系按属性分裂成多个子集,应满足不相交性(关键字除外)。对于垂直分片,重构全局关系可通过连接运算实现。
(3)导出分片。导出分片又称为导出水平分片,即水平分片的条件不是本关系属性的条件,而是其他关系属性的条件。
(4)混合分片。混合分片是在分片中采用水平分片和垂直分片两种形式的混合。
2.数据分片的原则
不管采用哪种分片方式,数据分片都应遵循如下准则:
(1)完整性。全局关系的所有数据都必须分配到各个片段中,不允许某些数据属于全局关系但不属于任何片段。
(2)重构性。各个片段可以重构原来的全局关系。
(3)不相交性。全局关系中的每个元组仅属于一个片段,不能在多个片段中重复出现。此规则不是必须的,因为在有冗余的分布式数据库系统中数据可有多个副本。
3.分布透明性
分布透明性是指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分配细节,也不必关心局部场地上数据库的数据模型。分布透明性包括分片透明性、位置透明性和局部数据模型透明性。
(1)分片透明性。分片透明性是分布透明性的最高层次,它是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。当分片模式改变时,只要改变全局模式到分片模式的映射,而不影响全局模式和应用程序。全局模式不变,应用程序不必改写。
(2)位置透明性。位置透明性是指用户或应用程序应当了解分片情况,但不必了解片段的存储场地。当存储场地改变时,只要改变分片模式到分配模式的映射,而不影响应用程序。同时,若片段的重复副本数目改变了,数据的冗余改变了,但用户不必关心如何保持各副本的一致性,这也提供了重复副本的透明性。
(3)局部数据模型透明性。局部数据模型透明性是指用户或应用程序应当了解分片及各片断存储的场地,但不必了解局部场地上使用的是何种数据模型。
分布式数据库查询优化
分布式数据库在结构上与集中式数据库存在一定的差异,所以两者在查询优化方面各有侧重。集中式数据库优化主要考虑的是CPU代价和I/O代价,而分布式数据库还需要考虑通信代价。通信代价的降低是分布式数据库查询优化的关键。
在分布式数据库系统中,从查询涉及的数据和查询处理过程中的通信模式来划分,可以分为局部查询、远程查询和全局查询三种类型。查询优化的具体方法有全局查询树的变换、副本的选择与多副本的更新策略、查询树的分解、半连接与直接连接
等。
1.全局查询树的变换
为了提高执行效率,可对全局查询树进行下述变换:
(1)用片段替换查询树中的全局关系。
(2)尽可能将选择和投影等一元操作推向查询树的叶端。
(3)合并公共子表达式。
(4)消除空关系和冗余度。
(5)移去无用的垂直叶片。
2.副本的选择与多副本的更新策略
为了提高访问的局部性和系统的可用性,关系和片段常常可设置多个副本,分布于不同的节点。这样,在查询处理时,就存在副本选择的问题。选择副本的原则如下:
(1)尽可能提高访问的局部性,减少远距离访问。
(2)尽可能减少通信开销,尤其要减少大量数据的传送。
(3)适当考虑节点负载的平衡。
多副本虽然可以提高访问的局部性和系统的可靠性,但在更新时,必须维持多副本的一致性。为此,一般可采取下列策略:
(1)在事务提交前更新全部副本。使用这一策略时,如有多个副本,只要其中有一个副本不能更新,则事务就要失败。
(2)立即更新所有有效节点的副本,失效节点的副本留待修复后更新。这种策略的可用性要高于第一种策略。
(3)主副本法。指定一个副本为主副本,执行更新操作时,事务提交前仅更新主副本,所有副本在事务提交后根据主副本广播的内容进行更新。主副本与其他副本之间可能有暂时的不一致。如果读主副本,不会发生问题;如果读其他副本,就可能读到不一致的数据。为此,可以让每个副本附一个版本号,如果副本的版本号与主副本的版本号一致,就可以读取数据。反之,如果副本的版本号与主副本的版本号不一致,可以改为读主副本或等待副本更新后再读。
(4)快照法。快照是指数据在某一时刻的状态,它不随数据库中数据的更新而即时更新。在快照法中,数据只有一个副本,但有许多快照分布在有关的节点上。
3.查询树的分解
查询树分解的一般方法是采用后序遍历法。在遍历过程中,如果遇到的数据(即叶结点)都位于同一结点,则继续遍历,否则遍历失败,取出已经成功遍历的最大子树作为一个子查询树。对剩余的查询树继续遍历,直到所有的叶结点均被成功地遍历为止。
4.半连接与直接连接
半连接操作可以帮助从关系(或片段)筛选出连接时匹配的元组,减少节点之间的数据传输量和运算量,但也增加了投影操作和选择操作。半连接操作主要着眼于减少通信开销,一般多用于广域网环境下的分布式DBMS。
有些分布式数据库系统用直接连接进行分布式连接,同样能够收到较好的效果,常用的直接连接有嵌套循环法与排序归并法两种,以及全送与按需取数两种数据传送方式。
数据仓库技术
数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
数据源是数据仓库系统的基础,是整个系统的数据源泉;OLAP(On-Line Analytical Processing,联机分析处理)服务器对分析需要的数据进行有效集成,按多维模型予以组织,以便进行多角度、多层次的分析,并发现趋势;前端工具主要包括各种报表工具、查询工具、数据分析工具和数据挖掘工具,以及各种基于数据仓库或数据集市的应用开发工具。其中数据分析工具主要针对OLAP服务器,报表工具、数据挖掘工具主要针对数据仓库。
联机分析处理
数据处理大致可以分成两大类,分别是联机事务处理(On-Line Transaction Processing,OLTP)和OLAP。
OLTP是传统数据库的主要应用,支持基本的、日常的事务处理;OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
1.数据立方体
在多维的数据结构中,三维结构(Data Cube,数据立方体)最为直观。
2.多维分析
OLAP的基本多维分析操作有钻取、切片和切块、旋转等。
(1)钻取(drill)。钻取是改变维的层次,变换分析的粒度。它包括向上钻取(roll up)和向下钻取(drill down)。向上钻取是在某一维上将低层次的细节数据概括到高层次的汇总数据,或者减少维数,是一种自动生成汇总行的分析方法。通过向导的方式,用户可以定义和分析因素的汇总行。通过钻取功能,用户对数据能更深入了解,更容易发现问题,做出正确的决策。
(2)切片和切块(Slice and Dice)。切片和切块是在一部分维上选定值后,关心度量数据在剩余维上的分布。如果剩余的维只有两个,则是切片;如果有三个以上,则是切块。
(3)旋转(pivot)是变换维的方向,即重新安排维的放置(例如,行列互换等)。
3.实现方法
OLAP有多种实现方法,根据存储数据的方式不同,可以分为ROLAP(Relational OLAP,关系型OLAP)、MOLAP(Multidimensional OLAP,多维型OLAP)和HOLAP(Hybrid OLAP,混合型OLAP)。
ROLAP表示基于关系数据库的OLAP实现。以关系数据库为核心,以关系型结构进行多维数据的表示和存储。ROLAP将多维数据库的多维结构划分为两类表,一类是事实表,用来存储数据和维关键字;另一类是维表,即对每个维至少使用一个表来存放维的层次和成员类别等维的描述信息。
MOLAP表示基于多维数据组织的OLAP实现,以多维数据组织方式为核心。也就是说,MOLAP使用多维数组存储数据。如果是三维数据,则其在存储中将形成数据立方体结构。
HOLAP表示基于混合数据组织的OLAP实现,例如,低层是关系型的,高层是多维型的,这种方式具有更好的灵活性。
数据仓库概述
1.ETL过程
数据仓库的真正关键是数据的存储和管理。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。针对现有各业务系统的数据,进行抽取、清理,并有效集成,按照主题进行组织,整个过程可以简称为ETL(Extraction-Transformation-Loading,抽取、转换和加载)过程。
ETL负责将分布的、异构数据源中的数据(例如,关系数据、平面数据文件等)抽取到临时中间层后进行清洗、转换和集成,最后加载到数据仓库或数据集市中,成为OLAP和数据挖掘的基础。
2.数据仓库的分类
从结构的角度看,有三种数据仓库模型,分别是企业仓库、数据集市和虚拟仓库。
(1)企业仓库。企业仓库(enterprise warehouse)面向企业级应用,它搜集了企业的各个主题的所有信息,提供全企业范围的数据集成,数据通常来自多个操作型数据库和外部信息提供者,并且是跨多个功能范围的。企业仓库通常包含详细数据和汇总数据,数据量可达TB级。
(2)数据集市。数据集市(datamart)面向企业部门级应用,它包含对特定用户有用的、企业范围数据的一个子集,它的范围限定在选定的主题中。根据数据来源不同,数据集市可以分为两种,分别是独立数据集市(independent datamart)和从属数据集市(dependent datamart)。从属数据集市的数据直接来自于中央数据仓库,有利于保持数据的一致性,因为来自同一数据源,并且已经经过一致性处理和检验。独立数据集市的数据直接来自于业务系统,独立数据集市的优点是建立迅速、价格相对低廉。建立独立数据集市的原因往往是由于投资方面的考虑或工期的紧迫,或解决某部门的迫切需要。
(3)虚拟仓库。虚拟仓库(virtual warehouse)是操作型数据库上视图的集合。为了有效地处理查询,只有一些可能的汇总视图被物化。虚拟仓库易于建立,但需要操作型数据库服务器具有剩余的工作能力。
3.非结构化数据与数据仓库
为了更好地管理非结构化数据,数据仓库采用了元数据(当然,元数据不仅用于此)。管理人员可以通过元数据来获得非结构化数据的信息。 虽然非结构化数据对分析与决策有着重要意义,但由于存储大量非结构化数据将极大提高数据仓库的成本,所以,并不是所有的非结构化数据都存于数据仓库中。
当数据仓库没有足够空间用于非结构化数据存储,或是存储费用过高时,可以将非结构化数据的元数据存储在数据仓库中,在需要使用到该数据时,通过元数据顺利地找到它(这些数据可能存储在文件柜中、缩微胶片、备用磁盘中或磁带上等)。
非结构化数据与结构化数据的存储周期也是不同的,结构化数据进入数据仓库后一般都是永久保存,而非结构化数据可能存在时效性,过了时效期,存储的意义就不大了
数据仓库的设计方法
数据仓库的设计方法通常有三种,分别是自顶向下的方法和自底向上的方法,以及两者结合的混合方法。
1.自顶向下的方法
自顶向下的方法由总体规划和设计开始,通过对原始数据进行抽取、转换和迁移等处理之后,将数据输出至一个集中的数据驻留单元。然后,数据和元数据装载进入数据仓库。自顶向下的方法在实际应用中会遇到很多难题,例如:
(1)投资大,因为建立的数据仓库是面向企业的,涉及面广。
(2)应用周期较长,因为项目较大,开发周期相对较长,应用时间也长。
(3)需求难以确定,因为建立数据仓库的主要原因是利用其进行决策分析。这种功能在企业战略的应用范围中通常是很难确定的,数据仓库的应用往往超出企业当前的实际业务范围。
2.自底向上的方法
自底向上的核心思想是从企业中最关键的部门(或功能需求)开始,先以最少的投资,完成当前的需求,获得最快的回报,然后再不断扩充,不断完善。以该方法进行数据仓库的设计,最先产生的是独立数据集市,而后从多个独立数据集市中抽取数据,形成企业级的数据仓库。
3.混合法
自顶向下和自底向上方法的联合使用具有两种方法的优点,既能快速的完成数据仓库的开发与应用,还可建立具有长远价值的数据仓库方案。
数据挖掘技术
数据挖掘是采用数学的、统计的、人工智能和神经网络等领域的科学方法,从大量数据中挖掘出隐含的、先前未知的、对决策有潜在价值的关系、模式和趋势,并用这些知识和规则建立用于决策支持的模型,为商业智能系统服务的各业务领域提供预测性决策支持的方法、工具和过程。
数据挖掘技术
数据挖掘与传统的数据分析(例如,查询、报表、联机应用分析)的本质区别是数据挖掘是在没有明确假设的前提下去挖掘信息、发现知识。数据挖掘所得到的信息应具有先知、有效和可实用三个特征。
1.数据挖掘的体系结构
(1)知识发现系统管理器。控制并管理知识发现过程,录入知识库中的信息用于驱动数据选择过程、抽取算法选择,以及使用过程和发现评价过程。
(2)知识库。知识库包含源于多方面的必需的信息,可以将元数据输入数据仓库中,以描述数据仓库的数据结构,输入关键数据属性、规则和数据层次等。
(3)数据访问接口。知识发现系统利用数据库的查询机制从数据仓库中提取数据,可使用SQL查询语言,结合知识库中的数据仓库元数据,指导从数据仓库中提取需要的数据。
(4)数据选择。确定从数据仓库中需要抽取的数据及其结构。
(5)知识发现引擎。将知识库中的抽取算法提供给抽取的数据,目的是要抽取数据元素间的模式和关系。
(6)发现评价。分析员要寻找关注性的数据模式,选出那些关注性信息。
(7)发现描述。发现描述部分提供两种功能,一种是以发现评价辅助分析员在知识库中保存所发现的信息,以备将来引用和使用;另一种是保持发现与决策者的通信。
2.数据挖掘的流程
数据挖掘的流程大致如下:
(1)问题定义。在开始数据挖掘之前最先也是最重要的要求就是熟悉背景知识,弄清用户的需求。要想充分发挥数据挖掘的价值,必须对目标要有一个清晰明确的定义,即决定到底想干什么。
(2)建立数据挖掘库。要进行数据挖掘必须收集要挖掘的数据资源,一般需要将要挖掘的数据都收集到一个数据库中,而不是采用原有的数据库或数据仓库。
(3)分析数据。分析数据是对数据深入调查的过程。从数据集中找出规律和趋势,用聚类分析区分类别,理清多因素相互影响的、十分复杂的关系,发现因素之间的相关性。
(4)调整数据。通过上述步骤的操作,对数据的状态和趋势有了进一步的了解,这时,要尽可能对问题解决的要求能进一步明确化和量化。针对问题的需求对数据进行增删,按照对整个数据挖掘过程的新认识组合或生成一个新的变量,以体现对状态的有效描述。
(5)模型化。在问题进一步明确、数据结构和内容进一步调整的基础上,就可以建立形成知识的模型。这一步是数据挖掘的核心环节,一般运用神经网络、决策树和数理统计等方法来建立模型。
(6)评价和解释。所得到的模型有可能是没有实际意义或没有实用价值的,也有可能是其不能准确反映数据的真实意义,甚至在某些情况下是与事实相反的。因此,需要评估和确定哪些是有效的、有用的模式。评估的方法既可以是直接使用原先建立的挖掘数据库中的数据来进行检验,也可以另外拿一批数据对其进行检验,还可以在实际运行的环境中取出新数据进行检验。
常用技术与方法
1.数据挖掘的常用技术
数据挖掘中的关键技术是进行模式和关系识别的算法,下面介绍几种数据挖掘和知识发现的技术,它们分别从不同的角度进行数据挖掘和知识发现。
(1)决策树方法。决策树方法利用信息论中的互信息(信息增益)寻找数据库中具有最大信息量的属性,建立决策树的一个结点,再根据属性的不同取值建立树的分支。
(2)分类方法。分类方法将数据按照含义划分成组,可用该方法生成感兴趣的侧面,可用于自动发现类,例如,模式识别、侧面生成、线性聚簇和概念聚簇等。
(3)粗糙集(rough set)方法。粗糙集的研究主要基于分类。分类和概念(concept)同义,一种类别对应于一个概念。知识由概念组成,如果某知识中含有不精确概念,则该知识就不精确,粗糙集通过上近似概念和下近似概念来表示不精确概念。
(4)神经网络。神经网络通过学习待分析数据中的模式来构造模型,它可对隐式类型进行分析,适用于对非线性的、复杂的或高噪声的数据进行建模。神经网络技术模拟人脑神经元结构,由神经元互联,或按层组织的结点构成。通常,神经模型由三个层次组成,分别是输入层、中间层和输出层。每个神经元求得输入值,再计算总输入值,由过滤机制(例如,阀值)比较总输入,然后确定它自己的输出值。
(5)关联规则。关联规则是指搜索业务系统中的所有细节和事务,从中找出重复出现概率很高的模式,它以大的事务数据库为基础,其中每个事务都被定义为一系列相关数据项。用关联找出所有能将一组事件(或数据项)与另一组事件(或数据项)联系起来的规则。关联算法的目的是成为SQL的扩充,这种算法可以通过规范的查询技术,应用于受限的关系数据集。
(6)概念树方法。对数据库中记录的属性按归类方式进行抽象,建立起来的层次结构称为概念树。利用概念树提升的方法可以大大浓缩数据库中的记录。对多个属性的概念树进行提升,将得到高度概括的知识基表,然后再将它转换成规则。
(7)遗传算法。遗传算法是模拟生物进化过程的算法,由繁殖、交叉和变异三个基本算子组成。繁殖也称为选择,是从一个旧种群(父代)选出生命力强的个体,产生新种群(后代)的过程;交叉也称为重组,是指选择两个不同个体(染色体)的部分(基因)进行交换,形成新个体;变异也称为突变,是指对某些个体的某些基因进行变异(1变0、0变1)。遗传算法可起到产生优良后代的作用,这些后代需满足适应值,经过若干代的遗传,将得到满足要求的后代(问题的解)。
(8)依赖性分析。依赖性分析是指在数据仓库的条目或对象之间抽取依赖性,它展示了数据之间未知的依赖关系,依赖性是一个带有置信度因子的可能值。可以用依赖性分析方法从某个数据对象的信息来推断另一个数据对象的信息。
(9)公式发现。在工程和科学数据库中,对若干数据项(变量)进行一定的数学运算,求得相应的数学公式。其基本思想是,对数据项进行初等数学运算,形成组合数据项,若它的值为常数项,就得到了组合数据项等于常数的公式。
(10)统计分析方法。在数据库属性之间通常存在两种关系,分别是函数关系(能用某个函数表示的确定性关系)和相关关系(不能用函数表示的确定性关系)。对这些关系的分析,可以采用回归分析、相关分析或主成分分析等统计分析方法。
(11)模糊论方法。利用模糊集合理论对实际问题进行模糊评判、模糊决策、模糊模式识别和模糊聚类分析。模糊性是客观存在的,系统的复杂性越高,精确化能力就越低,即模糊性越强。
(12)可视化分析。可视化分析可给出带有多变量的图形化分析数据,帮助用户进行分析。可视化数据分析技术拓宽了传统的图表功能,使用户对数据的剖析更清楚。例如,将数据库中的多维数据变成多种图形,这对揭示数据的状况、内在本质及规律性起了很大作用。
2.数据挖掘的分析方法
从功能上可以将数据挖掘的分析方法划分为六种,即关联分析、序列分析、分类分析、聚类分析、预测和时间序列分析。
(1)关联分析。关联分析主要用于发现不同事件之间的关联性,即一个事件发生的同时,另一个事件也经常发生。关联分析的重点在于快速发现那些有实用价值的关联发生的事件。其主要依据是事件发生的概率和条件概率应该符合一定的统计意义。在进行关联分析的同时,还需要计算两个参数,分别是最小置信度(可信度)和最小支持度,前者表示规则需满足的最低可靠度,用以过滤掉可能性过小的规则;后者则用来表示规则在统计意义上需满足的最小程度。
(2)序列分析。序列分析主要用于发现一定时间间隔内接连发生的事件,这些事件构成一个序列,发现的序列应该具有普遍意义,其依据除了统计上的概率之外,还要加上时间的约束。在进行序列分析时,也应计算置信度和支持度。
(3)分类分析。分类分析通过分析具有类别的样本特点,得到决定样本属于各种类别的规则或方法。利用这些规则和方法对未知类别的样本分类时应该具有一定的准确度。其主要方法有基于统计学的贝叶斯方法、神经网络方法、决策树方法等。分类分析时首先为每个记录赋予一个标记(一组具有不同特征的类别),即按标记分类记录,然后检查这些标定的记录,描述出这些记录的特征。这些描述可能是显式的,例如,一组规则定义;也可能是隐式的,例如,一个数学模型或公式。
(4)聚类分析。聚类分析是根据“物以类聚”的原理,将本身没有类别的样本聚集成不同的组,并且对每个这样的组进行描述的过程。其主要依据是聚集到同一个组中的样本应该彼此相似,而属于不同组的样本应该足够不相似。聚类分析法是分类分析法的逆过程,它的输入集是一组未标定的记录,即输入的记录没有作任何处理,目的是根据一定的规则,合理地划分记录集合,并用显式或隐式的方法描述不同的类别。
(5)预测方法。预测方法与分类分析相似,但预测是根据样本的已知特征估算某个连续类型的变量的取值的过程,而分类则只是用于判别样本所属的离散类别而已。预测方法常用的技术是回归分析。
(6)时间序列分析。时间序列分析是随时间而变化的事件序列,目的是预测未来发展趋势,或者寻找相似发展模式,或者发现周期性的发展规律。
数据挖掘技术的应用
1.空间数据挖掘
空间数据挖掘(Spatial Data Mining,SDM)是在数据挖掘的基础上,结合地理信息系统、遥感图像处理、全球定位系统、模式识别、可视化等相关的研究领域而形成的一个分支学科,也称为空间数据挖掘和知识发现(Spatial Data Mining and Knowledge Discovery,SDMKD)。
SDM是指从空间数据库中抽取没有清楚表现出来的隐含的知识和空间关系,并发现其中有用的特征和模式的理论、方法和技术。
空间数据与其他类型数据的本质区别是其空间属性。空间属性包括空间位置、距离、几何形状和大小等内容,并且可引伸为空间个体之间的相互关系。
2.多媒体数据挖掘
多媒体数据挖掘(Multimedia Data Mining,MDM)是在大量的多媒体数据中,通过综合分析视听特性和语义,发现隐含的、有效的、有价值的、可理解的模式,进而发现知识,得出事件的趋向和关联,为用户提供问题求解层次的决策支持能力。
MDM相对于传统的数据挖掘有几个需要解决的问题。首先,多媒体数据为非结构化和异构数据。要在这些非结构化的数据上进行挖掘以获取知识,必须将它们转化为结构化数据,通过特征提取,用特征向量作为元数据建立元数据库,在此基础上进行数据挖掘;其次,多媒体数据的特征向量通常是数十维甚至数百维,如何对高维矢量进行数据挖掘,也是要考虑的重要问题。
MDM系统通常包括多媒体数据集、预处理模块、挖掘引擎和用户接口。
3.文本数据挖掘
文本数据挖掘(Text Data Mining,TDM)是指从文本数据中抽取有价值的信息和知识的计算机处理技术。文本数据挖掘是应用驱动的,它在智能商务、信息检索、生物信息处理等方面都有广泛的应用。
按照挖掘的对象不同,可以将TDM分为基于单文档的数据挖掘和基于文档集的数据挖掘。基于单文档的数据挖掘对文档的分析并不涉及其他文档,其主要的挖掘技术有文本摘要和信息提取(包括名字提取、短语提取和关系提取等);基于文档集的数据挖掘是对大规模的文档数据进行模式抽取,其主要的技术有文本分类、文本聚类、个性化文本过滤、文档作者归属和因素分析等。
本文深入探讨了数据库系统,包括数据库模式的组成、数据模型分类(如层次、网状、关系和面向对象模型)、规范化理论、数据库访问接口(如ODBC和JDBC)以及数据库的控制功能,如并发控制、性能优化、完整性、安全性。此外,还介绍了数据仓库和数据挖掘技术,涵盖了OLAP、数据立方体、ETL过程和数据挖掘的常用方法。
&spm=1001.2101.3001.5002&articleId=115872836&d=1&t=3&u=7a62548b39e34a70a386e2d0182bfc80)
4332

被折叠的 条评论
为什么被折叠?



