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

企业常见的数据处理工作大致可以分成两大类,分别是 OLTP(On-LineTransaction Processing ,联机事务处理 ) 和 OLAP (On-LineAnalytical Processing ,联机分析处理 ) 。OLTP是传统的关系型数据库的主要应用, OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支排,并且提供直观易懂的查询结果。

1 数据仓库的概念

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

(1)面向主题的

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

(2)集成

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

(3) 相对稳定

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

(4)随时间变化

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

数据仓库反映历史变化的属性主要表现在:

  1. 数据仓库中的数据时间期限要远远长于传统操作型数据系统中的数据时间期限,传统操作型数据系统中的数据时间期限可能为数十天或数个月,数据仓库中的数据时间期限往往为数年甚至几十年;
  2. 传统操作型数据系统中的数据含有 “ 当前值 ” 的数据,这些数据在访问时是有效的,当然数据的当前值也能被更新,但数据仓库中的数据仅仅是一系列某一时刻(可能是传统操作型数据系统)生成的复杂的快照;
  3. 传统操作型数据系统中可能包含也可能不包含时间元素,如年 、 月 、 日 、 时 、 分 、 秒等,而数据仓库中一定会包含时间元素。

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

比较项目

传统数据库

数据仓库

数据内容

当前值

历史的、归档的、归纳的、计算的数据(处理过的数据)

数据目标

面向业务操作程序、重复操作

面向主体域、分析应用

数据特性

动态变化、更新

静态、只能定时添加与更新,不能直接更新

数据结构

高度结构化、复杂,适合操作计算

简单、适合分析

使用频率



数据访问量

每个事务一般只访问少量记录

每个事务一般访问大量记录

对响应时间的要求

计时单位小,如秒

计时单位相对较大,除秒之外,还有分钟、小时

2 数据仓库的结构

从数据仓库的概念结构看,一般来说,数据仓库系统要包含数据源 、 数据准备区 、 数据仓库数据库 、 数据集市 / 知识挖掘库及各种管理工具和应用工具,如图 1 所示。数据仓库建立之后,首先要从数据源中抽取相关的数据到数据准备区,在数据准备区中经过净化处理后再加载到数据仓库数据库,最后根据用户的需求将数据导入数据集市和知识挖掘库中。当用户使用数据仓库时,可以利用包括 OLAP ( On-Line Analysis Processing ,联机分析处理)在内的多种数据仓库应用工具向数据集市 / 知识挖掘库或数据仓库进行决策查询分析或知识挖掘。数据仓库的创建 、 应用可以利用各种数据仓库管理工具辅助完成。

数据仓库重构 数据仓库系统架构_数据仓库重构

2.1 数据仓库的参考框架

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

数据仓库重构 数据仓库系统架构_数据_02

(1)数据仓库基本功能层

数据仓库的基本功能层部分包含数据源 、 数据准备区 、 数据仓库结构 、 数据集市或知识挖掘库,以及存取和使用部分。本层的功能是从数据源抽取数据,对所抽取的数据进行筛选 、 清理,将处理过的数据导入或者说加载到数据仓库中,根据用户的需求设立数据集市,完成数据仓库的复杂查询 、 决策分析和知识的挖掘等。

(2)数据仓库管理层

数据仓库的正常运行除了需要数据仓库功能层提供的基本功能外,还需要对这些基本功能进行管理与支持的结构框架。数据仓库管理层由数据仓库的数据管理和数据仓库的元数据管理组成。

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

(3)数据仓库的环境支持层

数据仓库的环境支持层由数据仓库数据传输层和数据仓库基础层组成。数据仓库中不同结构之间的数据传输需要数据仓库的传输层来完成。

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

2.2 数据仓库架构

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

数据仓库重构 数据仓库系统架构_数据仓库重构_03

(1)数据源

数据源是数据仓库系统的基础,是整个系统的数据源泉。通常包括企业内部信息和外部信息。内部信息包括存放于 R DBMS (关系型 DBMS )中的各种业务处理数据和各类文档数据。外部信息包括各类法律法规 、 市场信息和竞争对手的信息等。

(2)数据的存储与管理

是整个数据仓库系统的核心。数据仓库的真正关键是数据的存储和管理。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。要决定采用什么产品和技术来建立数据仓库的核心,则需要从数据仓库的技术特点着手分析。针对现有各业务系统的数据,进行抽取 、 清理,并有效集成,按照主题进行组织。数据仓库按照数据的覆盖范围可以分为企业级数据仓库和部门级数据仓库(通常称为数据集市)。

(3)OLAP 服务器

OLAP 是使分析入员 、 管理人员或执行人员能够从多角度对信息进行快速 、 一致 、 交互地存取,从而获得对数据的更深入了解的一类软件技术。 OLAP 的目标是满足决策支持或者满足在多维环境下特定的査询和报表需求,它的技术核心是 “ 维 ” 的概念。维是人们观察客观世界的角度,是一种高层次的类型划分。维一般包含着层次关系,这种层次关系有时会相当复杂。通过把一个实体的多项重要的属性定义为多个维,使用户能对不同维上的数据进行比较。因此 OLAP 也可以说是多维数据分析工具的集合。

