第3章 · 原文阅读

数据库系统

第3章 数据库系统

随着应用系统的规模越来越大,现在的系统开发大部分都是基于数据库的应用,因此,作为一名系统架构设计师,要熟练地掌握数据库系统的设计方法和技术。

本章在宏观上就系统架构设计师必须要掌握的内容进行介绍,有关细节方面的知识,如果读者感兴趣,可以参考数据库专业教程。

3.1 数据库管理系统的类型

数据库管理系统的类型通常有多个分类标准。如按数据模型分类、按用户数分类、按数据库分布站点分类等。但我们需要了解的,主要还是按数据模型分类。

当前,许多商业DBMS 中所用的主要数据模型仍是关系数据模型。有些商业系统中实现了对象数据模型,但未得到广泛使用。近几年随着NoSQL 技术的兴起,也产生了一些新的数据模型。目前常见的DBMS 按数据模型划分,包括:关系型DBMS、文档型DBMS、键值型DBMS、对象型DBMS 等。

3.2 数据库模式与范式

数据库模式与范式是数据库系统中的两个重要概念,是进行数据库设计的基础。

3.2.1 数据库的结构与模式

数据库技术中采用分级的方法将数据库的结构划分为多个层次。最著名的是美国ANSI/SPARC 数据库系统研究组 1975 年提出的三级划分法,如图 3-1 所示。

1. 三级抽象

数据库系统划分为三个抽象级:用户级、概念级、物理级。

2. 三级模式

数据库系统的三级模式为外模式、概念模式、内模式。

数据库系统概念模式通常还包含有访问控制、保密定义、完整性检查等方面的内容,以及概念/物理之间的映射。

概念模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。

一个数据库只有一个概念模式。

