一、 与数据仓库有关的几个概念
1.1 目录
¨ Datawarehouse
¨ Datamart
¨ OLAP
¨ ROLAP
¨ MOLAP
¨ ClientOLAP
¨ DSS
¨ ETL
¨ Adhocquery
¨ EIS
¨ BPR
¨ BI
¨ Datamining
¨ CRM
¨ MetaData
Data warehouse
本世纪80年代中期,“数据仓库之父”William H.Inmon先 生在其《建立数据仓库》一书中定义了数据仓库的概念,随后又给出了更为精确的定义:数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可 修改的数据集合。与其他数据库应用不同的是,数据仓库更像一种过程,对分布在企业内部各处的业务数据的整合、加工和分析的过程。而不是一种可以购买的产 品。
Data mart
即数据集市,或者叫做“小数据仓库”。如果说数据仓库是建立在企业级的数据模型之上的话。那么数据集市就是企业级数据仓库的一个子集,他主要面向部门级业务,并且只面向某个特定的主题。数据集市可以在一定程度上缓解访问数据仓库的瓶颈。
OLAP
联机分析处理(OLAP)的概念最早是由关系数据库之父E.F.Codd于1993年提出的。当时,Codd认为联机事务处理(OLTP)已不能满足终端用户对数据库查询分析的需要,SQL对大数据库进行的简单查询也不能满足用户分析的需求。用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求。因此Codd提出了多维数据库和多维分析的概念,即OLAP。Codd提出OLAP的12条准则来描述OLAP系统:
准则1 OLAP模型必须提供多维概念视图
准则2 透明性准则
准则3 存取能力推测
准则4 稳定的报表能力
准则5 客户/服务器体系结构
准则6 维的等同性准则
准则7 动态的稀疏矩阵处理准则
准则8 多用户支持能力准则
准则9 非受限的跨维操作
准则10 直观的数据操纵
准则11 灵活的报表生成
准则12 不受限的维与聚集层次
ROLAP
基于Codd的12条准则,各个软件开发厂家见仁见智,其中一个流派,认为可以沿用关系型数据库来存储多维数据,于是,基于稀疏矩阵表示方法的星型结构(starschema)就出现了。后来又演化出雪花结构。为了与多维数据库相区别,则把基于关系型数据库的OLAP称为Relational OLAP,简称ROLAP。代表产品有Informix Metacube、Microsoft SQL Server
OLAP Services.
MOLAP
严格遵照Codd的定义,自行建立了多维数据库,来存放联机分析系统数据的Arbor Software,开创了多维数据存储的先河,后来的很多家公司纷纷采用多维数据存储。被人们称为MuiltDimension OLAP,简称MOLAP,代表产品有Hyperion(原Arbor software) Essbase、Showcase STRATEGY等。
Client OLAP
相对于Server OLAP而言。部分分析工具厂家建议把部分数据下载到本地,为用户提供本地的多维分析。代表产品有Brio Designer, Business Object.
DSS
决策支持系统(Decision Support system),相当于基于数据仓库的应用。决策支持就是在收集所有有关数据和信息,经过加工整理,来为企业决策管理层提供信息,为决策者的决策提供依据。
ETL
数据抽取(Extract)、转换(Transform)、清洗(Cleansing)、装载(Load)的过程。构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
Ad hoc query
即席查询,数据库应用最普遍的一种查询,利用数据仓库技术,可以让用户随时可以面对数据库,获取所希望的数据。
EIS
领导信息系统(Executive Information System),指为了满足无法专注于计算机技术的领导人员的信息查询需求,而特意制定的以简单的图形界面访问数据仓库的一种应用。
BPR
业务流程重整(Business Process Reengineering),指利用数据仓库技术,发现并纠正企业业务流程中的弊端的一项工作。数据仓库的重要作用之一。
BI
商业智能(Business Intelligence),指数据仓库相关技术与应用的通称。指利用各种智能技术,来提升企业的商业竞争力。
Data mining
数据挖掘,Data Mining是一种决策支持过程,它主要基于AI、机器学习、统计学等技术,高度自动化地分析企业原有的数据,作出归纳性的推理,从中挖掘出潜在的模式,预测客户的行为,帮助企业的决策者调整市场策略,减少风险,作出正确的决策
CRM
客户关系管理(Customer Relationship management),数据仓库是以数据库技术为基础但又与传统的数据库应用有着本质区别的新技术,CRM就是基于数据仓库技术的一种新应用。但是,从商业运作的角度来讲,CRM其实应该算是一个古老的"应用"了。 比如,酒店对客人信息的管理,如果某个客人是某酒店的老主顾,那么该酒店很自然地会知道这位客人的某些习惯和喜好,如是否喜欢靠路边,是否吸烟,是否喜欢 大床,喜欢什么样的早餐,等等。当客人再次光临时,不用客人自己提出来,酒店就会提供客人所喜欢的房间和服务。这就是一种CRM.
Meta Data
元数据,关于数据仓库的数据,指在数据仓库建设过程中所产生的有关数据源定义,目标定义,转换规则等相关的关键数据。同时元数据还包含关于数据含义的商业信息,所有这些信息都应当妥善保存,并很好地管理。为数据仓库的发展和使用提供方便。
二、 数据仓库产生的原因
事务处理环境不适宜DSS应用的原因主要有以下五条:
(1)事务处理和分析处理的性能特性不同。
在事务处理环境中,用户的行为特点是数据的存取操作频率高而每次操作处理的时间短;在分析处理环境中,用户的行为模式与此完全不同,某个DSS应用程序可能需要连续几个小时,从而消耗大量的系统资源。将具有如此不同处理性能的两种应用放在同一个环境中运行显然是不适当的。
(2)数据集成问题。
DSS需 要集成的数据。全面而正确的数据是有效的分析和决策的首要前提,相关数据收集得越完整,得到的结果就越可靠。当前绝大多数企业内数据的真正状况是分散而非 集成的。造成这种分散的原因有多种,主要有事务处理应用分散、“蜘蛛网”问题、数据不一致问题、外部数据和非结构化数据。
(3)数据动态集成问题。
静态集成的最大缺点在于,如果在数据集成后数据源中数据发生了变化,这些 变化将不能反映给决策者,导致决策者使用的是过时的数据。集成数据必须以一定的周期(例如24小时)进行刷新,我们称其为动态集成。显然,事务处理系统不具备动态集成的能力。
(4)历史数据问题。
事 务处理一般只需要当前数据,在数据库中一般也是存储短期数据,切不同数据的保存期限也不一样,即使有一些历史数据保存下来了,也被束之高阁,未得到充分利 用。但对于决策分析而言,历史数据是相当重要的,许多分析方法必须一大量的历史数据为依托。没有历史数据的详细分析,是难以把握企业的发展趋势的。DSS对数据在空间和时间的广度上都有了更高的要求,而事务处理环境难以满足这些要求。
(5)数据的综合问题。
在事务处理系统中积累了大量的细节数据,一般而言,DSS并不对这些细节数据进行分析。在分析前,往往需要对细节数据进行不同程度的综合。而事务处理系统不具备这种综合能力,根据规范化理论,这种综合还往往因为是一种数据冗余而加以限制。
要提高分析和决策的效率和有效性,分析型处理及其数据必须与操作型处理及其数据相分离。必须把分析型数据从事务处理环境中提取出来,按照DSS处理的需要进行重新组织,建立单独的分析处理环境,数据仓库正是为了构建这种新的分析处理环境而出现的一种数据存储和组织技术。
三、 数据仓库体系结构图
四、 数据仓库设计
4.1 数据仓库的建模
¨ 数据模型
1) 所有的实体都是平等关系。
2) 仅仅从数据模型的角度来着手设计数据仓库会产生一种“平面”效应。
¨ 星型连接
1) 事实表:位于星型连接的中央,它是被大量载入数据的实体。
2) 维表:周围的其它实体。
3) 在很多情况下:文本数据与数值数据是分离开的。
通过数据预连接和建立有选择的数据冗余,设计者为访问和分析过程大大简化了数据。
星型连接应用于设计数据仓库中很大的实体,而数据模型则应用于数据仓库中较小的实体。
4.2 数据仓库建模的十条戒律:
1) 必须回答紧迫的问题;
2) 必须有正确的事实表;
3) 将有正确的维表,描述必须按最终用户的业务术语表达;
4) 必须理解数据仓库所影响的公司过程或影响数据仓库的公司过程;
5) 对于事实表,应该有正确的“粒度”;
6) 根据需要存储正确长度的公司历史数据;
7) 以一种对于公司有意义的方式来集成所有必要的数据;
8) 创建必要的总结表;
9) 创建必要的索引;
10) 能够加载数据仓库数据库并使它以一种适宜的方式可用。
五、 数据仓库开发过程
¨ 建立或获得企业的数据模型;
¨ 定义记录系统;
¨ 设计数据仓库并按主题领域进行组织;
¨ 设计和建立操作型环境中的记录系统和数据仓库之间的接口,这些接口能保证数据仓库的载入工作能有序的进行;
¨ 开始载入第一个主题领域,进入载入和反馈过程,数据仓库中的数据在此过程中也在不断地改变。
5.1 数据模型的内容
¨ 标识主要主题领域。
¨ 各个主要主题之间的各种关系。
¨ 清晰地定义模型的边界。
¨ 把原始数据和导出数据分离。
¨ 每个主题领域需要标识
ü 键码
ü 属性
ü 属性分组之间的关系
ü 多重出现的数据
ü 数据的类型
5.2 数据模型转变到数据仓库
¨ 如果原先没有时间元素的话,时间元素必须加入到键码结构中
¨ 必须清除所有的纯操作型数据
¨ 需要将参照完整性关系转换成“人工关系”
¨ 将经常需要用到的到处数据假如到设计中
¨ 对数据的结构进行调整
ü 增加数据阵列
ü 增加数据冗余
ü 在合适的情况下进一步分离数据
ü 在合适的时候合并数据表
¨ 需要做数据的稳定性分析
5.3 数据仓库开发成功的关键
关键:是数据体系结构设计者和DSS分析者之间的反馈循环。有几点观察结果对数据仓库环境的成功建立是至关重要的问题:
¨ DSS分析人员一定要严格遵循“给我我所要的东西,然后我能告诉你我真正需要的东西”的工作模式;
¨ 反馈循环的周期越短,越有可能成功;
¨ 需要调整的数据量越大,反馈循环所需要的周期就越长
六、 数据仓库的数据采集
许 多部件构成了数据仓库系统。这个系统从现有的操作系统开始,一部分为支持数据仓库而设的后台处理,以访问和运用数据仓库内数据的用户工具而结束。在中间是 个分散过程,它使数据以一种局部而不是集中的方式来支持用户。至于其他系统,则是覆盖这些处理过程技术的基础,如安全系统,它不仅控制着在终端数据仓库的 输入过程,还控制着用户在数据仓库的前台访问能力。数据仓库处理的部件如图:
后置处理 中间处理 前置处理
|
6.1 后台处理
数据仓库系统的后台处理利用了操作系统的数据存储器,以进入数据仓库内占有活动区域:这个处理包括以下几个部分:
¨ 数据处理 为数据仓库收集数据的过程是从当前操作系统开始的。该数据仓库的后台处理需要被分成可管理的几个处理模块。操作系统生成必须处理和输入到数据仓库的事务。在数据仓库系统的结构内必须有一种方法来截取和收集那些在操作系统内已改变的数据,主要用于数据仓库的输入处理。
¨ 数据采集 在收集到操作数据存储器内的变化后,数据仓库的后台处理必须采集所有同以前收集的事务相关的数据。数据采集过程通常仅仅获取驱动数据采集过程的关键信息。
数据制备成事务库并用它来更新和供给数据仓库系统。这个过程在整个数据仓库系统中是最复杂的,因为用户正处理多种遗留数据源。这些数据源中的一些较为容易使用,而大部分则不是这样。
6.2 中间处理
数据仓库系统的中间处理利用了一个登台区域来完成在数据仓库中对用户游泳的数据。登台区域有时被叫正式地指定为操作数据存储器。
¨ 数据清理 在收集到所有从操作系统存储器得来的相关信息后,数据必须在放入数据仓库之前进行清理,以获得一个适当的统一的格式和定义。
¨ 数据的放置和分发 当完成数据清理后,数据就必须放置到数据仓库中。
¨ 标准报表的编译和索引 在数据已放入数据仓库数据存储器之后,对包含于数据仓库系统内的标准报表必须进行编译和索引。在这个过程结束后,报表很像数据仓库内的原始数据,将让用户在线有用,不必用纸张的形式发送。
中间处理更新了数据仓库中登台区域的数据,并使之成为可供最终客户,也就是数据仓库系统的用户使用的信息库。
6.3 前台处理
前 台处理过程涉及到允许用户对数据仓库所包含的信息进行正确的访问,及提供用户工具集所需的目录和中间数据信息。大多数数据仓库项目的目标应当是驱使这一过 程进入强大的用户领域,并脱离信息系统空间。然而,需要构造几个关键的应用程序以用于经验不足的数据仓库用户。该过程的任务包括用新的信息内容来更新访问 数据仓库的应用程序,通过适当的用户工具组内的视图或分类定义来提高访问能力。
6.4 数据仓库的技术体系结构
虽然普遍认为数据仓库系统能够改善最终用户查询、报表生成和DSS能力,而且能帮助组织投入公司数据以获取市场竞争优势,但在数据仓库系统构成方面看法却不尽相同。数据仓库的技术体系结构如下图:
| ||||
| ||||
|
|
|
|
|
|
|
|
|
|
|
¨ 设计模块:用于设计数据仓库数据库
¨ 数据获取模块:用于从源文件和源数据库中获取数据,并进行清洁、传输,将它加到数据仓库数据库中
¨ 管理模块:用于管理数据仓库的运行
¨ 信息目录模块:用于为管理者和企业用户提供有关存储在数据仓库数据库中的数据的内容和含义信息
¨ 数据访问模块:用于为企业的最终用户提供访问和分析数据仓库数据的工具
¨ 中间件模块:用于最终用户工具提供访问数据仓库数据库的方法
¨ 数据传递模块:用于向其他仓库和外部系统中分配数据仓库数据
数据仓库的三个重要组成部分,专家们一般把整个数据仓库的建设按照其不同性质,把它分为三个截然不同的部分,分别是:源数据、数据准备、以及数据呈现。现在讲的最多的OLAP分析和决策支持等,都是属于数据呈现的部分,下面我们来讲一讲数据准备阶段的问题。
6.5 数据的有效性检查
为避免数据冗余,要认识到数据装入数据仓库之前,应该对数据进行有效性检查,这是很重要的。如果没有进行刃具的有效性检查,就有可能破坏依赖于数据仓库的商务分析的完整性,帮助检查数据的有效性的最好方法是源系统专家。源系统专家包括具有技术专业知识和非技术知识的人士。
检查数据仓库中数据的有效性是一个非常耗时但必不可少的过程。建议该过程应高度自动化。SQL Server7中有许多内置功能,可自动进行数据有效性检查。
6.6 清除和转换数据
有效性检查是决定是否符合给定标准的过程。标准是依赖于安装的,为某个站点开发和执行的标准可能在其他地方毫无意义。如果数据不在给定的界限之内,它就成为我们称作scrubbing(清除)过程的对象。清除数据包括对那些在给定范围之外的数据采取纠正措施。
数据仓库中的数据来自于多种业务数据源,这些数据源可能是在不同的硬件平台上,使用不同的操作系统,因而数据以不同的格式存在不同的数据库中。如何向数据仓库中加载这些数量大、种类多的数据,已成为建立数据仓库所面临的一个关键问题。
在数据迁移的过程中,通常需要将操作数据转换成另一种格式以更加适用于数据仓库设计。在太多数情况下,转换是将数据汇总,以使它更有意义。
在转换结构中,确保能找出一种最好的方法保证数据从传统的数据存储器到数据仓库的同步。同步结构应当把重点放在转换语言的标准化、数据移动平台、通信策略和支持策略方面。数据仓库与操作数据存储器之间的同步过程能够采取不同的结构。
除寻找自动化转换操作的工具之外,还应估计数据转换的复杂性。大多数传统的数据存储方法缺乏标准,常常有些不规则的东西让开发员摸不着头脑。工具正在不断改进以有助于转换过程的自动化,包括复杂问题,如掩匿的数据、传统标准的缺乏及不统一的关键数据。
提取处理是数据仓库成功的关键。在提取过程中,数据会被格式化,并分发给需要从操作环境中共享数据的资源。元数据存储的工作是定义和解释数据资源和数据标准。因此,在操作数据上执行的转换过程应该用元数据存储中定义的标准数据格式放置数据。
我们可以定义数据变换的几个基本类型,每一类都有自己的特点和表现形式:
¨ 简单变换
单变换是所有数据变换的基本构成单元。这一类中包括的数据处理一次只针对一个字段,而不是考虑相关字段的值。
¨ 清洁和刷洗
目的是为了保证前后一致地格式化和使用某一字段或相关的字段群。
¨ 集成
集成是将业务数据从一个或几个来源中取出,并逐字段地将数据影射到数据仓库的新数据结构上。
¨ 聚集和概括
聚集和概括是把业务环境中找到的零星数据压缩成数据仓库环境中的较少数据块,有时进行聚集中的细节数据是为了避免仓库存入业务环境中的那样具体的数据,有时则是为了建立包括仓库的聚集副本或概括副本的数据商场。
6.7 简单变换
顾名思义,它是数据变换中最简单的形式,这些变换一次改变一个数据属性而不考虑该属性的背景或与它相关的其他信息。
¨ 数据类型转换
最常见的简单变换是转换一个数据元的类型。当现有应用程序存储某个类型的数据只在该应用程序的背景下有意义,在企业水平上却没有意义时,就常常要求进行这类变换。
这类转换可以通过编码程序中的简单程序逻辑完成,或者运用数据仓库数据变换工具完成。
¨ 日期/时间格式的转换
¨ 因为大多数业务环境都有许多不同的日期和时间类型,所以几乎每 个数据仓库的实现都必须将日期和时间变换成标准的仓库格式。这可以通过手工程序编码来完成。它能把一个日期或时间字段拆成几个子部分,然后再将它们拼成想 要的字段。然而市场上的大多数数据变换工具只提供了日期和时间格式之间迅速进行简单转换的设施,而手工编码上下的功夫要少得多。
¨ 字段解码
简单地说,数据一般不应该以编码的格式放在数据仓库中。我们在业务数据库中建立代码是为了节省数据库存储空间。虽然人不理解这些代码,但这并不是大问题,因为我们与那些代码的交互作用是由应用程序管理的。这些程序在必要的时候会成为我们破解那些值的代码。
在数据仓库环境中,情况就大不一样了。因为拥护可能来自公司的任何部门,所以仓库的所有用户不可能都有足够的背景知识和培训,使他们能够理解在业务数据库中使用的编码值。
因 此,业务系统和外部数据中的编码值在存入数据仓库之前,应该转换为经过解码的、易于理解的相应值。一方面,我们想把编码值充分扩展,使它们为最大多数的用 户理解;另一方面,把一个值扩展得太多要占用额外的存储空间,而且把该值当作查询中的检索标准也很困难。由于顾客情况代码不被普遍理解,所以应该扩展为一 个有意义的、易于理解的值,以便仓库用户能够认出它。用到的准则是:必须长到足以被大多数仓库用户理解。
从 技术角度看,字段解码是个非常易于实现的过程,它可以很容易地结合到变换程序中去,也可以在数据转换工具中轻松地完成,然而,确定应该进行多少解码工作是 很难的。但一个好的解决方法往往提供了足够的解码,这样即使普遍用户也可以理解字段值的含义,并且可以用全面理解数据元值及其用法的元数据加深他的理解。
6.8 清洁和刷洗
清洁和刷洗是两个可互换的术语,指的是比简单变换更复杂的一种数据变换。在这种变换中,要检查的是字段或字段组的实际内容而不仅是存储格式。一种清洁是检查数据字段中的有效值。这可以通过范围检验、枚举清单和相关检验来完成。
¨ 有效值
范围检验是数据刷洗的最简单形式,它是指检验一个字段中的数据以保证它落在预期范围之内,通常是数字范围或日期范围。
枚举清单也相对容易实现。这种方法是对照数据字段可接受值的清单检验该字段的值。
相关检验稍微复杂一些,因为它要求将一个字段中的值与另一个字段中的值进行对比。
当然,数据清洁规则往往是这些不同方法的结合。
¨ 复杂的重新格式化
数 据刷洗的另一主要类型是重新格式化某些类型的数据,这种方法适用于可以用许多不同方式存储在不同数据来源中的信息,必须在数据仓库中把这类信息转换成一种 统一的表示方式。最需要格式化的信息之一是地址信息,由于没有一种获取地址的标准方式,所以同一个地址可以用许多不同方式表达出来。这就要求将地址解析成 几个组成部分,然后将这些组成部分进行转换并重新排列成一个同意的格式。
6.9 集成
要把从全然不同的数据源中得到的业务数据结合在一起,真正的困难在于将它们集成为一个紧密结合的数据模型。这是因为数据必须从多个数据源中提取出来,并结合成为一个新的实体。这些数据来源往往遵守的不是同一套业务规则,在生成新数据时,必须考虑到这一差异。
¨ 字段水平的简单影射
字段水平的简单映射在必须执行的数据变换总量中站去了大部分。这种映射的定义是指数据中的一个字段被转移到目标数据字段中的过程。在这过程中,这个字段可以利用前面讨论过的任何一种简单变换进行变换,它可以被刷洗或重新格式化。
¨ 复杂集成
在一般的数据仓库中,数据转移和集成中的10%~20%要比从源字段到目标字段的简单移动复杂一些。为了将源数据变换为目标数据,这些复杂集成必须做更多的分析。
¨ 通用标识符问题
通用标识符问题是许多公司在建立数据仓库时所遇到的最困难的集成问题之一。当同一业务实体存在于多个系统源,并且没有明确的办法确认这些实体其实是同一实体的时候,往往会发生这个问题。
这 个问题往往很难用自动化方法解决,通常要求复杂的算法配对可能的匹配。有时在仓库中存入可能的匹配是可以接受的,但有时这些匹配在存入数据仓库之前必须先 由人来检验。很多公司实行一种两阶段战略来处理该问题。第一阶段是隔离,在这一阶段中,我们试图保证实体的每次出现都指派一个唯一标识符;第二阶段是调 和,我们开始确认哪些实体其实是相同的,并且将该实体的各次出现合并在一起。
¨ 目标元素的多个来源
当同一个目标数据元有多个来源时,会出现另一个复杂的数据集成问题,即很难保证该元素的各个来源总能保持一致。实际上,这样的数据元存在矛盾值比不同来源中的值相同更为普遍。解决冲突的简单办法是指定某一系统在冲突中占据主导地位。
¨ 数据丢失问题
数 值没有值的问题与一个数据元有多个冲突值的问题一样困难。有时为一个丢失的元素把空白或空值赋进仓库中也是可以接受的,而有时数据元必须有值,对该表格所 做的查询才会有效。必须为该数据赋一些估计值。如果是业务系统,数据库中有这种明知不准确的值是没有意义的,但对数据仓库来说,有估计值比根本没有值可能 要好得多。因此,对于仓库中的每种数据类型,设计人员必须在存入估计数据的内在风险和数据丢失所造成的误解的风险之间进行权衡。
用于这一目的最普遍技术是生成使曲线平滑的数据。然而,很多企业都有非常复杂的数据估计方法。这些方法能够调节许多变量,为丢失的数据生成一个非常接近实际的值。
¨ 衍生数据/计算数据
数 据变换的最常见形式之一就是计算和生成衍生数据元或计算数据元。它包括平均值、总和或统计计算,还包括复杂的业务计算。衍生数据字段通常是冗余的,因为计 算中涉及的数据也存储在仓库中,然而,它能大大简化查询,保证存入仓库中的这些衍生值的正确性和一致性,这样,在查询中可以选用它们,而不必在用户需要时 都计算一次。在这方面,数据变换工具是很有用的,因为这些工具能迅速而轻松地进行各种计算,无需担心编程员是否正确地编写了计算逻辑。
6.10 聚集和概括
大 多数数据仓库都要用到数据的某种聚集和概括。这通常有助于将某一实体的实例数目减少到易于驾驭的水平,也有助于预先计算出广泛应用的概括数字,以使每个查 询不必计算它们。概括是指按照一个或几个业务维将相近的数值加在一起。聚集指将不同业务元素加在一起或为一个公共总数。在数据仓库中它们是以相同的方式进 行的。
数据仓库中存放的最具体的数据不与业务系统中存放的细节数据一样聚集。这时,就有必要在变换业务数据的过程中加入一些数据聚集功能。这可以减少存储在数据仓库中的行数。
聚集还可以去除数据仓库中的过时细节。在许多情况下,数据在一定时期内要以很具体的水平存放着,一旦数据到了某一时限,对所有这些细节的需求就大大减弱了。此时,这些非常具体的数据应该传送到离线存储器或近线存储器中,而数据的概括形式则可以存放在数据仓库中。
目前可以得到的数据刷洗工具中,许多都已内置了概括功能,尤其是在时间维上进行聚集的功能。当然,不管如何做到这一点,重要的是用户能够轻松地访问元数据,了解生成总和数据所用的标准。
6.11 移动数据
将数据移出操作系统一般包括:在数据最终复制到数据仓库之前,将它们拷贝到一个中间位置。理想状况下,拷贝数据的过程应该在操作系统不忙时进行。确保了解 自己的商务及其支持系统。如果还未完成大量的更新,就不应该移动数据。如果数据仓库中的数据来自多个相互关联的操作系统,就应该保证在这些系统同步工作时 移动数据。
广 义的数据准备,覆盖面很广泛,包含了从数据源抽取数据,一直到最终数据呈现在用户面前之间的所有工作,这其中的最主要的工作就是数据的抽取、转换、清洗、 装载等一系列工作。在最初的数据仓库实现之前所有的这些工作都是用程序手工实现的。这样就造成了一个非常严重的问题,就是数据仓库的持续发展问题,因为利 用程序实现每一个数据抽取过程,导致所有的数据逻辑都隐藏在程序内部,当数据仓库进一步发展时,这些程序的管理和修改,将成为阻碍数据仓库发展的最大的障 碍。
经过一段时间的发展,人们最终认识到ETL工具的重要性,于是相关的ETL工具也纷纷出台,其中比较著名的是IBM的Visual warehouse,Ardent公司的data stage等等。如何判断一个ETL工具的优略呢,一般而言,主要有一下几个因素:
1 | OPEN datasource The tools must extract data from most kind of data source use Native database Driver | 就是说这种工具必须从很多不同的数据源抽取数据,并尽可能地使用数据源本身提供的驱动程序来提高使用效率 |
2 | OPEN target Database The Tools must can Use most database like (DB2,ORACLE.ETC.) as Target database. | 要支持不同的数据库作为数据仓库的载体 |
3 | Schedule job | 可以定时进行数据的更新的整理 |
4 | High Performance | 较高的工作效率 |
5 | Metadata management | 完善的元数据管理,可以对整个ETL过程中产生的元数据进行管理 |
6 | Parallel support | 支持并行数据抽取 |
7 | Visualize UI | 可视化的工作界面 |
8 | Custom define program | 可以支持用户自定义的程序做一些普通SQL语句无法完成的工作 |
9 | Security Support multi user and user group | 支持多用户和多用户组的工作方式 |
10 | Increment data extract support | 可以实现数据的增量抽取 |
11 | Use subject to manage ETL Job | 用户可以对所有进程按照主题进行管理 |
12 | Enable Complex cleansing and transform Automatic generate SQL, Custom SQL support | 支持复杂的数据清洗工作,自动生成SQL语句,用户自定义SQL |
13 | Support MDD data load | 可以支持多维数据库的数据加载 |
14 | Support TB data extract and load | 可以支持TB级别的数据加载 |
15 | Data model export and import | 现有设置可以进行Export和import |
七、 如何建立数据仓库
数据仓库的实现主要以关系数据库(RDB) 技术为基础,因为关系数据库的数据存储和管理技术发展得较为成熟,其成本和复杂性较低,已开发成功的大型事务数据库多为关系数据库,但关系数据库系统并不 能满足数据仓库的数据存储要求,需要通过使用一些技术,如动态分区、位图索引、优化查询等,使关系数据库管理系统在数据仓库应用环境中的性能得到大幅度的 提高。
数据仓库在构建之初应明确其主题,主题是一个在较高层次将数据归类的标准,每一个主题对应一个宏观的分析领域,针对具体决策需求可细化为多个主题表,具体来说就是确定决策涉及的范围和所要解决的问题。但是主题的确定必须建立在现有联机事务处理(OLTP)系统基础上,否则按此主题设计的数据仓库存储结构将成为一个空壳,缺少可存储的数据。但一味注重OLTP数据信息,也将导致迷失数据提取方向,偏离主题。需要在OLTP数据和主题之间找到一个“平衡点”,根据主题的需要完整地收集数据,这样构建的数据仓库才能满足决策和分析的需要。
建立一个数据仓库需要经过以下几个处理过程:①数据仓库设计;②数据抽取;③数据管理。
7.1 数据仓库设计
根据决策主题设计数据仓库结构,一般采用星型模型和雪花模型设计其数据模型,在设计过程中应保证数据仓库的规范化和体系各元素的必要联系。主要有以下3个步骤:
①定义该主题所需各数据源的详细情况,包括所在计算机平台、拥有者、数据结构、使用该数据源的处理过程、仓库更新计划等。
②定义数据抽取原则,以便从每个数据源中抽取所需数据;定义数据如何转换、装载到主题的哪个数据表中。
③将一个主题细化为多个业务主题,形成主题表,据此从数据仓库中选出多个数据子集,即数据集市(DataMart)。数据集市通常针对部门级的决策或某个特定业务需求,它开发周期短,费用低,能在较短时间内满足用户决策的需要。因此,在实际开发过程中可以选择在成功建立几个数据集市后再构建数据仓库这种策略。
这些数据定义直接输入系统中,作为元数据(metadata)存储,供数据管理模块和分析使用。元数据存储在元数据库中,它不仅是数据仓库的文档资料,供管理、维护人员使用,而且亦可供用户查询,使之更好地了解数据仓库结构,提高自己的使用水平。
7.2 数据抽取模块
该模块是根据元数据库中的主题表定义、数据源定义、数据抽取规则定义对异地异构数据源(包括各平台的数据库、文本文件、HTML文 件、知识库等)进行清理、转换,对数据进行重新组织和加工,装载到数据仓库的目标库中。在组织不同来源的数据过程中,先将数据转换成一种中间模式,再把它 移至临时工作区。加工数据是保证目标数据库中数据的完整性、一致性。例如,有两个数据源存储与人员有关的信息,在定义数据组成的人员编码类型时,可能一个 是字符型,一个是整型;在定义人员性别这一属性的类型时,一个可能是char(2),存储的数据值为“男”和“女”,而另一个属性类型为char(1),数据值为“F”和“M”。 这两个数据源的值都是正确的,但对于目标数据来说,必须加工为一种统一的方法来表示该属性值,然后交由最终用户进行验证,这样才能保证数据的质量。在数据 抽取过程中,必须在最终用户的密切配合下,才能实现数据的真正统一。早期数据抽取是依靠手工编程和程序生成器实现,现在则通过高效的工具来实现,如Ardent公司的Infomoter产品、SAS的数据仓库产品SAS/WA(WarehouseAdministrator)及各大数据仓库厂商推出的、完整的数据仓库解决方案。
7.3 数据维护模块
该 模块分为目标数据维护和元数据维护两方面。目标数据维护是根据元数据库所定义的更新频率、更新数据项等更新计划任务来刷新数据仓库,以反映数据源的变化, 且对时间相关性进行处理。更新操作有两种情况,即在仓库的原有数据表中进行某些数据的更新和产生一个新的时间区间的数据,因为汇总数据与数据仓库中的许多 信息元素有关系,必需完整地汇总,这样才能保证全体信息的一致性。
数 据仓库规模一般都很大,从建立之初就要保证它的可管理性,一个企业可能建立几个数据仓库或数据集市,但他们可共用一个元数据库对其进行管理。首先从元数据 库查询所需元数据,然后进行数据仓库更新作业,更新结束后,将更新情况记录于元数据库中。当数据源的运行环境、结构及目标数据的维护计划发生变化时,需要 修改元数据。元数据是数据仓库的重要组成部分,元数据的质量决定整个数据仓库的质量.