OLAP 的基本多维分析操作有钻取 、 切片和切块 、 旋转等。

  1. 钻取 : 是改变维的层次,变换分析的粒度。它包括向上钻取和向下钻取。向上钻取是在某一维上将低层次的细节数据概括到高层次的汇总数据,或者减少维数;而向下钻取则相反,它从汇总数据深入到细节数据进行观察或增加新维 。
  2. 切片和切块 : 是在一部分维上选定值后,关心度量数据在剩馀维上的分布。如果剩馀的维只有两个,则是切片 : 如果有三个,则是切块;
  3. 旋转 : 是变换维的方向,即在表格中重新安排维的放置 ( 例如行列互换 ) 。

OLAP 有多种实现方法,根据存储数据的方式不同,可以分为(ROLAP (Relational OLAP ,基于关系数据库的 OLAP 实现)、MOLAP (Multidimensional OLAP ,基于多维数据组织的 OLAP 实现)、HOLAP (Hybrid OLAP ,基于混合数据组织的 OLAP 实现)。

  1. ROLAP:以关系数据库为核心,以关系型结构进行多维数据的表示和存储;ROLAP 将多维数据库的多维结构划分为两类表 : 一类是事实表,用来存储数据和维关键字 : 另一类是维表,即对每个维至少使用一个表来存放维的层次 、 成员类别等维的描述信息。维表和事实表通过主关键字和外关键字联系在一起,形成了 “ 星型模式 ” 。 对于层次复杂的维,为避免冗馀数据占用过大的存储空间,可以使用多个表来描述,这种星型模式的扩展称为 “ 雪花模式 ” ;
  2. MOLAP : 以多维数据组织方式为核心,也就是说, MOLAP 使用多维数组存储数据。多维数据在存储中将形成立方块 ( Cube ) 的结构,在 MOLAP 中对立方块的旋转切块 、 切片是产生多维数据报表的主要技术 。
  3. HOLAP : 低层是关系型的,高层是多维矩阵型的 ; 或者反之。这种方式具有更好的灵活性。还有其他的一些实现 OLAP 的方法,如提供一个专用的 SQL Server ,对某些存储模式 ( 如星型 、 雪片型 ) 提供对 SQL 查询的特殊支持。

OLAP 工具是针对特定问题的联机数据访问与分析,它通过多维的方式对数据进行分析 、 査询和报表。多维分析是指对以多维形式组织起来的数据采取切片 、 切块 、 钻取 、 旋转等各种分析动作,以求剖析数据,使用户能从多个角度 、 多侧面地观察数据库中的数据,从而深入理解包含在数据中的信息。

(4)前端工具

主要包括各种报表工具 、 查询工具 、 数据分析工具 、 数据挖掘工具及各种基于数据仓库或数据集市的应用开发工具。其中数据分析工具主要针对 OLAP 服务器,报表工具 、 数据挖掘工具主要针对数据仓库。

3 数据仓库的实现方法

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

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

(1)自顶向下法

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

优点

缺点

商业需求清楚地描绘出数据仓库实现的范围,因此是实现数据仓库解决方案的有效方法。

机会有时超出了当前的业务范围。

技术取决于商业

技术可以促进商业和竞争优势,但开始时对商业的促进是不明显的。

易于向决策者提供数据仓库的收益情况

一旦数据仓库实现,可能就不再要求更高的目标。

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

  1. 实现单位比较熟悉技术,并具有根据商业需求采用自顶向下方法开发应用程序的丰富经验。
  2. 决策层(总经理 、 决策者 、 投资者)完全清楚数据仓库的预测目标。
  3. 决策层(总经理 、 决策者 、 投资者)完全清楚数据仓库用作哪些机构的决策支持工具。
  4. 决策层(总经理 、 决策者 、 投资者)完全清楚数据仓库已经是商业过程中的一个子过程。

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

(2)自底向上法

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

优点

缺点

实现的需求和开始时的需求远远超过自顶向下分析和长期考虑的范围

最初方案实现之后,最好回顾下方案是如何服务整个企业的。

在企业对数据仓库了解的早期,该方法使企业无须巨大投入就可见到效益。

单个自底向上工程项目的失败,可能推迟潜在技术的实现。

少数人集中工作在一个部门范围,可以加速实现决策过程

早期的小组应不断发展为较大的小组,以扩充最初方案的覆盖范围。

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

  1. 企业还没有确实掌握数据仓库技术,希望进行技术评估来决定运行该技术的方式 、 地点和时间。
  2. 企业希望了解实现和运行数据仓库所需要的各种费用情况。
  3. 企业在对数据仓库进行投资选择。自底向上方法对于希望从数据仓库投资中快速得到回报的用户是非常有效的。该方法可以使企业充分利用各种技术,无须冒很大风险。

(3)联合方法

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

  1. 自顶向下的结构 、 标准和设计小组,可以从一个项目向另外一个项目传递知识,也可以把战术决策变为战略决策。
  2. 自底向上方法的项目小组,它直接负责在短期内实现一个集中的 、 部门级的商务解决方案。

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

  1. 实现企业拥有经验丰富的设计师,有能力建立 、 证明 、 应用和维护数据结构 、 技术结构及企业模型,可以很容易地从具体(运作系统中的元数据)转移到抽象。
  2. 企业拥有固定的项目小组,完全清楚数据仓库技术应用的场所。他们可以清楚地看到当前的商务需求。

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