外模式是数据库用户(包括程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。一个数据库可以有多个外模式。一个应用程序只能使用一个外模式。

内模式是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式。

内模式、模式和外模式之间的关系如下:

3. 两级独立性

数据库系统两级独立性是指物理独立性和逻辑独立性。三个抽象级间通过两级映射(外模式—模式映射,模式—内模式映射)进行相互转换,使得数据库的三级形成一个统一的整体。

物理独立性存在于概念模式和内模式之间的映射转换,说明物理组织发生变化时应用程序的独立程度。

逻辑独立性存在于外模式和概念模式之间的映射转换,说明概念模式发生变化时应用程序的独立程度。

希赛教育专家提示:逻辑独立性比物理独立性更难实现。

3.2.2 数据模型

数据模型主要有两大类,分别是概念数据模型(实体—联系模型)和基本数据模型(结构数据模型)。

概念数据模型是按照用户的观点来对数据和信息建模,主要用于数据库设计。概念模型主要用实体—联系方法(Entity-Relationship Approach)表示,所以也称 E-R 模型。

基本数据模型是按照计算机系统的观点来对数据和信息建模,主要用于 DBMS 的实现。

基本数据模型是数据库系统的核心和基础。基本数据模型通常由数据结构、数据操作和完整性约束三部分组成。其中数据结构是对系统静态特性的描述,数据操作是对系统动态特性的描述,完整性约束是一组完整性规则的集合。

常用的基本数据模型有层次模型、网状模型、关系模型和面向对象模型。

层次模型用树形结构表示实体类型及实体间的联系。层次模型的优点是记录之间的联系通过指针来实现,查询效率较高。层次模型的缺点是只能表示 1:n 联系,虽然有多种辅助手段实现 m:n 联系,但比较复杂,用户不易掌握。由于层次顺序的严格和复杂,导致数据的查询和更新操作很复杂,应用程序的编写也比较复杂。

网状模型用有向图表示实体类型及实体间的联系。网状模型的优点是记录之间的联系通过指针实现,m:n 联系也容易实现,查询效率高。其缺点是编写应用程序的过程比较复杂,程序员必须熟悉数据库的逻辑结构。

关系模型用表格结构表达实体集,用外键表示实体间的联系。其优点有:

3.2.2 关系代数

关系代数的基本运算主要有并、交、差、笛卡尔积、选择、投影、连接和除法运算。

RUSo{t|tÎRútÎS}

式中 t 是元组变量(下同)。显然,R∪S=S∪R。

R -So{t|tÎR ùtÏS}

RISo{t |tÎRùtÎS}

显然,R∩S = R-(R-S) 和 R∩S = S-(S-R)成立。

R′So{t |t=ùtr ÎRùts ÎS}若 R 有 u 个元组,S 有 v 个元组,则 R×S 有 u×v 个元组。例如,有关系 R 与关系 S 如表 3-1 和表 3-2 所示。

对 R 与 S 做笛卡尔积运算,其结果有 4+2=6 列,元组数量有 3*2=6 条。如表 3-3所示。

例如,对表 3-1 关系 R 做投影操作, p1,2(R),则结果如表 3-4 所示。

注意:在关系代数操作中涉及的数字代表的是列号,, p1,2(R)操作是对第 1 列与第 2列做投影。

其中 F 表示选择条件,是一个逻辑表达式(逻辑运算符+算术表达式)。选择运算是从元组(行)的角度进行的运算。

其中 A 和 B 分别为 R 和 S 上元数相等且可比的属性组。θ 为“=”的连接,称为等值连接,记作:

如果两个关系中进行比较的分量必须是相同的属性组,并且在结果中将重复的属性去掉,则称为自然连接,记作:

例如,对表 3-1 关系 R 与表 3-2 关系 S 做自然连接操作。结果集如表 3-6 所示。

例如,对表 3-1 的关系 R 与表 3-2 的关系 S 做除法运算。

求解过程为:首先,按除运算定义要求,确定 X,Y,Z 属性集合。Y 是关系 R 中的属性集合,Z 是 S 中全部属性的集合,即 Z={U3,U4},由于 Y=Z,因此,Y={U3,U4}, X={U1,U2}。也就是说,R÷S 结果集包含属性 U1 和 U2;然后,将关系 R 的 U1、U2(共有两个元组)与关系 S 作笛卡尔积操作,结果如表 3-7 所示。

通过检查表 3-7,可以发现元组与 S(Z)的笛卡尔积被包含在 R(X,Y)中,而元组与 S(Z)的笛卡尔积有一个元组未被包含在 R(X,Y)中,所以,结果集中只有元组

3.2.4 数据的规范化

关系模型满足的确定约束条件称为范式,根据满足约束条件的级别不同,范式由低到高分为 1NF(第一范式)、2NF(第二范式)、3NF(第三范式)、BCNF(BC 范式)、4NF(第四范式)等。不同的级别范式性质不同。

把一个低一级的关系模型分解为高一级关系模型的过程,称为关系模型的规范化。关系模型分解必须遵守两个准则。

规范化的基本思想是逐步消除不合适的函数依赖,使数据库中的各个关系模型达到某种程度的分离。规范化解决的主要是单个实体的质量问题,是对于问题域中原始数据展现的正规化处理。

规范化理论给出了判断关系模型优劣的理论标准,帮助预测模式可能出现的问题,是数据库逻辑设计的指南和工具,具体有:

1. 函数依赖

通俗地说,就像自变量 x 确定之后,相应的函数值 f(x)也就唯一确定了一样,函数依赖是衡量和调整数据规范化的最基础的理论依据。

例如,记录职工信息的结构如下:

职工工号(EMP_NO)

职工姓名(EMP_NMAE)

所在部门(DEPT)。

则说 EMP_NO 函数决定 EMP_NMAE 和 DEPT,或者说 EMP_NMAE,DEPT 函数依赖于 EMP_NO,记为:EMP_NO→EMP_NMAE,EMP_NO→DEPT。

关系 R中的一个属性或一组属性 K,如果给定一个 K 则唯一决定 U 中的一个元组,也就是 U 函数完全依赖于 K,就称 K 为 R 的码。一个关系可能有多个码,选中其中一个作为主码。

包含在任一码中的属性称为主属性,不包含在任何码中的属性称为非主属性。

关系 R 中的属性或属性组 X 不是 R 的码,但 X 是另一个关系模型的码,称 X 是 R的外码。

主码和外码是一种表示关系间关联的重要手段。数据库设计中一个重要的任务就是要找到问题域中正确的关联关系,孤立的关系模型很难描述清楚业务逻辑。

2. 第一范式

1NF 是最低的规范化要求。如果关系 R 中所有属性的值域都是简单域,其元素(即属性)不可再分,是属性项而不是属性组,那么关系模型 R 是第一范式的,记作RÎ1NF。这一限制是关系的基本性质,所以任何关系都必须满足第一范式。第一范式是在实际数据库设计中必须先达到的,通常称为数据元素的结构化。

例如,表3-8 所示的结构就不满足1NF 的定义。

表3-8 为非第一范式,分解如表3-9 所示。

就满足了第一范式。经过处理后,就可以以省、市为条件进行查询和统计了。

满足 1NF 的关系模型会有许多重复值,并且增加了修改其数据时引起疏漏的可能性。

为了消除这种数据冗余和避免更新数据的遗漏,需要更加规范的 2NF。

3. 第二范式

如果一个关系 R 属于 1NF,且所有的非主属性都完全依赖于主属性,则称之为第二范式,记作RÎ2NF。

为了说明问题,现举一个例子来说明:

有一个获得专业技术证书的人员情况登记表结构为:

省份、姓名、证书名称、证书编号、核准项目、发证部门、发证日期、有效期。

这个结构符合 1NF,其中“证书名称”和“证书编号”是主码,但是因为“发证部门”

只完全依赖于“证书名称”,即只依赖于主关键字的一部分(即部分依赖),所以它不符合 2NF,这样首先存在数据冗余,因为证书种类可能不多。其次,在更改发证部门时,如果漏改了某一记录,存在数据不一致。再次,如果获得某种证书的职工全部跳槽了,那么这个发证部门的信息就可能丢失了,即这种关系不允许存在某种证书没有获得者的情况。

可以用分解的方法消除部分依赖的情况,而使关系达到 2NF 的标准。方法是,从现有关系中分解出新的关系表,使每个表中所有的非关键字都完全依赖于各自的主关键字。可以分解成两个表(省份、姓名、证书名称、证书编号、核准项目、发证日期、有效期)和(证书名称、发证部门),这样就完全符合 2NF 了。

4. 第三范式

如果一个关系 R 属于 2NF,且每个非主属性不传递依赖于主属性,这种关系是 3NF,记作 RÎ3NF。

从 2NF 中消除传递依赖,就是 3NF。例如,有一个表(职工姓名,工资级别,工资额),其中职工姓名是关键字,此关系符合 2NF,但是因为工资级别决定工资额,也就是说非主属性“工资额”传递依赖于主属性“职工姓名”,它不符合 3NF,同样可以使用投影分解的办法分解成两个表:(职工姓名,工资级别),(工资级别,工资额)。

5. BC 范式

一般满足 3NF 的关系模型已能消除冗余和各种异常现象,获得比较满意的效果,但无论 2NF 还是 3NF 都没有涉及主属性间的函数依赖,所以有时仍会引起一些问题。由此引入 BC 范式(由 Boyeet 和 Codd 提出)。通常认为 BCNF 是第三范式的改进。

BC 范式的定义:如果关系模型 R∈1NF,且 R 中每一个函数依赖关系中的决定因素都包含码,则 R 是满足 BC 范式的关系,记作 RÎBCNF。

当一个关系模型 RBCNF,则在函数依赖范畴里,就认为已彻底实现了分离,消除了插入、删除的异常。

综合 1NF、2NF 和 3NF、BCNF 的内涵可概括如下:

3.2.5 反规范化

数据库中的数据规范化的优点是减少了数据冗余,节约了存储空间,相应逻辑和物理的I/O 次数减少,同时加快了增、删、改的速度,但是对完全规范的数据库查询,通常需要更多的连接操作,从而影响查询速度。因此,有时为了提高某些查询或应用的性能而破坏规范规则,即反规范化(非规范化处理)。

常见的反规范化技术包括:

增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作。例如:以规范化设计的理念,学生成绩表中不需要字段“姓名”,因为“姓名”字段可以通过学号查询到,但在反规范化设计中,会将“姓名”字段加入表中。这样查询一个学生的成绩时,不需要与学生表进行连接操作,便可得到对应的“姓名”。

增加派生列指增加的列可以通过表中其他数据计算生成。它的作用是在查询时减少计算量,从而加快查询速度。例如:订单表中,有商品号、商品单价、采购数量,我们需要订单总价时,可以通过计算得到总价,所以规范化设计的理念是无须在订单表中设计“订单总价”字段。但反规范化则不这样考虑,由于订单总价在每次查询都需要计算,这样会占用系统大量资源,所以在此表中增加派生列“订单总价”以提高查询效率。

重新组表指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。

有时对表做分割可以提高性能。表分割有两种方式。

水平分割:根据一列或多列数据的值把数据行放到两个独立的表中。水平分割通常在下面的情况下使用。

情况 1:表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询效率。

情况 2:表中的数据本来就有独立性,例如表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用。

情况 3:需要把数据存放到多个介质上。

垂直分割:把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直分割,另外垂直分割可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少 I/O 次数。其缺点是需要管理冗余列,查询所有数据需要连接操作。

3.3 数据库设计

数据库设计的过程是将数据库系统与现实世界密切地、有机地、协调一致地结合起来的过程。数据库的设计质量与设计者的知识、经验和水平密切相关。作为数据库应用系统的重要组成部分,数据库设计的成败往往直接关系到整个应用系统的成败。

以数据库为基础的数据库应用系统与其他计算机应用系统相比往往具有数据量庞大、数据保存时间长、数据关联复杂、用户要求多样化等特点。

数据库设计中面临的主要困难和问题有:

3.3.1 数据库设计的方法

目前已有的数据库设计方法可分为四类,即直观设计法、规范设计法、计算机辅助设计法和自动化设计法。直观设计法又称单步逻辑设计法,它依赖于设计者的知识、经验和技巧,缺乏工程规范的支持和科学根据,设计质量也不稳定,因此越来越不适应信息管理系统发展的需要。为了改变这种状况,1978 年 10 月来自 30 多个欧美国家的主要数据库专家在美国新奥尔良市专门讨论了数据库设计问题,提出了数据库设计规范,把数据库设计分为需求分析、概念结构设计、逻辑结构设计和物理结构设计 4 个阶段。目前,常用的规范设计方法大多起源于新奥尔良方法,如基于 3NF 的设计方法、LRA 方法、面向对象的数据库设计方法及基于视图概念的数据库设计方法等。架构设计师考试中,主要了解基于 3NF 的数据库设计方法即可。

基于 3NF 的数据库设计方法是由 S.Atre 提出的数据库设计的结构化设计方法,其基本思想是在需求分析的基础上,识别并确认数据库模式中的全部属性和属性间的依赖,将它们组织成一个单一的关系模型,然后再分析模式中不符合 3NF 的约束条件,用投影和连接的办法将其分解,使其达到 3NF 条件。其具体设计步骤分为 5 个阶段,如图 3-2 所示。

3-2 基于3NF 的数据库设计方法

分析应用环境,并设定环境中所使用的各种资料。

确定每一种报表各自所包含的数据元素。

确定数据元素之间的关系,如确定主关键字和一般的数据元素。

对每一组或若干组数据元素推导出 3NF 的关系模型。

在 3NF 关系模型的基础上画出数据库的企业模式。

3.3.2 数据库设计的基本步骤

分步设计法遵循自顶向下、逐步求精的原则,将数据库设计过程分解为若干相互独立又相互依存的阶段,每一阶段采用不同的技术与工具,解决不同的问题,从而将问题局部化,减少了局部问题对整体设计的影响。目前,此方法已在数据库设计中得到了广泛应用并获得了较好的效果。

在分步设计法中,通常将数据库的设计分为需求分析、概念结构设计、逻辑结构设计和数据库物理设计 4 个阶段,如图 3-3 所示。

1. 需求分析

需求分析是指收集和分析用户对系统的信息需求和处理需求,得到设计系统所必需的需求信息,建立系统说明文档。其目标是通过调查研究,了解用户的数据要求和处理要求,并按一定格式整理形成需求说明书。需求说明书是需求分析阶段的成果,也是今后设计的依据,它包括数据库所涉及的数据、数据的特征、使用频率和数据量的估计,如数据名、属性及其类型、主关键字属性、保密要求、完整性约束条件、更改要求、使用频率、数据量估计等。

这些关于数据的数据称为元数据。在设计大型数据库时,这些数据通常由数据字典来管理。

用数据字典管理元数据有利于避免数据的重复或重名,以保持数据的一致性及提供各种统计数据,因而有利于提高数据库设计的质量,同时可以减轻设计者的负担。

2. 概念结构设计

它是数据库设计的第二阶段,其目标是对需求说明书提供的所有数据和处理要求进行抽象与综合处理,按一定的方法构造反映用户环境的数据及其相互联系的概念模型,即用户的数据模型或企业数据模型。这种概念数据模型与 DBMS 无关,是面向现实世界的、极易为用户所理解的数据模型。为保证所设计的概念数据模型能正确、完整地反映用户的数据及其相互关系,便于进行所要求的各种处理,在本阶段设计中可吸收用户参与和评议设计。在进行概念结构设计时,可先设计各个应用的视图(view),即各个应用所看到的数据及其结构,然后再进行视图集成,以形成一个单一的概念数据模型。这样形成的初步数据模型还要经过数据库设计者和用户的审查与修改,最后形成所需的概念数据模型。

3. 逻辑结构设计

这一阶段的设计目标是把上一阶段得到的与 DBMS 无关的概念数据模型转换成等价的,并为某个特定的 DBMS 所接受的逻辑模型所表示的概念模式,同时将概念设计阶段得到的应用视图转换成外部模式,即特定 DBMS 下的应用视图。在转换过程中要进一步落实需求说明,并满足 DBMS 的各种限制。该阶段的结果是用 DBMS 所提供的数据定义语言(DDL)

写成的数据模式。逻辑设计的具体方法与 DBMS 的逻辑数据模型有关。逻辑模型应满足数据库存取、一致性及运行等各方面的用户需求。

4. 数据库物理设计

物理设计阶段的任务是把逻辑设计阶段得到的满足用户需求的已确定的逻辑模型在物理上加以实现,其主要内容是根据 DBMS 提供的各种手段,设计数据的存储形式和存取路径,如文件结构、索引设计等,即设计数据库的内模式或存储模式。数据库的内模式对数据库的性能影响很大,应根据处理需求及 DBMS、操作系统和硬件的性能进行精心设计。

实际上,数据库设计的基本过程与任何复杂系统开发一样,在每一阶段设计基本完成后,都要进行认真的检查,看是否满足应用需求,是否符合前面已执行步骤的要求和满足后续步骤的需要,并分析设计结果的合理性。在每一步设计中,都可能发现前面步骤的遗漏或处理不当之处,此时,往往需要返回去重新处理并修改设计和有关文档。所以,数据库设计过程通常是一个反复修改、反复设计的迭代过程。

3.3.3 需求分析

需求分析是数据库设计过程的第一步,是整个数据库设计的依据和基础。需求分析做得不好,会导致整个数据库设计重新返工。需求分析的目标是通过对单位的信息需求及处理要求的调查分析得到设计数据库所必需的数据集及其相互联系,形成需求说明书,作为后面各设计阶段的基础。因此,这一阶段的任务是:

1. 确认需求、确定设计目标

数据库设计的第一项工作就是要对系统的整个应用情况进行全面、详细的实地调查,弄清现行系统的组织结构、功能划分、总体工作流程,收集支持系统总的设计目标的基础数据和对这些数据的处理要求,明确用户总的需求目标;通过分析,确定相应的设计目标,即确定数据库应支持的应用功能和应用范围,明确哪些功能由计算机完成或准备让计算机完成,哪些环节由人工完成,以确定应用系统实现的功能。这一阶段收集到的基础数据和一组数据流程图是下一步进行概念设计的基础。

2. 分析和收集数据

这是整个需求分析的核心任务。它包括分析和收集用户的信息需求、处理需求、完整性需求、安全性需求,以及对数据库设计过程有用的其他信息。

信息需求是指在设计目标范围内涉及的所有实体、实体的属性及实体间的联系等数据对象,包括用户在数据处理中的输入/输出数据及这些数据间的联系。在收集中,要收集数据的名称、类型、长度、数据量、对数据的约束及数据间联系的类型等信息。

处理需求是指为了获得所需的信息而对数据加工处理的要求。它主要包括,处理方式是实时还是批处理,各种处理发生的频度、响应时间、优先级别及安全保密要求等。所要收集的其他信息还有企业在管理方式、经营方式等方面可能发生的变化等。

分析和收集数据的过程是数据库设计者对各类管理活动进行深入调查研究的过程,调查对象包括数据管理部门的负责人、各使用部门的负责人及操作员等各类管理人员,通过与各类管理人员相互交流,逐步取得对需求的一致认识。

3. 整理文档

分析和收集得到的数据必须经过筛选整理,并按一定格式和顺序记载保存,经过审核成为正式的需求说明文档,即需求说明书。实际上,需求说明书是在需求分析的过程中逐渐整理形成的,是随着这一过程的不断深入而反复修改与完善的对系统需求分析的全面描述。由用户、领导和专家共同评审,是以后各设计阶段的主要依据。这一步的工作是进行全面的汇总与整理,使之系统化,以形成标准化的统一形式。

3.3.4 概念结构设计

概念结构设计阶段所涉及的信息不依赖于任何实际实现时的环境,即计算机的硬件和软件系统。概念结构设计的目标是产生一个用户易于理解的,反映系统信息需求的整体数据库概念结构。概念结构设计的任务是,在需求分析中产生的需求说明书的基础上按照一定的方法抽象成满足应用需求的用户的信息结构,即通常所称的概念模型。概念结构的设计过程就是正确选择设计策略、设计方法和概念数据模型并加以实施的过程。

概念数据模型的作用是:提供能够识别和理解系统要求的框架;为数据库提供一个说明性结构,作为设计数据库逻辑结构,即逻辑模型的基础。

概念模型的描述工具应该能够体现概念模型的特点,如 E-R 模型。近年来,由于面向对象数据模型具有更丰富的语义、更强的描述能力而越来越受到人们的重视,不但出现了商品化的面向对象 DBMS,而且开始实际应用于概念模型的设计中,作为数据库概念设计的工具。

Teory 等人提出的扩展的 E-R 模型增加了类似面向对象数据模型中的普遍化和聚合等语义描述机制,为这种最为人们熟悉的数据模型注入了新的生机,为概念模型的描述增加了一种理想的选择。

概念结构的设计策略主要有自底向上、自顶向下、由里向外和混合策略。在具体实现设计目标时有两种极端的策略或方案,一是建立一个覆盖整个单位所有功能域的全局数据库,称之为全局方案或全局策略;另一种则是对每一个应用都建立一个单独的数据库,称之为应用方案或应用策略。

由于各个部门对于数据的需求和处理方法各不相同,对同一类数据的观点也可能不一样,它们有自己的视图,所以可以首先根据需求分析阶段产生的各个部门的数据流图和数据字典中的相关数据设计出各自的局部视图,然后进行视图集成。

1. 视图设计

在实体分析法中,局部视图设计的第一步是确定其所属的范围,即它所对应的用户组,然后对每个用户组建立一个仅由实体、联系及它们的标识码组成的局部信息结构(局部数据模式)框架,最后再加入有关的描述信息,形成完整的局部视图(局部数据模式)。这样做的目的是为了集中精力处理好用户数据需求的主要方面,避免因无关紧要的描述细节而影响局部信息结构的正确性。整个过程可分为 4 个步骤:确定局部视图的范围;识别实体及其标识;确定实体间的联系;分配实体及联系的属性。

局部视图范围确定的基本原则是:

各个局部视图支持的功能域之间的联系应最少。

实体个数适量。一个局部视图所包含的实体数量反映了该局部视图的复杂性,按照信息论中“72”的观点,人们在同一时刻可同时顾及的事情一般在 5~9 之间,其中以 6 或 7 最为适当。因此,一个局部视图内的实体数不宜超过 9 个,否则就会过于复杂,不便于人们理解和管理。

在现实世界中,诸多形式的联系大致可分为三类:存在性联系、功能性联系和事件联系。

存在性联系如学校有教师、教室有学生、工厂有产品、产品有顾客等;功能性联系如教师讲授课程、教师参与科研、仓库管理员管理仓库等;事件联系如学生借书、产品发运等。

根据上述分类仔细检查在给定的局部视图范围内是否有未识别的联系,在确认所有的联系都已识别并无遗漏之后,还需对联系进行正确的定义。定义联系就是对联系语义的仔细分析,识别联系的类型,确定实体在联系中的参与度。

一对一联系:这是一种最简单的联系类型。若对于实体集 A 中的每一个实体,实体集 B 中至多有一个实体与之联系,反之亦然,则称实体集 A 与实体集 B 具有一对一联系,记为 1:1。

例如在一个施工单位中,如果规定每项工程最多只能由一名工程师负责管理,而一名工程师最多也只能负责一项工程,则工程师与工程间的这种管理联系便是一对一联系。

一对多联系:若对于实体集 A 中的每一个实体,实体集 B 中有 n 个实体(n≥0)与之联系;反之,对于实体集 B 中的每一个实体,实体集 A 中至多有一个实体与之联系,则称实体集 A 与实体集 B 有一对多的联系,记为 1:n。以专业与学生间的关系为例:如规定一个专业可以管理许多学生,每个学生只能属于一个专业,这种联系就是一对多联系。

多对多联系:若对于实体集 A 中的每一个实体,实体集 B 中有 n 个实体(n≥0)与之联系,反过来,对实体集 B 中每一个实体,实体集 A 中也有 m 个实体(m≥0)与之联系,则称实体集 A 与实体集 B 具有多对多联系,记为 m:n。教师与学生这两个实体类间的教与学的联系就是多对多的联系。这时,只有<教师、学生>对才能确定一个特定的教学联系。

因此,一般情况下可以以两个关联实体的标识拼凑作为联系的标识。但这种方法对某些情况就不能构成有效的联系标识。当一个实体值在同一个联系上可能存在多个不同的联系值时,就会出现这种情况。如教师与其讲授的课程之间的联系,同一个教师可讲授几门不同的课程,也可以多次讲授同一门课程,这是一种特殊的多对多联系。显然,对于教师与讲授课程间的联系,如在教师档案中要求记录担任教学工作的情况,就需要在联系标识中增加表示授课日期的属性,即其合适的联系标识可能为(教师号,课程号,授课日期)。

实体类内部的联系:这种联系发生在同一类实体的不同实体之间,因此称为内部联系或自联系,它也是一种二元联系,其表示方式与前面的二元联系并无不同,要注意仔细区别同一实体类中的不同实体在联系中扮演的不同角色及联系标识的选择。例如在职工类实体中间就存在着管理者与被管理者的联系。一个职工可以管理别的职工,称为管理者或领导者。一个管理者可以管理多个职工,而一个职工最多只从属于一位管理者,从而构成了一对多联系。若规定所有职工都要受管理(最高管理者考虑自己管理自己),但不是所有职工都是管理者,则此联系在“多”端呈现强制性。其中每个联系实体包含两个职工号值:职工号和管理员职工号,以区别不同的实体在联系中的角色。

若略去实体与其属性图,以上实体间的二元联系可用图3-4 表示。

图3-4

2. 视图集成

视图集成就是要将反映各用户组数据的局部数据模式综合成单位中某个确定范围内的单一数据视图,即全局数据模式,又称模式汇总。该全局数据模式是未来数据库结构的基础,因此视图集成是数据库设计过程中一个十分重要的步骤,也是一项较为复杂和困难的任务。

当所有局部视图设计完毕,就可开始视图集成。集成过程中会发生一些冲突,冲突的表现和处理策略如下:

它同样采用换名的方法解决。若归并时试图将它们合并为一个对象,则可以把其中之一的名称作为合并后的对象名;若集成后,它们仍以两个不同的对象存在,则可对其一换名。当然,若原名都不合适,则可以对两者都重新命名。

例如,设一局部视图中有一部门实体 DEPT,而在另一与之集成的视图中有职工实体EMP,且 EMP 有属性 DEPT,于是发生了同名不同层次的冲突。此时,可将 EMP 的 DEPT属性去掉,另设一个实体 DEPT 与 EMP 建立联系,这时再与另一视图集成就容易多了。

再如,设一局部视图中有一名为 STOR 的仓库实体,其中含有一属性部门号(DEPT-NO);

在另一局部视图中有一单位实体 DEPT,其中仅含有一个属性 DEPT-NO。对这类同名不同层次的冲突,可将 DEPT 实体变换为其所在视图中与 DEPT 相关的另一实体的属性,然后再进行集成。

希赛教育专家提示:实体变换为属性时通常要满足一些特定条件,例如,该实体通常只含有一个与同名属性具有共同特征的属性,且一定存在一个与该实体存在联系的另外的实体。

3.3.5 逻辑结构设计

数据库逻辑结构设计的任务就是把概念结构设计阶段设计好的基本 E-R 图转换为与具体机器上的 DBMS 产品所支持的数据模型相符合的逻辑结构。这一阶段是数据库结构设计的重要阶段。

数据库逻辑设计的基础是概念设计的结果,而其成果应包括某 DBMS 所支持的外模式、概念模式及其说明及建立外模式和概念模式的 DDL 程序。因此,进行逻辑设计前,必须了解数据库设计的需求说明和概念设计的成果(包括 E-R 图和其他文档),并仔细阅读有关DBMS 的文件。数据库的外模式和概念模式是用户所看到的数据库,是应用程序访问数据库的接口,因此在数据库逻辑设计阶段,还必须提供应用程序编制的有关说明,最好试编一些典型的访问数据库的应用程序,以检验所设计的概念模式是否满足使用要求。概念模式是数据库的基础,它的设计质量对数据库的使用和性能,以及数据库在今后发展过程中的稳定性均有直接的影响。为了设计出能够正确反映一个项目数据间内在联系的好的概念模式,设计时必须正确处理各种应用程序之间、数据库性能与数据模式的合理性和稳定性之间的各种矛盾,对设计中出现的各种矛盾要权衡利弊,分清主次,按统筹兼顾的原则加以正确处理。

逻辑结构设计一般分为以下几个步骤:

下面以常用的 E-R 模型和扩充 E-R 模型为主,针对关系数据库的逻辑设计介绍基本原则和方法。

1.基本E-R 模型向关系模型的转换

基本 E-R 模型主要包含实体和联系两个抽象概念,实体和联系本身还可能附有若干属性。其转换的基本原则是,实体和联系分别转换成关系,属性则转换成相应关系的属性。因此,E-R 模型向关系模型的转换比较直观,但不同元数的联系具体转换方法稍有不同,下面根据不同的情况分别讨论。

方案 1:将实体 E1、E2 和联系名 R 分别转换成为关系 E1、E2 和 R,它们的属性分别转为相应关系的属性,即得到:

El(k1,a)

E2(k2,b)

R(k1,k2,r)(k2 是候选关键字)

其中属性下面带一横线者为关系的关键字。

方案 2:将实体 El 转换为关系 El ,将实体E2 与联系名 R 一起转换成关系E2 ,E2的属性由 E2 和 R 的属性加上E1 的关键字组成,其关键字k1、k2 为其候选关键字。转换后的关系为:

E1(kl,a)

E2′(k2,b,k1,r),(k1 是候选关键字)

方案3:与方案2 类似,不过把实体E1 与联系R 一起转换成关系E1 后,其结果为:

E1′(kl,a,k2,r),(k2 是候选关键字)

E2(k2,b)

上述三个方案实际上可归结为转换成三个关系和转换成两个关系两种。如果每个实体的属性数较少,而联系的属性与两个实体之一关系又较密切,则可采用方案 2 或方案 3,其优点是可减少关系数,有利于减少连接运算从而提高查询效率,但如果每个实体的属性较多,且合并后,会造成较大数据冗余和操作异常,则以采用方案 1 为宜。

三者之间的联系为 PJS,其属性为 QTY。转换时,把 PART、PROJECT、 SUPPLIER 和联系 PJS分别转换为相应的关系,其结果如下:

EMPLOYEE(empno,name,birthday)

DEPENDENTS(empno,name,sex,age,kinship)

其中kinship 表示职工亲属与职工的关系,可以取值为“配偶”、“儿子”、“女儿”等。

2. 数据模型的优化

由 E-R 图表示的概念模型转换得到的关系模型经过规范化以后,基本上可以反映一个企业数据的内在联系,但不一定能满足应用的全部需要和系统要求,因此,还必须根据需求分析对模型做进一步的改善和调整,其内容主要是改善数据库的性能和节省存储空间两个方面。

就数据库的逻辑设计而论,可从下列几个方面提高查询的速度。

A→B′,B′→B

这样,就可用 B′代替原来元组较多的关系 R 中的属性 B,而另外建立一个较小的关系 R′来描述 B′与 B 的对应关系。这里 B′在原关系 R 中起了属性 B 的替身的作用,所以称 B′ 为假属性。例如,在职工关系中,职工的经济状况这一属性通常由职工号决定,一个大型企业的职工人数很多,如每一职工逐一填写,就要占用较多的空间,为了节省空间可把经济状况分为几种类型,在元组较多的职工关系中用经济状况的类型代替原来的经济状况,这里经济状况的类型就是假属性,另外建立一个较小的关系来描述每种经济状况类型的具体内容。

希赛教育专家提示:数据库设计与数学问题求解不同,它是一项综合性工作,受到各种各样的要求和因素的制约,有些要求往往又是彼此矛盾的,因此,设计结果很难说是最佳的,常常有得有失,设计者必须根据实际情况,综合运用上述原则和有关理论,在基本合理的总体设计的基础上,做一些仔细的调整,力求最大限度地满足用户各种各样的要求。

3.3.6 物理结构设计

数据库在实际的物理设备上的存储结构和存取方法称为数据库的物理结构。数据库物理设计是利用已确定的逻辑结构及 DBMS 提供的方法、技术,以较优的存储结构、数据存取路径、合理的数据存储位置及存储分配,设计出一个高效的、可实现的物理数据库结构。显然,数据库的物理设计是完全依赖于给定的硬件环境和数据库产品的。数据库物理设计过程如图 3-7 所示。

由于不同的 DBMS 提供的硬件环境和存储结构、存取方法,以及提供给数据库设计者的系统参数、变化范围有所不同,因此,为了设计出一个较好的存储模式,设计者必须了解以下几方面的问题,做到心中有数。

存储模式和概念模式不一样,它不是面向用户的,一般的用户不一定也不需要了解数据库存储模式的细节。所以数据库存储模式的设计可以不必考虑用户理解的方便,其设计目标主要是提高数据库的性能,其次是节省存储空间。

在进行物理设计时,设计人员可能用到的数据库产品是多种多样的。不同的数据库产品所提供的物理环境、存储结构和存取方法有很大差别,能供设计人员使用的设计变量、参数范围也大不相同,因此没有通用的物理设计方法可遵循,只能给出一般的设计内容和原则。

3.4 事务管理

数据库系统运行的基本工作单位是事务,事务相当于操作系统中的进程,是用户定义的一个数据库操作序列,这些操作序列要么全做要么全不做,是一个不可分割的工作单位。事务具有以下特性:

事务通常以 BEGIN TRANSACTION(事务开始)语句开始,以 COMMIT 或 ROLLBACK 语句结束。COMMIT 称为“事务提交语句”,表示事务执行成功的结束。ROLLBACK 称为“事务回退语句”,表示事务执行不成功的结束。从终端用户来看,事务是一个原子,是不可分割的操作序列。事务中包括的所有操作要么都做,要么都不做(就效果而言)。事务不应该丢失或被分割地完成。

3.4.1 并发控制

在多用户共享系统中,许多事务可能同时对同一数据进行操作,称为“并发操作”,此时数据库管理系统的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,同时避免用户得到不正确的数据。

数据库的并发操作带来的问题有:丢失更新问题、不一致分析问题(读过时的数据)、依赖于未提交更新的问题(读了“脏”数据)。这三个问题需要 DBMS 的并发控制子系统来解决。

处理并发控制的主要方法是采用封锁技术。它有两种类型:排他型封锁(X 封锁)和共享型封锁(S 封锁),分别介绍如下:

需要适当放宽,例如可以允许并发读,但不允许修改,这就产生了 S 封锁概念。S 封锁的含义是:如果事务 T 对数据 A 实现了 S 封锁,那么允许事务 T 读取数据 A,但不能修改数据 A,在所有 S 封锁解除之前绝不允许任何事务对数据 A 实现 X 封锁。

数据库是一个共享资源,它允许多个用户程序并行地存取数据库中的数据,但是,如果系统对并行操作不加以控制,就会存取不正确的数据,破坏数据库的完整性。

在多个事务并发执行的系统中,主要采取封锁协议来进行处理。

下面讨论封锁的粒度。所谓封锁的粒度即是被封锁数据目标的大小。在关系数据库中,封锁粒度有属性值、属性值集、元组、关系、某索引项(或整个索引)、整个关系数据库、物理页(块)等几种。

封锁粒度小则并发性高,但开销大;封锁粒度大则并发性低,但开销小。综合平衡照顾不同需求以合理选取适当的封锁粒度是很重要的。

采用封锁的方法固然可以有效防止数据的不一致性,但封锁本身也会产生一些麻烦,最主要的就是死锁问题。所谓死锁是指多个用户申请不同封锁,由于申请者均拥有一部分封锁权而又需等待另外用户拥有的部分封锁而引起的永无休止的等待。一般来讲,死锁是可以避免的,目前采用的办法有以下几种:

3.4.2 故障与恢复

数据库的故障可用事务的故障来表示,主要分为四类:

在数据库系统中,恢复的基本含义就是恢复数据库本身。也就是说,在发生某种故障使数据库当前的状态已经不再正确时,把数据库恢复到已知为正确的某一状态。目前数据库系统中最常用的恢复方法是转储和登记日志文件,可根据故障的不同类型,采用不同的恢复策略。

2. 故障的恢复

反向扫描文件日志,查找该事务的更新操作。

对该事务的更新操作执行逆操作。

继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。

如此处理下去,直至读到此事务的开始标记,事务故障恢复完成。

正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入重做(Redo)

队列。同时找出故障发生时尚未完成的事务,将其事务标识记入撤销(Undo)队列。

对撤销队列中的各个事务进行撤销处理:反向扫描日志文件,对每个 Undo 事务的更新操作执行逆操作。

对重做队列中的各个事务进行重做处理:正向扫描日志文件,对每个 Redo 事务重新执行日志文件登记的操作。

装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。

从故障点开始反向读日志文件,找出已提交事务标识将其记入重做队列。

从起始点开始正向阅读日志文件,根据重做队列中的记录,重做所有已完成事务,将数据库恢复至故障前某一时刻的一致状态。

建立检查点时刻所有正在执行的事务清单。

这些事务最近一个日志记录的地址。采用检查点的恢复步骤如下:

从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。

由该检查点记录得到检查点建立时所有正在执行的事务清单队列(A)。

建立重做队列(R)和撤销队列(U),把 A 队列放入 U 队列中,R 队列为空。

从检查点开始正向扫描日志文件,若有新开始的事务 T1,则把 T1 放入 U 队列,若有提交的事务 T2,则把 T2 从 U 队列移到 R 队列,直至日志文件结束。

对 U 队列的每个事务执行 Undo 操作,对 R 队列的每个事务执行 Redo 操作。

DBA 要做的基本操作是:

重装最近转储的后援副本。

运行日志文件,执行系统提供的恢复命令。

数据库安全和恢复是数据库系统正常运行的保证。大型数据库管理系统一般都提供了实现安全机制的保证,即由系统提供了相应的功能,但小型的数据库管理系统并非都具有相应功能,因此有时需要人工的辅助措施,用以保证数据库的安全和恢复。

3.5 备份与恢复

数据库中的数据一般都十分重要,不能丢失,因为各种原因,数据库都有损坏的可能性(虽然很小),所以事先制定一个合适的、可操作的备份和恢复计划至关重要。备份和恢复计划的制订要遵循以下两个原则:

物理备份是在操作系统层面上对数据库的数据文件进行备份,物理备份分为冷备份和热备份两种。冷备份是将数据库正常关闭,在停止状态下利用操作系统的 copy、cp、tar、 cpio等命令将数据库的文件全部备份下来,当数据库发生故障时,将数据文件复制回来,进行恢复。热备份也分为两种,一种是不关闭数据库,将数据库中需要备份的数据文件依次置于备份状态,相对保持静止,然后再利用操作系统的 copy、cp、tar、cpio 等命令将数据库的文件备份下来,备份完毕后再将数据文件恢复为正常状态,当数据库发生故障时,恢复方法同冷备份一样。热备份的另外一种方式是利用备份软件(例如,veritas 公司的 netbackup,legato公司的 network 等)在数据库正常运行的状态下,将数据库中的数据文件备份出来。

为了提高物理备份的效率,通常将完全、增量、累积三种备份方式相组合。完全备份是将数据库的内容全部备份,作为增量、累积的基础;增量备份是只备份上次完全、增量或累积备份以来修改的数据;累积备份是备份自上次完全或累积备份以来修改过的数据。一个备份周期通常由一个完全备份和多个增量、累积备份组成。由于增量或累计备份导出的数据少,所以其导出的文件较小,所需要的时间较少。利用一个完全备份和多个增量、累积备份恢复数据库的步骤如下:

逻辑备份是指利用各数据库系统自带的工具软件备份和恢复数据库的内容,例如,Oracle 的导出工具为 exp,导入工具为 imp,可以按照表、表空间、用户、全库等四个层次备份和恢复数据;Sybase 的全库备份命令是 dump database,全库恢复命令是 loaddatabase,另外也可利用 BCP 命令来备份和恢复指定表。

在数据库容量不大的情况下逻辑备份是一个非常有效的手段,既简单又方便,但现在随着数据量的越来越大,利用逻辑备份来备份和恢复数据库已力不从心,速度也很慢。针对大型数据库的备份和恢复一般结合磁带库采用物理的完全、增量、累积三种备份方式相组合来进行。但无论任何时候逻辑备份都是一种非常有效的手段,特别适合于日常维护中的部分指定表的备份和恢复。

3.6 分布式数据库系统

近年来,随着计算机技术与网络技术的发展,特别是 Internet 的兴起,分布式数据库系统得到了很快的发展和应用。

3.6.1 分布式数据库的概念

分布式数据库系统是相对于集中式数据库系统而言的,是将数据库技术与网络技术相结合的产物。分布式数据库(Distributed DataBase,DDB)比较确切的定义是:分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个结点具有独立处理的能力,成为场地自治,它可以执行局部应用,同时,每个结点也能通过网络通信子系统执行全局应用。负责分布式数据库的建立、查询、更新、复制、管理和维护的软件,称为分布式数据库管理系统(Distributed DataBase Management System, DDBMS)。分布式数据库管理系统保证分布式数据库中数据的物理分布对用户的透明性。一个计算机网络组成的计算机系统,在配置了分布式数据库管理系统,并在其上建立了分布式数据库和相应的应用程序后,就称其为分布式数据库系统(Distributed DataBase System,DDBS)。分布式数据库管理系统是分布式数据库系统的核心。

1. 分布式数据库的特点从上面的定义可以看出分布式数据库系统有以下几个特点:

分布式数据库系统通过网络技术把局部的、分散的数据库构成一个在逻辑上单一的数据库,从而呈现在用户面前的就如同是一个统一的、集中式的数据库。这就是数据在逻辑上的统一性,因此,它不同于由网络互联的多个独立数据库。分布式数据库是由分布式数据库管理系统统一管理和维护的,这种管理上的统一性又使它不同于一般的分布式文件系统。

与集中式数据库相比,分布式数据库具有下列优点:

虽然分布式数据库系统与集中式数据库相比有不少优点,但同时也需要解决一些集中式数据库所没有的问题。首先,异构数据库的集成问题是一项比较复杂的技术问题,目前还很难用一个通用的分布式数据库管理系统来解决这一问题。其次,如果数据库设计得不好,数据分布不合理,以致远距离访问过多,尤其是分布连接操作过多,不但不能改善性能,反而会使性能降低。

2. 分布式数据库的分类

分布式数据库及其分布式数据库管理系统,根据许多因素有不同的分类方法,总的原则是分布式数据库及 DDBMS 必须是其数据和软件必定分布在用计算机网络连接的多个场地上。从应用需要或本身的特征方面考虑可将它从以下几个方面来划分:

3. 分布式数据库的目标

理想的分布式系统使用时应该精确得像一个非分布式系统。概括起来有以下 12 条具体规则和目标:

上述的全功能分布式数据库系统的准则和目标起源于:一个分布式数据库系统,对用户来说,应当看上去完全像一个非分布式系统。值得指出的是,现实系统出于对某些方面的特别考虑,对上述各方面做出了种种权衡和选择。

3.6.2 分布式数据库的架构

分布式数据库系统的模式结构有六个层次,如图 3-8 所示,实际的系统并非都具有这种结构。在这种结构中各级模式的层次清晰,可以概括和说明任何分布式数据库系统的概念和结构。

图 3-8 的模式结构从整体上可以分为两大部分:下半部分是集中式数据库的模式结构,代表了各局部场地上局部数据库系统的基本结构;上半部分是分布式数据库系统增加的模式级别。

根据分布模式提供的信息,一个全局查询可分解为若干子查询,每一子查询要访问的数据属于同一场地的局部数据库。由分布模式到各局部数据库的映像(映像 4)把存储在局部场地的全局关系或全局关系的片段映像为各局部概念模式采用局部场地的 DBMS 所支持的数据模型。

分片模式和分布模式均是全局的,分布式数据库系统中增加的这些模式和相应的映像使分布式数据库系统具有了分布透明性。

一个场地上的局部概念模式是该场地上所有全局概念模式在该场地上物理映像的集合。

由此可见,全局概念模式与场地独立,而局部概念模式与场地相关。

在图 3-8 的六层模式结构中,全局概念模式、分片模式和分布模式是与场地特征无关的,是全局的,因此它们不依赖于局部 DBMS 的数据模型。在低层次上,需要把物理映像映射成由局部 DBMS 支持的数据模型。这种映像由局部映射模式完成。具体的映射关系,由局部 DBMS 的类型决定。在异构型系统中,可在不同场地上拥有类型的局部映射模式。

这种分层的模式结构为理解 DDB 提供了一种通用的概念结构。它有三个显著的特征:

1. 分布式数据库系统与并行数据库系统的区别

分布式数据库系统与并行数据库系统具有很多相似点:它们都是通过网络连接各个数据处理结点的,整个网络中的所有结点构成一个逻辑上统一的整体,用户可以对各个结点上的数据进行透明存取等。但分布式数据库系统与并行数据库系统之间还是存在着显著的区别的,主要表现在以下几个方面:

在分布式数据库系统中,各结点除了能通过网络协同完成全局事务外,还有自己结点场地的自治性。也就是说,分布式数据库系统的每个场地又是一个独立的数据库系统,除了拥有自己的硬件系统(CPU、内存和磁盘等)外,还拥有自己的数据库和自己的客户,可运行自己的 DBMS,执行局部应用,具有高度的自治性。这是并行数据库与分布式数据库之间最主要的区别。

2. 数据分片和透明性

将数据分片,使数据存放的单位不是关系而是片段,这既有利于按照用户的需求较好地组织数据的分布,也有利于控制数据的冗余度。分片的方式有多种,水平分片和垂直分片是两种基本的分片方式,混合分片和导出分片是较复杂的分片方式。

分布透明性指用户不必关心数据的逻辑分片,不必关心数据存储的物理位置分配细节,也不必关心局部场地上数据库的数据模型。从图 3-8 的模式结构可以看到分布透明性包括:

分片透明性、位置透明性和局部数据模型透明性。

3. 分布式数据库管理系统分布式数据库管理系统的任务,首先就是把用户与分布式数据库隔离开来,使其对用户而言,整个分布式数据库就好像是一个传统的集中式数据库。换句话说,一个分布式数据库管理系统与用户之间的接口,在逻辑上与集中式数据库管理系统是一致的。但是考虑到分布式数据库的特点,其物理实现上又与集中式数据库不同。下面以一种分布式数据库管理。

以系统 DDBMS 的结构为例来分析它的主要成分和功能,如图 3-9 所示。

由图 3-9 可以看出,DDBMS 由 4 部分组成:

存放数据完整性约束条件的定义,其功能与集中式数据库的数据字典类似。

DDBMS 功能的分割和重复及不同的配置策略就导致了各种架构。

局部 DBMS 的一个重要性质是:局部 DBMS 是同构的还是异构的。同构和异构的级别可以有三级:硬件、操作系统和局部 DBMS。其中最主要的是局部 DBMS 这一级,因为硬件和操作系统的不同将由通信软件处理和管理。

异构型 DDBMS 的设计和实现比同构型 DDBMS 更加复杂,它要解决不同的 DBMS 之间及不同的数据模型之间的转换。因此在设计和实现 DDBMS 时,若是用自顶向下的方法进行,即并不存在已运行的局部数据库,则采用同构型的结构比较方便。若是采用自底向上设计 DDBMS 的方法,即现已存在的局部数据库,而这些数据库可能采用不同的数据模型(层次、网状或关系),或者虽然模型相同但它们是不同厂商的 DBMS(如 Informix、 Sybase、Db2、Oracle),这就必须开发异构型的 DDBMS。要解决异构数据库模型的同种化问题,是研制异构型 DDBMS 的关键所在,所谓同种化就是寻找合适的公共数据模型,采用公共数据模型与异构数据模型(局部)之间的转换,不采用各结点之间的一对一转换。这样可以减少转移次数。设有 N 个结点,用公共数据模型时转换次数为 2N,而各结点之间一对一转换则需 N(N1)次。

3.7 数据仓库

传统的操作型数据库主要是面向业务的,所执行的操作基本上也是联机事务处理,但随着企业规模的增长,历史积累的数据越来越多,如何利用历史数据来为未来决策服务,就显得越来越重要了,而数据仓库就是其中的一种技术。

3.7.1 数据仓库的概念

著名的数据仓库专家 W.H.Inmon 在《Building the Data Warehouse》一书中将数据仓库定义为:数据仓库(Data Warehouse)是一个面向主题的、集成的、相对稳定的、且随时间变化的数据集合,用于支持管理决策。

1. 面向主题的操作型数据库的数据组织面向事务处理任务(面向应用),各个业务系统之间各自分离,而数据仓库中的数据是按照一定的主题域进行组织的。主题是一个抽象的概念,是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。例如,一个保险公司所进行的事务处理(应用问题)可能包括汽车保险、人寿保险、健康保险和意外保险等,而公司的主要主题范围可能是顾客、保险单、保险费和索赔等。

2. 集成的在数据仓库的所有特性中,这是最重要的。面向事务处理的操作型数据库通常与某些特定的应用相关,数据库之间相互独立,并且往往是异构的。而数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。

3. 相对稳定的操作型数据库中的数据通常实时更新,数据根据需要及时发生变化。数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期地加载、刷新。

4. 随时间变化的操作型数据库主要关心当前某一个时间段内的数据,而数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。数据仓库反映历史变化的属性主要表现在:

数据仓库虽然是从传统数据库系统发展而来,但是两者还是存在着诸多差异,如:从数据存储的内容看,数据库只存放当前值,而数据仓库则存放历史值;数据库数据的目标是面向业务操作人员的,为业务处理人员提供数据处理的支持,而数据仓库则是面向中高层管理人员的,为其提供决策支持等。表 3-10 详细说明了数据仓库与传统数据库的区别。

3.7.2 数据仓库的结构

从数据仓库的概念结构看,一般来说,数据仓库系统要包含数据源、数据准备区、数据仓库数据库、数据集市/知识挖掘库及各种管理工具和应用工具,如图 3-10 所示。数据仓库建立之后,首先要从数据源中抽取相关的数据到数据准备区,在数据准备区中经过净化处理后再加载到数据仓库数据库,最后根据用户的需求将数据导入数据集市和知识挖掘库中。

当用户使用数据仓库时,可以利用包括 OLAP(On-Line Analysis Processing,联机分析处理)

在内的多种数据仓库应用工具向数据集市/知识挖掘库或数据仓库进行决策查询分析或知识挖掘。数据仓库的创建、应用可以利用各种数据仓库管理工具辅助完成。

1. 数据仓库的参考框架

数据仓库的参考框架由数据仓库基本功能层、数据仓库管理层和数据仓库环境支持层组成,如图3-11 所示。

图3-11

数据仓库的数据管理层包含数据抽取、新数据需求与查询管理,数据加载、存储、刷新和更新系统,安全性与用户授权管理系统及数据归档、恢复及净化系统等四部分。

数据仓库的传输层包含数据传输和传送网络、客户/服务器代理和中间件、复制系统及数据传输层的安全保障系统。

2. 数据仓库的架构大众观点的数据仓库的架构如图3-12 所示。

图3-12

ROLAP 基本数据和聚合数据均存放在 RDBMS 之中;MOLAP 基本数据和聚合数据均存放于多维数据库中;HOLAP 基本数据存放于 RDBMS 之中,聚合数据存放于多维数据库中。

3.7.3 数据仓库的实现方法

数据仓库的特性决定了数据仓库的设计不同于传统的数据库设计方法。数据仓库系统的原始需求通常不是很明确,并且需求仍在不断变化、增加,所以,数据仓库的建立是一个过程,从建立简单的基本框架着手,不断丰富和完善整个系统。这一过程将由以下几部分构成:

需求分析、概念模型设计、逻辑模型设计、物理模型设计和数据仓库生成。

从整体的角度来看,数据仓库的实现方法主要有自顶向下法、自底向上法和联合方法。

1. 自顶向下法

在该方法中,首先应找出数据仓库解决方案所要满足的商业需求,把商业需求视为实现数据仓库的首要任务。数据仓库是一种功能而不是一种特征,数据仓库保存信息,并以外部工具易于显示和操作的方式组织这些信息。因此,如果不借助于可以利用这种功能的外部工具,最终用户就无法将这种功能嵌入数据仓库中。这样,就很难定出该功能的范围,除非用广义上的商业术语,如“数据仓库将包含有关客户、供应商、市场、产品的信息”。自顶向下方法的优点和缺点如表 3-11 所示。

规划和实现数据仓库的自顶向下方法一般用于以下情况:

如果技术是成熟的和众所周知的,或者必须解决的商业问题是显而易见的,那么自顶向下方法是很有用的。采用自顶向下方法可以将技术和商业目标有机地结合起来。

2. 自底向上法

自底向上方法一般从实验和基于技术的原形入手。先选择一个特定的、众所周知的商业问题的子集,再为该子集制订方案。实现自底向上一般是比较快的。自底向上可以使一个单位在发展时用尽可能少的经费和时间,就可以在做出有效的投入之前评估技术的收益情况。

在数据仓库领域,自底向上方法是快速实现数据集市、部门级数据仓库的有效手段。自底向上方法的优点和缺点如表 3-12 所示。

规划和实现数据仓库的自底向上方法一般用于以下情况:

3. 联合方法

在以上两种方法的联合方法中,企业在保持自底向上方法的快速实现和机遇应用的同时,还可以利用自顶向下方法的规划和决策性质。这种方法依赖于以下两个因素:

联合方法具有以上两种方法的优点,但是难以作为一个项目来管理。该方法一般用于:

联合方法适合数据仓库技术的快速试运行,并且保留了建立长远的决策方案的机会。

3.8 数据挖掘

随着数据库技术的迅速发展及数据库管理系统的广泛应用,人们积累的数据越来越多。

激增的数据背后隐藏着许多重要的信息,人们希望能够对其进行更高层次的分析,以便更好地利用这些数据。目前的数据库系统可以高效地实现数据的录入、查询、统计等功能,但无法发现数据中存在的关系和规则,无法根据现有的数据预测未来的发展趋势。缺乏挖掘数据背后隐藏的知识的手段,导致了“数据爆炸但知识贫乏”的现象。

3.8.1 数据挖掘的概念

数据挖掘(Data Mining)技术是人们长期对数据库技术进行研究和开发的结果。起初各种商业数据是存储在计算机的数据库中的,然后发展到可对数据库进行查询和访问,进而发展到对数据库的即时遍历。数据挖掘使数据库技术进入了一个更高级的阶段,它不仅能对过去的数据进行查询和遍历,并且能够找出过去数据之间的潜在联系,从而促进信息的传递。

现在数据挖掘技术在商业应用中已经可以马上投入使用,因为对这种技术进行支持的三种基础技术已经发展成熟,它们是海量数据搜集、强大的多处理器计算机和数据挖掘算法。

从技术角度来看,数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。

这个定义包括好几层含义:数据源必须是真实的、大量的、含噪声的;发现的是用户感兴趣的知识;发现的知识要可接受、可理解、可运用;并不要求发现放之四海而皆准的知识,仅支持特定的发现问题。

还有很多和这一术语相近的术语,如从数据库中发现知识、数据分析、数据融合(DataFusion),以及决策支持等。

何为知识?从广义上理解,数据、信息也是知识的表现形式,但是人们更把概念、规则、模式、规律和约束等看做知识。原始数据可以是结构化的,如关系数据库中的数据;也可以是半结构化的,如文本、图形和图像数据;甚至是分布在网络上的异构型数据。发现知识的方法可以是数学的,也可以是非数学的;可以是演绎的,也可以是归纳的。发现的知识可以被用于信息管理,查询优化,决策支持和过程控制等,还可以用于数据自身的维护。

因此,数据挖掘是一门交叉学科,它把人们对数据的应用从低层次的简单查询,提升到从数据中挖掘知识,提供决策支持。在这种需求牵引下,汇聚了不同领域的研究者,尤其是数据库技术、人工智能技术、数理统计、可视化技术、并行计算等方面的学者和工程技术人员,投身到数据挖掘这一新兴的研究领域,形成新的技术热点。

从商业角度来看,数据挖掘是一种新的商业信息处理技术,其主要特点是对商业数据库中的大量业务数据进行抽取、转换、分析和其他模型化处理,从中提取辅助商业决策的关键性数据。

简而言之,数据挖掘其实是一种深层次的数据分析方法。数据分析本身已经有很多年的历史,只不过在过去数据收集和分析的目的是用于科学研究,另外,由于当时计算能力的限制,对大量数据进行分析的复杂数据分析方法受到很大限制。现在,由于各行业业务自动化的实现,商业领域产生了大量的业务数据,这些数据不再是为了分析的目的而收集,而是由于纯机会的商业运作而产生。分析这些数据也不再是单纯为了研究的需要,更主要是为商业决策提供真正有价值的信息,进而获得利润。但所有企业面临的一个共同问题是:企业数据量非常大,而其中真正有价值的信息却很少,因此从大量的数据中通过深层分析,获得有利于商业运作、提高竞争力的信息,就像从矿石中淘金一样,数据挖掘也因此而得名。

因此,数据挖掘可以描述为:按企业既定业务目标,对大量的企业数据进行探索和分析,揭示隐藏的、未知的或验证已知的规律性,并进一步将其模型化的先进有效的方法。

数据挖掘与传统的数据分析(如查询、报表、联机应用分析)的本质区别是数据挖掘是在没有明确假设的前提下去挖掘信息、发现知识。数据挖掘所得到的信息应具有先知,有效和可实用三个特征。

先前未知的信息是指该信息是预先未曾预料到的,即数据挖掘是要发现那些不能靠直觉发现的信息或知识,甚至是违背直觉的信息或知识,挖掘出的信息越是出乎意料,就可能越有价值。在商业应用中最典型的例子就是一家连锁店通过数据挖掘发现了小孩纸尿布和啤酒之间有着惊人的联系。

特别要指出的是,数据挖掘技术从一开始就是面向应用的。它不仅是面向特定数据库的简单检索查询调用,而且要对这些数据进行微观、中观乃至宏观的统计、分析、综合和推理,以指导实际问题的求解,企图发现事件间的相互关联,甚至利用已有的数据对未来的活动进行预测。例如,加拿大 BC 省电话公司要求加拿大 Simon Fraser 大学知识发现研究组,根据其拥有十多年的客户数据,总结、分析并提出新的电话收费和管理办法,制定既有利于公司又有利于客户的优惠政策。这样一来,就把人们对数据的应用,从低层次的末端查询操作,提高到为各级经营决策者提供决策支持。这种需求驱动力比数据库查询更为强大。

3.8.2 数据挖掘的功能

数据挖掘通过预测未来趋势及行为,做出前摄的、基于知识的决策。数据挖掘的目标是从数据库中发现隐含的、有意义的知识,主要有以下五类功能。

1. 自动预测趋势和行为数据挖掘自动在大型数据库中寻找预测性信息,以往需要进行大量手工分析的问题如今可以迅速直接由数据本身得出结论。一个典型的例子是市场预测问题,数据挖掘使用过去有关促销的数据来寻找未来投资中回报最大的用户,其他可预测的问题包括预报破产及认定对指定事件最可能做出反应的群体。

2. 关联分析数据关联是数据库中存在的一类重要的可被发现的知识。若两个或多个变量的取值之间存在某种规律性,就称为关联。关联可分为简单关联、时序关联、因果关联。

关联分析的目的是找出数据库中隐藏的关联网。有时并不知道数据库中数据的关联函数,即使知道也是不确定的,因此关联分析生成的规则带有可信度。

3. 聚类数据库中的记录可被划分为一系列有意义的子集,即聚类。聚类增强了人们对客观现实的认识,是概念描述和偏差分析的先决条件。聚类技术主要包括传统的模式识别方法和数学分类学。20 世纪 80 年代初,Mchalski 提出了概念聚类技术及其要点,即在划分对象时不仅要考虑对象之间的距离,还要求划分出的类具有某种内涵描述,从而避免了传统技术的某些片面性。

4. 概念描述概念描述就是对某类对象的内涵进行描述,并概括这类对象的有关特征。

概念描述分为特征性描述和区别性描述,前者描述某类对象的共同特征,后者描述不同类对象之间的区别。生成一个类的特征性描述只涉及该类对象中所有对象的共性。生成区别性描述的方法很多,如决策树方法、遗传算法等。

5. 偏差检测数据库中的数据常有一些异常记录,从数据库中检测这些偏差很有意义。

偏差包括很多潜在的知识,如分类中的反常实例、不满足规则的特例、观测结果与模型预测值的偏差、量值随时间的变化等。偏差检测的基本方法是,寻找观测结果与参照值之间有意义的差别。

3.8.3 数据挖掘常用技术

常用的数据挖掘技术包括关联分析、序列分析、分类、预测、聚类分析及时间序列分析等。

1. 关联分析

关联分析主要用于发现不同事件之间的关联性,即一个事件发生的同时,另一个事件也经常发生。关联分析的重点在于快速发现那些有实用价值的关联发生的事件。其主要依据是事件发生的概率和条件概率应该符合一定的统计意义。

对于结构化的数据,以客户的购买习惯数据为例,利用关联分析,可以发现客户的关联购买需要。例如,一个开设储蓄账户的客户很可能同时进行债券交易和股票交易,购买纸尿裤的男顾客经常同时购买啤酒等。利用这种知识可以采取积极的营销策略,扩展客户购买的产品范围,吸引更多的客户。通过调整商品的布局便于顾客买到经常同时购买的商品,或者通过降低一种商品的价格来促进另一种商品的销售等。

对于非结构化的数据,以空间数据为例,利用关联分析,可以发现地理位置的关联性。

例如,85%的靠近高速公路的大城镇与水相邻,或者发现通常与高尔夫球场相邻的对象等。

2. 序列分析

序列分析技术主要用于发现一定时间间隔内接连发生的事件。这些事件构成一个序列,发现的序列应该具有普遍意义,其依据除了统计上的概率之外,还要加上时间的约束。

3. 分类分析

分类分析通过分析具有类别的样本的特点,得到决定样本属于各种类别的规则或方法。

利用这些规则和方法对未知类别的样本分类时应该具有一定的准确度。其主要方法有基于统计学的贝叶斯方法、神经网络方法、决策树方法及支持向量机(support vector machines)

等。

利用分类技术,可以根据顾客的消费水平和基本特征对顾客进行分类,找出对商家有较大利益贡献的重要客户的特征,通过对其进行个性化服务,提高他们的忠诚度。

利用分类技术,可以将大量的半结构化的文本数据,如 WEB 页面、电子邮件等进行分类。可以将图片进行分类,例如,根据已有图片的特点和类别,可以判定一幅图片属于何种类型的规则。对于空间数据,也可以进行分类分析,例如,可以根据房屋的地理位置决定房屋的档次。

4. 聚类分析

聚类分析是根据物以类聚的原理,将本身没有类别的样本聚集成不同的组,并且对每一个这样的组进行描述的过程。其主要依据是聚到同一个组中的样本应该彼此相似,而属于不同组的样本应该足够不相似。

仍以客户关系管理为例,利用聚类技术,根据客户的个人特征及消费数据,可以将客户群体进行细分。例如,可以得到这样的一个消费群体:女性占 91%,全部无子女、年龄在 31岁到 40 岁占 70%,高消费级别的占 64%,买过针织品的占 91%,买过厨房用品的占89%,买过园艺用品的占 79%。针对不同的客户群,可以实施不同的营销和服务方式,从而提高客户的满意度。

对于空间数据,根据地理位置及障碍物的存在情况可以自动进行区域划分。例如,根据分布在不同地理位置的 ATM 机的情况将居民进行区域划分,根据这一信息,可以有效地进行 ATM 机的设置规划,避免浪费,同时也避免失掉每一个商机。

对于文本数据,利用聚类技术可以根据文档的内容自动划分类别,从而便于文本的检索。

5. 预测

预测与分类类似,但预测是根据样本的已知特征估算某个连续类型的变量的取值的过程,而分类则只是用于判别样本所属的离散类别而已。预测常用的技术是回归分析。

6. 时间序列

分析时间序列分析的是随时间而变化的事件序列,目的是预测未来发展趋势,或者寻找相似发展模式或者是发现周期性发展规律。

3.8.4 数据挖掘的流程

数据挖掘是指一个完整的过程,该过程从大型数据库中挖掘先前未知的,有效的,可实用的信息,并使用这些信息做出决策或丰富知识。

数据挖掘环境示意图如图 3-13 所示。

数据挖掘的流程大致如下:

1. 问题定义在开始数据挖掘之前,最先的也是最重要的要求就是熟悉背景知识,弄清用户的需求。缺少了背景知识,就不能明确定义要解决的问题,就不能为挖掘准备优质的数据,也很难正确地解释得到的结果。要想充分发挥数据挖掘的价值,必须对目标有一个清晰明确的定义,即决定到底想干什么。

2. 建立数据挖掘库

要进行数据挖掘必须收集要挖掘的数据资源。一般建议把要挖掘的数据都收集到一个数据库中,而不是采用原有的数据库或数据仓库。这是因为大部分情况下需要修改要挖掘的数据,而且还会遇到采用外部数据的情况;另外,数据挖掘还要对数据进行各种纷繁复杂的统计分析,而数据仓库可能不支持这些数据结构。

3. 分析数据

分析数据就是通常所进行的对数据深入调查的过程。从数据集中找出规律和趋势,用聚类分析区分类别,最终要达到的目的就是搞清楚多因素相互影响的、十分复杂的关系,发现因素之间的相关性。

4. 调整数据

通过上述步骤的操作,对数据的状态和趋势有了进一步的了解,这时要尽可能对问题解决的要求能进一步明确化、进一步量化。针对问题的需求对数据进行增删,按照对整个数据挖掘过程的新认识组合或生成一个新的变量,以体现对状态的有效描述。

5. 模型化

在问题进一步明确,数据结构和内容进一步调整的基础上,就可以建立形成知识的模型。

这一步是数据挖掘的核心环节,一般运用神经网络、决策树、数理统计、时间序列分析等方法来建立模型。

6. 评价和解释

上面得到的模式模型,有可能是没有实际意义或没有实用价值的,也有可能是其不能准确反映数据的真实意义,甚至在某些情况下是与事实相反的,因此需要评估,确定哪些是有效的、有用的模式。评估的一种办法是直接使用原先建立的挖掘数据库中的数据来进行检验,另一种办法是另找一批数据并对其进行检验,再一种办法是在实际运行的环境中取出新鲜数据进行检验。

数据挖掘过程的分步实现,不同的步骤需要不同专长的人员,他们大体可以分为三类。

由上可见,数据挖掘是一个多种专家合作的过程,也是一个在资金上和技术上高投入的过程。这一过程要反复进行,在反复过程中,不断地趋近事物的本质,不断地优选问题的解决方案。

3.9 NoSQL

NoSQL 即 Not Only SQL,可直译“不仅仅是 SQL”,这项技术正在掀起一场全新的数据库革命性运动。

在本章 3.2.2 节曾提到数据的模式包括多种类型,如层次模型、网状模型、关系模型等,而在实际应用过程中,几乎都是在用关系模型,主流的数据库系统都是关系型的。但随着互联网 web2.0 网站的兴起,传统的关系数据库在应付 web2.0 网站,特别是超大规模和高并发的 SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。这也就使得 NoSQL 技术进入了人们的视野。

NoSQL 的出现打破了长久以来关系型数据库与 ACID 理论大一统的局面。NoSQL 数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。

关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但从另一个角度来说它也是关系型数据库性能瓶颈的一个因素。而非关系型数据库以键值对存储,它的结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。

与关系型数据库相比,NoSQL 数据库具有以下几个优点:

1. 易扩展

NoSQL 数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。无形之间,在架构的层面上带来了可扩展的能力。

2. 大数据量,高性能

NoSQL 数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。一般 MySQL 使用 Query Cache,每次表一更新 Cache就失效,它是一种大粒度的 Cache,在针对 web2.0 的交互频繁的应用,Cache 性能不高。

而 NoSQL 的 Cache 是记录级的,是一种细粒度的 Cache,所以 NoSQL 在这个层面上来说性能就高很多了。

3. 灵活的数据模型

NoSQL 无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。这点在大数据量的 web2.0 时代尤其明显。

4. 高可用

NoSQL 在不太影响性能的情况,就可以方便地实现高可用的架构。比如 Cassandra,HBase 模型,通过复制模型也能实现高可用。

当然,NoSQL 也存在很多缺点,例如,并未形成一定标准,各种产品层出不穷,内部混乱,各种项目还需时间来检验,缺乏相关专家技术的支持等。

3.10 大数据

大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

1. 大数据的特点

业界通常用 4 个 V(即 Volume、Variety、Value、Velocity)来概括大数据的特征。

Volume:指的是数据体量巨大,从 TB 级别跃升到 PB 级别(1PB=1024TB)、EB 级别(1EB=1024PB),甚至于达到 ZB 级别(1ZB=1024EB)。截至目前,人类生产的所有印刷材料的数据量是 200PB,而历史上全人类说过的所有话的数据量大约是 5EB。当前,典型个人计算机硬盘的容量为 TB 量级,而一些大企业的数据量已经接近 EB 量级。

例如,在交通领域,某市交通智能化分析平台数据来自路网摄像头/传感器、公交、轨道交通、出租车以及省际客运、旅游、化危运输、停车、租车等运输行业,还有问卷调查和地理信息系统数据。4 万辆车每天产生 2000 万条记录,交通卡刷卡记录每天 1900万条,手机定位数据每天 1800 万条,出租车运营数据每天 100 万条,电子停车收费系统数据每天 50 万条,定期调查覆盖 8 万户家庭等,这些数据在体量上就达到了大数据的规模。

Variety:指的是数据类型繁多。这种类型的多样性也让数据被分为结构化数据和非结构化数据。相对于以往便于存储的以文本为主的结构化数据,非结构化数据越来越多,包括网络日志、音频、视频、图片、地理位置信息等,这些多类型的数据对数据的处理能力提出了更高要求。

Value:指的是价值密度低。价值密度的高低与数据总量的大小成反比。以视频为例,一部 1 小时的视频,在连续不间断的监控中,有用数据可能仅有 1-2 秒。如何通过强大的机器算法更迅速地完成数据的价值“提纯”成为目前大数据背景下亟待解决的难题。当然把数据集成在一起,并完成“提纯”是能达到 1+1 大于 2 的效果的,这也正是大数据技术的核心价值之一。

Velocity:指的是处理速度快。这是大数据区分于传统数据挖掘的最显著特征。根据 IDC的“数字宇宙”的报告,预计到 2020 年,全球数据使用量将达到 35.2ZB。在如此海量的数据面前,处理数据的效率就是企业的生命。

2. 传统数据与大数据的比较

传统数据与大数据的差异如表 3-13 所示。

3. 大数据处理关键技术

大数据处理关键技术一般包括:大数据采集、大数据预处理、大数据存储及管理、大数据分析及挖掘、大数据展现和应用(大数据检索、大数据可视化、大数据应用、大数据安全等)。

4. 大数据应用

大数据可以在各行各业得以应用,如金融服务、医疗保健、零售业、制造业、政府机构等。