一种可靠的数据仓库中ETL策略与架构设计

更新时间:2023-05-31 07:36:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一种可靠的数据仓库中!"#策略与架构设计

尤玉林

张宪民

(上海交通大学图像处理与模式识别研究所,上海!"""@")

&A-912:B2CB.0D;E50$730$=,

作为数据仓库系统的关键部件,清洗、转换和装载的工作,它是构建数据仓库的重要环节,&’(完成数据抽取、

同时也是构建数据仓库过程中出现问题最多的环节,所以针对这点,该文给出了一个可靠的同时易于扩展的&’(策略和架构。文章首先简单地介绍了数据仓库技术和&’(技术,包括&’(的相关概念、&’(在数据仓库中的功能和重要地位;然后重点介绍了这种&’(的具体策略和架构设计。关键词

数据仓库

&’(数据抽取数据转换数据清洗数据装载

中图分类号’I@%%$%@

文章编号%""!AF@@%A(!""#)%"A"%G!A"@文献标识码H

$%&’()*’&+,-),&./)012&3(.045$-67(,&6,8-&45

!"#(02),)9)-&7483&

:48:8’(0;7)0.<()0=(0

(+,;515057.>+-947I:.=7;;1,4JI9557:,K7=.4,151.,,L69,4691M19.5.,4N,1O7:;15B,L69,4691!"""@")

$*3,-)6,:H;567P7B=.-Q.,7,51,5673959R9:76.0;7;B;57-,&’(;0QQ.:5;567Q:.=7;;1,49S.0539597<5:9=51,4,=279,1,4,5:9,;>.:-1,49,32.931,4$+51;.,7.>567-.;51-Q.:59,5;57Q;1,S01231,45673959R9:76.0;7,95567;9-751-7,567:79:792.5.>S04;9S.05&’(1,S01231,45673959R9:76.0;7$’.9O.1356.;7Q.57,5192S04;,561;Q9Q7:Q05;>.:R9:39:7219S279,379;12B31;57,;1S27;5:9574B9,39:=6157=50:7.>&’($’61;Q9Q7:S:17>2B1,5:.30=7;56757=6,.2.4B.>3959R9:76.0;79,3&’(,1,=2031,4567=.,=7Q5;:729573R1563959R9:76.0;79,3&’(,&’(T;>0,=51.,;9,35671-Q.:U59,52.=951.,1,3959R9:76.0;7;B;57-,9,3567,157-Q69;1V7;567375912;9S.05561;;5:9574B9,337;14,.>9:=6157=50:7.>&’($

>&/?4-13:3959R9:76.0;7,&’(,39597<5:9=5,39595:9,;>.:-,3959=279,,39592.931,4

%引言

作为数据仓库系统中最基本而且极为重要的一部分———

数据的准确性和一致性是一个成功的数据仓库必须具有的特点。因为数据仓库本身依赖于各个业务系统(数据源),同时灵活性也是一个成功数据仓库的关键。所以,如何有效地从源数据中把需要的数据加载到数据仓库中是至关重要的一步。

数据仓库的数据源一般是存储在异构数据库中的业务系统数据。根据业务需求,从这些数据库中抽取相关数据,并进行转换和清洗,然后同步或者异步的方式装载到数据仓库中。这是一个工作量巨大的作业,根据已有经验,这也是日常运作中问题最多也最为繁琐的部分,&’(就是完成这部分工作的。而且数据仓库中数据的质量是数据仓库项目成功与否的最主要判断标准,所以&’(部分的设计成为整个数据仓库系统设计中最重要的部分之一。

它是数据仓库的核心技术之一,它将为数据仓库提供高&’(,

质而准确的数据。

目前,国外关于数据仓库的定义很多,业界公认的数据仓库概念的形成是以被称为“数据仓库之父”的)$*$+,-.,出版一书为标志。该书对数据仓库《/01231,45678959)9:76.0;7》

作了这样的定义:数据仓库就是面向主题的、集成的、非易失的、随时间变化的数据集合。

但就数据仓库的实质来讲,它可以被视为一个存储了依据业务需求经过转换和清洗后数据的数据库。数据类别及子目取决于业务人员及决策者对信息的要求。存储的原则是易存、易取、易用而且有效(时间和空间)。

原始数据库,报一个数据仓库系统综合了多个部分(&’(,表生成)、与多个系统接口(用于数据交换),同时生成的结果供各个部门的业务人员和决策者使用。设计数据仓库的一般步骤如图%所示。

!&’(简介

、数据转换(以及数&’(是指数据抽取(&<5:9=5)’:9,;>.:-)据加载(,是构建数据仓库中极其重要的一环,其在数(.931,4)据仓库系统中的位置如图!所示。

!$%

图%

数据仓库设计一般步骤

&’(的功能

业务系统?外部&’(首先要做的是按业务需求从源数据(

数据等)中抽取(数据仓库所需要的数据;然后对抽取&<5:9=5)

作者简介:尤玉林(,男,硕士研究生,主要研究方向:数据仓库和数据挖掘。张宪民,男,硕士生导师,主要研究方向:模式识别,人工智能,视

%WGWA)

%G!!""#$%"计算机工程与应用

总之,8-6是数据仓库系统中非常重要的组成部分,它从数据源中抽取、转换和加载数据到数据仓库或数据集市中,以备前端工具分析使用。

98-6的设计与实现9$%8-6的逻辑架构

一个8-6系统需要能够在限定的时间内完成对日常数据周期性的自动加载,支持对初始数据及历史数据的加载,并满

图!

数据仓库系统框架

足未来扩充的要求。数据仓库系统中数十个或者更多目标数据表及其相应数量的源数据意味着8-6程序的复杂性,庞大的数据量则需要充分考虑系统运行的效率,为方便开发复杂的程序,就要求灵活而简单明了的程序结构;而程序的效率的优化的要求又往往需要针对不同数据做个性化设计。因此,8-6的设计必须在开发的可管理性和程序性能之间取得平衡,有些实现复杂、个性化突出的做法就要让位于要求一致的8-6程序结构。太注重对不同数据的个性化设计,给8-6测试和维护造成很多隐患,很有可能在运行过程中带来不稳定性。所以,这样的平衡应是8-6设计中很重要的参考因素。

在基于此设计思路的8-6策略下,每个数据表的8-6流程都按照8-6的特性统一分为9个标准步骤,即数据抽取=变换(、数据转换(和数据加载(8>,+.?,=&’()*+,)-+.(/0’+1)6’.73,所有数据的8-6都被纳入到这个标准框架中。因此,所有4(5)

需开发的8-6程序的流程也就被对应地分为9个主要的步骤,每个步骤需要记录完整的处理中间状态及完善的日志信息。对于一个开发团队来说,遵循统一的架构开发可以保证每个开发人员开发的程序的结构一致性,便于8-6的管理,同时对于测试和维护人员来说,根据不同步骤的中间状态记录及日志信息也很容易定位及修正程序的错误。

图9是该8-6系统逻辑架构示意图。从宏观设计上,历史数据、初始数据加载和日常数据加载的8-6都将按照此架构设计。该架构将8-6作为一个整体来设计。

、数据对于数据仓库的加载,8-6分为数据抽取(8>,+.?,)变换(、数据转换(以及数据加载(&’()*+,)-+.(/0’+1)6’.7)@个阶段。每个阶段之间以文本文件作为接口,即数据抽取(8>3

出来的数据进行变换(、转换(、清洗(&’()*+,)-+.(/0’+1)&2*.(3,去除不必要信息,转化为数据仓库要求的统一格式,再进4(5)

行必要的处理;最后,将数据按着物理数据模型定义的数据结到数据仓库中。这个阶段必须要考虑到构类型装载(6’.74(5)异常情况,比如空值处理、字段类型或长度不符合要求等。

!$!8-6的必要性

这主要是由所抽取的源数据和数据仓库功8-6是必要的,能决定的。

首先,源数据是分布式异构的。可以是企业内部业务数据,来自不同的部门,也有可能是外部数据,所以为了保证数据仓库的数据是全面的、可信的,必须要把这些不同来源数据抽取出来,整合在一起。

其次,由于数据来源的多样性,所以数据表示形式必然不一致,其内容甚至可能相互矛盾。这种情况下,必须要对从各个不同来源的数据进行变换,统一表示形式,同时对相互矛盾的数据辨识真伪,保证加载到数据仓库数据的统一性和准确性。

再次,由于数据来源的多样性,不可避免地会造成数据的空间和时间冗余度较大,因此须对数据进行清洗,保证数据的唯一性。

对数据进行适当处理,比如变换、关还有,在8-6过程中,联、拆分或合并等,加上时间戳及其他特性,形成符合物理数据模型要求的多维数据,才能将数据顺利加载到数据仓库中。

从用户角度来考虑,经过8-6将不同来源数据集中到数据仓库中,使企业有了一个更好的信息平台,打破先前部门界限,方便企业内部信息流通,使各部门得到信息将更方便,这必将提高各部门决策水准。

,+.?,)阶段读取数据源产生8AB(8>,+.?,B’+1.,)文件,&CC

(&’()*+,4(5=C’+,=CD24,)阶段读取8AB文件产生&EB(&’11’(文件,数据转换(阶段读取&EB文E(,*+0.?*B’+1.,)-+.(/0’+1)件产生<6B(文件,数据加载(阶段读<+*F6’.7B’+1.,)6’.74(5)取<6B文件加载到数据仓库中。

此架构设计的优点是:将数据抽取、转换和加载分隔开,以从而使每个功能相&EB作为数据仓库表和数据源之间的桥梁,

对独立,减少各功能相互间的耦合度;同时,每个模块的功能被细分后,逻辑更加简单,更容易控制开发错误,提高开发效率;另外,也便于系统运行过程中的错误追综和异常恢复。所以说,它是可靠的而且易于功能扩展的。

!$98-6在数据仓库系统中的重要性

从数据仓库的系统架构可以看出,8-6是数据仓库中的非常重要的一环。它是承前启后的必要的一步。相对于关系数据库,数据仓库技术没有严格的数学理论基础,它更面向实际工程应用。所以从工程应用的角度来考虑,按着物理数据模型的要求加载数据并对数据进行一些系列处理,处理过程与经验直接相关,同时这部分的工作直接关系数据仓库中数据的质量,和前端工具处理的结果的质从而影响到在线分析处理(:6;<)量。

数据仓库是一个独立的数据环境,需要通过抽取过程将数据从联机事务处理环境、外部数据源和脱机的数据存储介质导转换、增量、入到数据仓库中;在技术上,8-6主要涉及到关联、调度和监控等几个方面;数据仓库系统中数据不要求与联机事务处理系统中数据实时同步,所以8-6可以定时进行。但多个顺序和成败对数据仓库中信息的有效性至关8-6的操作时间、9$!数据抽取(8>,+.?,)

数据抽取是从数据源获取所需数据的过程。数据抽取过程

会过滤掉数据仓库中不需要的源数据字段或数据记录。

在数据抽取之前,首先要考虑源数据环境和8-6开发环境的接口问题。对于不同平台、不同形式、不同业务和不同数据量的源数据应采取不同的数据抽取接口。典型的源数据接口有、、

计算机工程与应用

!""#$%"%I9

图&’()逻辑架构

根据’()实际,考虑抽取的效率和可靠性,选择合适的源数据接口。

数据抽取可以采用*+))和*+,-两种方式。*+,-就是指由源系统按照双方定义的数据格式,主动将符合要求的数据抽取出来,形成接口数据表或数据视图供’()系统使用。采用对源系统*+,-的方式会对源系统或其他开发团队产生依赖,

的性能和网络有较高要求。*+))则是由’()程序直接访问数

但是据源来获取数据的方式。这种方式’()工作就比较独立,要自己进行数据抽取工作。所以应根据实际项目要求选择合适的方式。

、数据翻译(、数据排序(、数据匹配((,5674))//K@5),/34)IC4:BL、数据聚合(以及其他复杂计算等。70J)MJJ32JC42)

原则上,数据转换只处理规律而重复性大的数据聚合,如汇总、取平均值、找最大最小值等,而不用于复杂计算,以减少开发成本和系统负载。对于不规律而且复杂的计算,可由源系统端将数据计算好。

&$#数据加载()/C>70J)

加载(主要完成将前面生成的*)E文件的数据加载)/C>)

到数据仓库的表中。

根据模型的设计和源数据的情况,有F种数据’()模式,所以就有F种不同的加载方式。

刷新(:数据仓库数据表中只包括最新(%)82H32GB,(;52%)的数据,每次加载均删除原有数据,然后完全加载最新的源数据。如大多数参数表的加载都采用这种模式。

这种模式下,数据抽取程序抽取源数据中的所有记录,在加载前,将目标数据表清空,然后加载所有记录。

镜像增量(:源数据中的记录(!),0C5GB/4M5520>,(;52!)定期更新,但记录中包括记录时间字段,源数据中保存了数据历史的记录,’()可以通过记录时间将增量数据从源数据抽取出来以附加的方式加载到数据仓库中,数据的历史记录也会被保留在数据仓库中。

事件增量(:每一个记录是一个(&)’1204M5520>,(;52&)新的事件,相互之间没有必然的联系,新记录不是对原有记录数值的变更,记录包括时间字段,可以通过时间字段将新增数据抽取出来加载到数据库中。

镜像比较(:源数据每天都(F),0C5GB/4./=5C32,(;52F)被更新。而数据仓库数据具有生效日期字段以保存数据的历史信息。因此,只能将新的镜像数据与上次加载的数据的镜像进行比较,找出变更部分,更新历史数据被更新记录的生效终止日期,并添加变更后的数据。大多数源数据中需保存历史信息的维表。

所以对应于上面F种’()模式而需要用到的加载方式有

(下转页)

&$&数据变换(和分割(./01234),5674)

数据变换的任务是逐条记录的检查数据,将每个字段转换

为遵循数据仓库标准的数据格式,即对数据类型和数据格式进行转换,并对空字段赋予适当的缺省值,形成规整的数据结构,文件中。对于不符合要求的数据,写入拒绝(8292:4)

数据变换主要的工作有:格式变换,如所有日期格式统一赋缺省值,在数据仓库中定义取值不为空的字为;;;;<==<>>;

段在源数据对应的字段可能存在没有取值的记录,这时根据业务需要,可能有两种处理办法,一是将该记录写入到拒绝文件中,由业务部门根据拒绝文件检查并修补源数据,另一种是在数据变换阶段直接赋一个缺省值;类型变换,如将源系统的长度变换,如将源系统中定义?@=A23类型转为:BC3类型等;

转为:BC3(等;代码转换,如源系统的某些字段的:BC3(%")!")经过代码升级以后,将老的代码转为新的代码等;数值转换,如数值单位由万元转为元等。

此外,同一个数据源表的数据可能被多个数据仓库表使用,这就需要将一个数据源按不同的条件通过数据抽取和变换过程分成多个.DE文件以对应于不同的目标表的转换加载。

&$F数据转换((3C0GH/3=)

数据转换(是按照目标表的数据结构,对一个或(3C0GH/3=)

多个源数据的字段进行翻译、匹配、聚合等操作得到目标数据的字段。

数括段%OF!""#$%"

计算机工程与应用

进程的主要内容如下:

D57*……

-T;:%#,U7VH(;)WX+.YU

+-,HB-4XZZ<-T;U:VH(;)X,.Y+-,HB-4X-,HB-4[VH(;);以累计方式将从设备读取出的字符记入字符串变量-,HB-4中,;直到遇到结束符,.Y为止

U_#%

;设备“忙”时向设备发送等待信号+-,HXZPZ4L?_O(-,H)

‘Y)L?_O(……

……;向设备发送信号

对于其它设备,根据厂商自定义的信号或字符含义,与上述实例的开发过程类似,可以开发出相应的通讯进程。

+.93,XV,(-,HB-4,%)4.-5H,\D)1"""(87,-,HB-4,ZA]FFDZ);设置变量.93,为-,HB-4的第一个字符7.93,XZ/Z4RM^,/Q0U7.93,XZDZ4RM^,^@D)1U7.93,XZ;Z4RM^,;?LU

7.93,XZMZ4RM^,MR0U;根据不同的.93,,调用不同的进程段以做出不同的响应……

’结束语

最初为提高工作效率、缩短报告单发出时间、方便查询检

验结果、缓解数字化设备测定的高速度与手工报告结果的低效率之间的矛盾而产生的实验室信息系统,发展到今天已经是一个比较成熟的系统。如何更好地利用检验设备的资源,节约投资成本,最大程度地避免工作差错,更多地减少手工操作步骤,简化工作流程,成为人们关注的问题。该系统采用的网络结构、流程设计在一定程度上解决了上述问题,并且在与M)L的联系上更为紧凑。系统在北京安贞医院运行的一年多时间里,收到了很好的效果,目前已联机的检验设备包括具备双向通讯和条形码识别功能的#台设备以及具备单向通讯功能的十几台设备。(收稿日期:!""’年&月)

U……

/Q0……

;将-,HB-4的第’个字符赋给变量YY!+YY!XV3(-,HB-4,4,I,’)

……

若设备“忙”则等待7YY!X"4_#%U;

打头的医嘱字符串-,H,……;组成以“O”向设备发送-,H4L?_O(-,H);

U

清空医嘱字符串^@D)1……;

……;数据采集并调用入库进程将结果入库;?L

参考文献

王放$Q;RM0?数据库下的联机检验系统设计CJE$计算机工程%$李桂祥,

与应用,:!""(;(G(!>)!%aS!!"

黄如春$临床检验信息系统设计CJE$医疗设备信息,!$王忠民,!""(;:%a(’)!aS("

兰小鹏,陈金雄$条形码检验信息管理系统CJE$福建医药杂志,($陈敏,

:!""(;!#(>)%’aS%#"

+-,HXZDZ[4,I[ZRZ[4,I[4,I

;生成成功接收结果的响应信号并向设备发送4L?_O(-,H)

U

MR0+-,HXZDZ[4,I[ZRZ[4,I[4,I

;生成成功接收设备信号的响应信号并向设备发送4L?_O(-,H)

(上接%&’页)启动加载的方式,所以无需制定对初始数据及历史数据加载制度化的进程调度。

(种:

(插入(:只需要将/01文件所有数据完全插入到%))*+,-.)

目标表中。主要是对事件增量类型进行操作。

(增加:需要对目标表同时做更新(及插入(!)2345.,))*6操作,根据主键(,对于已有的记录进行更新+,-.)3-785-9:,9)操作,对于不存在的记录做插入的操作,对于数据量大的表,由于此操作的效率非常低,可以采用先将/01文件分割为要删除文件及需插入文件,然后先将要删除文件中的记录根据主键对应从数据仓库中删除,然后再从插入文件中将所有记录全部插入到目标表中。这种方式主要是对镜像增量和镜像比较的类型进行操作。

刷新(:即将目标表的数据完全更新。主要针对(();,<-,+=)上面第一种类型进行操作。

总之,采用哪种加载方式主要根据效率和业务现实等多种因素。

’结束语

该文具体地介绍了一种数据仓库系统中?@0策略和架构

设计,对数据抽取、数据转换和数据加载的方法作了一定阐述。在上海通用汽车报表中心项目中应用证明,这里所给出的?@0方法具有良好的效果,比较有效的控制了?@0工作中可能会出现的重大失误,而且其功能也是容易扩展,按这种方法基本可以保证?@0工程开发的进度,加载到数据仓库中的数据质量较高,从而保证了构建整个数据仓库的性能。对其他数据仓收稿日期:库的?@0有借鉴意义。(!""’年&月)

参考文献

美)林友芳等译$数据仓库CDE$第二版,北京:机%$(A)*8B*著$王志海,械工业出版社,!""(F"(

科学出版社,!$王珊等编著$数据仓库技术与联机分析处理CDE$北京:

($>?@0进程调度

进程调度的功能比较单纯,就是在规定的时刻启动程序,并记录系统运行情况和运行结果。

不同数据表的更新周期不同,因此,进程调度软件需要能够支持日周月等多种不同的启动周期,并通过设定启动时间来确定每个任务在何时启动运行。

只有日常数据加载才需要考虑进程调度的问题。而对于初%GGG

($D7H=5,I1J,**7*K+$L.-5.,K7,+<B-MN+.B8O5.5P5-,=BN+,?@0/-BFH,++7*K,!"""

盛翊智,陈绵云$基于数据仓库的Q0R/在OLL中的应用研’$陈德军,

究CJE$计算机工程与应用,:!""(;(G(%)("S(%,>%

伍庆华,吴国平$基于移动行业的?@0方法及策略探讨CJE$计#$王文彬,

(!)

计算机工程与应用!""#$%"!!G

本文来源:https://www.bwwdw.com/article/ru34.html

Top