异构数据集成思路

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于数据仓库数据集成
1.1基于数据仓库的数据集成目标
数据仓库是一种典型的数据复制方法。

该方法将各个数据源的数据复制到同一处,即数据仓库。

用户则像访问普通数据库一样直接访问数据仓库,满足管理人员的决策需要。

1.2基于数据仓库的数据集成理论基础
1.2.1数据仓库
数据仓库的定义:数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合,用于支持管理层的决策过程。

数据仓库的有4个基本属性:主题性,集成性,时变性,只读性。

数据仓库是在数据库已经大量存在的情况下,为了进一步挖掘数据资源和决策需要而产生的。

数据仓库是一个环境,而不是一件产品同,提供用户用于决策支持的当前和历史数据,这些数据在传统的操作数据型数据库中很难或者不能得到。

数据仓库技术是为了有效地把操作型数据集成到统一的环境中,以提供决策型数据访问的各种技术与模块的总称。

所做的一切都是为了让用户更快、更方便地查询所需要的信息,提供决策支持。

1.2.2数据仓库与传统数据库的对比
数据仓库虽然从数据库发展而来的,但是两者在许多方面都存在着相当大的差异,具体表现如下:
从内容和设计的原则来讲,传统的操作型数据库是面向事务而设计的,数据库中通常存储在线交易数据,设计时尽量避免冗余,一般采用符合范式规则来设计。

而数据仓库是面向主题设计的,数据仓库中存储的一般是历史数据,在设计时有意引入冗余,采用反范式的方式来设计。

另一方面,从设计的目的来讲,数据库是为了捕获数据而设计,而数据仓库是为分析数据而设计,它的两个基本元素是维表和事实表。

维是看问题的角度,维表是中存放的就是从这些角度的定义;事实表里存放着要查询的数据,同时有维的ID。

数据仓库并没有严格的数据理论基础,也没有成熟的基本模式,且更偏向于工程,具有强烈的工程性。

通常按其关键技术部分分为数据的抽取、存储与管理以及数据的表现等三个方面。

1.2.3基于数据仓库的数据集成设计理论
1、主题的确认
面向主题性表示了数据仓库中数据组织的基本原则,数据仓库中的所有数据都是围绕着某一主题展开的。

数据仓库的创建、使用都是围绕着主题实现的。

因此,我们必须了解如何按照决策分析来抽取主题;所抽取的主题应该包括那些数据内容;这些数据内容应该如何组织。

2、数据集成
数据仓库的集成性是指决策分析的要求,将分散于各处的源数据进行抽取、清洗、转换、加载等工作,使数据仓库中的数据具有集成性。

所以在设计数据仓库时,应该对这一过程工具进行详细设计,以便实现数据的集成。

3、数据时变周期的选择
数据仓库的时变,就是数据应该随着时间的推移而发生变化。

尽管数据仓库中的数据并不像业务数据库那样要反映业务处理的实时状况,但是数据也不能长期不变,所以在设计数据仓库时应该选择合适的主题数据更新时间,具体更新时间应该根据具体的设计要求进行设定。

4、数据集合
数据仓库的集合性意味着数据仓库必须按照主题,以某种数据集合的形式存储起来。

目前数据仓库所采用的数据集合方式主要是以多维数据库方式进行存储的多维模式、以关系数据库方式进行存储的关系模式或者以两者相结合的方式进行存储的混合模式。

1.2.4数据仓库的体系结构
1、数据仓库的概念结构
数据仓库概念结构
数据仓库在创建以后,首先要从数据源中抽取所需要的数据到数据准备区,在数据准备区中经过数据的净化处理,再加载到数据仓库中,最后再根据用户的需求将数据发布到数据集市/知识挖掘中。

当用户使用数据仓库时,可以通过OLAP等数据仓库应用工具向数据集市/知识挖掘库或者数据仓库进行决策查询分析或者知识挖掘。

2、虚拟数据仓库结构
虚拟数据仓库结构
在虚拟数据仓库中并不需要从业务系统中抽取数据到新的数据存储位置-----数据仓库中去。

只是在用户进行数据仓库的查询操作时,数据仓库利用描述了业务系统中数据的位置和抽取数据算法的元数据直接从业务系统中抽取查询的数据进行概括、聚合操作后,将最终结果提供给用户。

3、数据集市结构
数据集市结构4、单一数据仓库结构
单一数据仓库结构
5、分布式数据仓库结构
站点D
站点C
分布式数据仓库结构
1.3基于数据仓库的数据集成的体系架构
本文选择单一的数据仓库结构作为数据集成模型,如下图所示:
基于数据仓库的数据集成架构图
ETL,Extraction-Transformation-Loading的缩写,中文名称为数据提取、转换和加载。

ETL 工具有:OWB(Oracle Warehouse Builder)、ODI(Oracle Data Integrator)、InformaticPowerCenter、
AICloudETL、DataStage、Repository Explorer、Beeload、Kettle、DataSpider。

开源的工具有eclips 的etl插件:cloveretl。

ETL(工作量60%-80%)
ETL负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或,成为联机分析处理、数据挖掘的基础。

主要涉及到关联、转换、增量、调度和监控等几个方面;数据仓库系统中数据不要求与联机事务处理系统中数据实时同步,所以ETL可以定时进行。

但多个ETL的操作时间、顺序和成败对数据仓库中信息的有效性至关重要。

& files applications
Meta data
Administration and operation 可让管理员基于事件和时间进行调度、运行、监测ETL作业、管理错误信息、从失败中恢复和调节从源系统的输出。

Transport services 利用网络协议或文件协议,在源和目标系统之间移动数据,利用内存在ETL处理的各组件中移动数据。

Extract 通过接口提取源数据,例如ODBC、专用数据库接口和平面文件提取器,并参照元数据来决定数据的提取及其提取方式。

Transform 开发者将提取的数据,按照业务需要转换为目标数据结构,并实现汇总。

Load 加载经转换和汇总的数据到目标数据仓库中,可实现SQL或批量加载。

Design manager 提供一个图形化的映射环境,让开发者定义从源到目标的映射关系、转换、处理流程。

设计过程的各对象的逻辑定义存储在一个元数据资料库中。

Meta data management 提供一个关于ETL设计和运行处理等相关定义、管理信息的元数据资料库。

ETL引擎在运行时和其它应用都可参考此资料库中的元数据。

1.4基于数据仓库的数据集成的关键技术设计
在数据设计时可以根据数据仓库的参照结构构建合适的数据仓库。

数据仓库的参照结构由不同的层次组成,这些层次包括:数据仓库基本功能层、数据仓库管理层和数据仓库环境支持层,如下表所示:
设立数据集市、完成数据仓库的查询、决策分析和知识挖掘等。

数据仓库的管理层分成数据管理和元数据管理两部分,主要负责对数据仓库中的数据抽取、清理、加载、更新与刷新等操作进行管理。

数据仓库环境支持层包括数据传输和数据仓库基础两部分,这两部分对于数据仓库的创建和使用是必不可少的,没有这两个数据仓库的支持环境,数据仓库的创建和使用是无法实现的。

1.4.1数据仓库基本功能层的设计
数据仓库基本功能包括:数据抽取、数据筛选和清理、清理后数据的加载、完成数据仓库的查询。

1、数据抽取
数据仓库的提取是传统的数据处理过程,其输入是数据仓库数据源的各种业务处理系统的数据库,输出部分是数据仓库。

(1)数据抽取处理流程图
数据抽取流程图
数据仓库的数据抽取是数据仓库成功的关键。

在操作数据上执行的数据抽取应该依据元数据中定义的标准数据格式处理数据。

在抽取过程中,从元数据库中读取数据的定义,将数据转换或者修补以适合数据仓库的标准。

(2)数据抽取策略
抽取数据的方式主要有:全库比较法、利用程序日志、利用数据库日志、利用时间戳、利用位索引。

○1全库比较法。

抽取数据确定的最简单方法是全库比较,即将数据源数据的当前瞬时状态与上一次数据抽取时的瞬时状态进行比较,将两者的差异记录在增量文件中,增量文件作为数据加载的来源。

这种方法在处理过程中比较简单,但是需要花费大量的灵气比较时间,给系统的CPU和I/O带来了沉重的负担,一般用于小型的数据仓库。

○2利用程序日志。

该方法主要是在数据源的业务处理系统中利用程序记录将发生变化的数据记录下来,形成增量文件,根据数据仓库的需要传送到数据仓库中去。

这种方法所需的系统资源少,但是会加重业务处理系统的工作量。

而且,在业务系统发生变化时,也需要对程序日志进行修改,这就需要解决是由业务处理系统的维护人员进行程序日志的修改,还是由数据仓库的维护人员进行修改的问题。

前者会加重业务处理系统的负担,后者可能不受业务处理系统管理人员的欢迎。

○3利用数据库日志。

利用数据源的数据库日志确定抽取数据要比利用程序日志好,不需要编制任何业务处理系统的程序,中需要通过对数据库运行日志的检查,就可以确定那些数据源发生变化,也就确定了进行加载数据。

当然,采用这种方法需要了解DBMS的内部环境,并且在日志结构改变时也需要改变抽取过程。

○4利用时间戳。

这种方法需要在记录中增加时间戳,在记录发生变化时,就加上变化发生时的时间戳,这样只要在确定在上一次抽取以后,那些记录的时间戳发生了变化,就可以处理。

当然这种方法需要在系统中增加一个时间索引,可能会影响到业务处理系统的运行效率。

○5利用位图索引。

即在数据源的记录中增加一个位图索引字段,其值是:没变化、修改过、修改中。

在数据源中增加一个新的记录或者修改了一个记录时,值就设置为修改过,数
据提取过程中只抽取这些标志为修改过的记录,抽取完成后再将修改过的值改为没有变化,将修改中的值改为修改过。

(3)数据抽取事件的触发与运行地
抽取事件的触发。

在确定了被抽取的数据以后,还需要确定在何时进行数据抽取,数据抽取时间的确定主要有:基于时间的和基于事件的两种。

基于时间的抽取主要是间隔几个小时、几天、几周进行的数据抽取。

基于事件的数据抽取取决于某些事件是否发生,利用事件的发生来触发数据的抽取。

抽取过程的运行地。

在数据抽取计划中,还需要确定数据抽取过程的运行地是数据源还是数据仓库。

如果是数据源的数据库与数据仓库的数据库不一致,数据的抽取与转移可能需要通过平面文件进行。

此时,数据抽取过程必须在数据源上进行,这是一种堆式数据抽取方式。

如果数据源与数据仓库的数据库是一致的,那么数据的抽取过程就可以在数据仓库上进行。

(4)基于上下文无关文法的数据抽取规则------数据抽取法则参考设计
○1概述
通过分析大量的企业信息系统产生的文本数据的异同点,从文本数据携带的信息和数据结构形式出发,将文本数据文件结构归纳为:
文件名:在文件名中存在的一些重要数据应该被提取出来。

文件内容:文本文件的内容是最重要的部分,从结构上又可将文件的内容分为表头、表体、表尾三大部分。

分别表示实际数据的不同方面,综合起来则可以表示完整的无缺失的数据。

在对文本数据文件结构分析的基础上,需要将这些数据的抽取规则表示出来。

文法是描述语言的语法结构的形式规则,这些规则是准确和易于理解的,而且有相当强的描述能力,足以描述各种不同的结构,上下文无关文法所定义的语法范畴是完全独立于这种范畴可能出现的环境的,用上下文无关文法来表示数据抽取规则比较合适。

○2上下文无关文法
上下文无关文法包括四个组成部分:一组终结符号,一组非终结符号,一个开始符号以及一组产生式。

形式上讲,一个上下文无关文法G是一个四元式(V t,V n,S,ϕ),其中:
V t是一个非空有限集,它的每个元素称为终结符号;
V n是一个非空有限集,它的每个元素称为非终结符号,V t∩V n=ϕ;
S是一个非终结符号,称为开始符号;
ϕ是一个产生式集合(非空有限集),每个产生式的形式是P→a,其中,P∈V t,a∈(V t UV n)*。

开始
符号S至少必须在某个产生式的左部出现一次。

本文用::=代替→,用<>表示终结符号,用《》表示非终结符号。

○3件名结构分析
大量的企业信息系统都有自己的一套文本数据文件名的生成规则,即在“.”后面放置有用的信息或在文件名的特定几位上表示所需要的有用信息。

若在有用信息与其它信息之间有某种特定的分隔符,则以这个特定的分隔符为标记,提取出有用信息。

若在有用信息与其它信息之间没有特定的分隔符,而是在特定的位上放置有用信息,则指定信息提取的起始位置和长度,并取出有用信息。

文件名数据抽取规则的文法表示为:
《文件名》::=《按分隔符抽取》l《按位置抽取》
《按分隔符抽取》::=<分隔符号><从第几个符号开始><至第几个符号结束>《按分隔符
抽取》
<分隔符号>::=某个特定符号
<从第几个符号开始>::=开始分隔符编号(数字值)
<至第几个符号结束>::=结束分隔符编号(数字值)
《按位置抽取》::-<数据开始位置><抽取数据长度>《按位置抽取》
<数据开始位置>::=数据在文件名中的开始位置值(数字值)
<抽取数据长度>::=需提取的数据长度(字符个数,数字值)
○4件内容分析
将文件内容的结构分为表头、表体、表尾三部分分别进行研究。

其中,表头和表尾在某些文本数据文件中可能存在,也可能不存在,但表体作为表达数据信息的主体部分应该总是存在的。

a. 表头数据的结构分析
作为基本结构的开始,表头部分往往包含着以下信息:
(1)需滤掉的说明信息行:指整个数据块的说明部分,包括数据来源、对应的报表名称等。

(2)需保留的数据行:相对于之前需滤掉的多余信息,这部分信息是需要保存到数据库中的。

不论这
部分数据量的大小,它们都将被抽取出来,并与后面的表体数据和表尾数据组合成一个完整的数据行。

对这些需保留的数据的抽取方法主要有以下两种:
(1)从特定分隔字符后抽取指定长度的字符;
(2)从指定位置开始直接抽取指定长度的字符。

综合以上的分析,可以得到描述表头结构及抽取规则的文法如下:
《表头数据》::=《行数据信息》《表头数据》I《行数据信息》
《行数据信息》::=《开始标志行》l《需过滤数据行》I《需保留数据行》
《开始标志行》::=《包含特征字符串行》I《等于特征字符串行》l《匹配特征字符串行》《需过滤数据行》::=《包含特征字符串行》I《等于特征字符串行》I《匹配特征字符串行》
《包含特征字符串行》::=<特征字符串><包含比较方法>
《等于特征字符串行》::=<特征字符串><等于比较方法>
《匹配特征字符串行》::=<特征字符串><匹配比较方法>
《需保留数据行》::=《按分隔符抽取》I《按位置抽取》
《按分隔符抽取》::=<分隔符号><从第几个符号开始><至第几个符号结束>
《按分隔符抽取》I<分隔符号><从第几个符号开始><至第几个符号结束>
<分隔符号>::=某个特定符号
<从第几个符号开始>::=开始分隔符编号(数字值)
<至第几个符号结束>:.-结束分隔符编号(数字值)
《按位置抽取》::=<数据开始位置><抽取数据长度>《按位置抽取》I<数据开始位置><抽取
数据长度>
<数据开始位置>::=数据在文件中的开始位置值(数字值)
<抽取数据长度>::=需提取的数据长度(字符个数,数字值)
<特征字符串>::=字符串
<包含比较方法>::=判断目标字符串是否包含特征字符串
<等于比较方法>::=判断目标字符串是否等于特征字符串
<匹配比较方法>::=判断目标字符串是否匹配特征字符串
b.表体数据的结构分析
表体部分作为数据的主体部分,包含着绝大部分需提取的信息,正确、高效地抽取出数据是进一步将数据加载到数据库的关键。

表体数据包含了最终记录中的主要字段值,它们主要通过两种方式被
抽取出来:
第一种是通过特定的分隔符将各字段值分隔开,常用的有逗号、“^’’、“l”等符号,各字段值的长度不
是固定的,对这种类型的数据在抽取时要识别出分隔符,并以这些特定的符号为边界抽取各个字段。

第二种情况正好相反,各个字段值的长度是固定的,没有特定的分隔符来分隔这些字段,对这类数
据的抽取应当采取指定各个字段在数据行中的开始位置和长度的方法。

综合这两种情况,可以得到描述表体数据的结构和抽取规则的文法为:
《表体数据》::=《行数据信息》《表体数据》I《行数据信息》
《行数据信息》::_《需过滤数据行》l《标准数据行》I《需字段填充数据行》I《需组合数据行》I《需字
段替换数据行》
《需过滤数据行》::=《包含特征字符串行》I《等于特征字符串行》l《匹配特征字符串行》
《包含特征字符串行》::=<特征字符串><包含比较方法>
《等于特征字符串行》::=<特征字符串><等于比较方法>
《匹配特征字符串行》::=<特征字符串><匹配比较方法>
<特征字符串>::=针对具体应用的字符串
<包含比较方法>::=判断目标字符串是否包含特征字符串
<等于比较方法>::=判断目标字符串是否等于特征字符串
<匹配比较方法>::=判断目标字符串是否匹配特征字符串
《标准数据行》::=《按分隔符抽取》I《按位置抽取》
《按分隔符抽取》::=<分隔符号><从第几个符号开始><至第几个符号结束>《按分隔符抽取》
I<分隔符号><从第几个符号开始><至第几个符号结束>
<分隔符号>:.-某个特定符号
<从第几个符号开始>::=开始分隔符编号(数字值)
<至第几个符号结束>::=结束分隔符编号(数字值)
《按位置抽取》::=<数据开始位置><抽取数据长度>《按位置抽取》I<数据开始位置><抽取
数据长度>
<数据开始位置>::=数据在文件中的开始位置值(数字值)
<抽取数据长度>::=需提取的数据长度(字符个数,数字值)
《需字段填充数据行》::=《需填充字段》《需字段填充数据行》I《完整字段》《需字段填充数据行》l
《需填充字段》I《完整字段》
《需填充字段》::=《按分隔符抽取》I《按位置抽取》
《完整字段》::=《按分隔符抽取》I《按位置抽取》
《需字段替换数据行》::=《需替换字段》《需字段替换数据行》I《完整字段》《需字段替换数据行》I
《需替换字段》I《完整字段》
《需替换字段》::=《按分隔符抽取》I《按位置抽取》
《完整字段》::=《按分隔符抽取》I《按位置抽取》
《需组合数据行》::=《元素数据行》《需组合数据行》I《元素数据行》
《元素数据行》::=《按分隔符抽取》I《按位置抽取》
c.表尾数据结构分析
表尾数据部分和表头部分数据类似,往往都包含着记录行的一些关键字段,也有一些多余的无用信息需要被过滤掉,在此不赘述。

以上是对数据结构表示文法的分析。

结合当前流行的xML语言的特点也可以使用xML 来实现文本数据文件结构的表示文法。

2、数据仓库的数据清理转换方法
在确定了数据源与数据仓库的数据格式以后,需要解决两者的不一致处,即进行数据的清理与转换。

这种数据的清理转换不仅涉及到格式的改变,而且还需要准备数据仓库运行数据的结构和内容的转换。

这些数据清理与转换可以采用类型转换、串操作、数据函数、参照完整性、关键字翻译和聚集等方法进行。

○1类型转换。

数据类型的转换,主要是将同一含义不同格式的数据转换成同样格式的数据类型。

○2串操作。

在数据清理中,有时需要将两个以上数据列的值裁剪,并成为一个列的值。

○3数据函数。

在数据的清理过程中,有时需要对数据源中的数据通过某种计算,取其计算结果。

○4参照完整性。

在数据加载到数据仓库中时,需要确定这些所加载的数据是否与已经存在数据仓库中、是否已经抽取已经是抽取数据的一部分。

○5关键字翻译。

各种数据源数据都具有其业务处理过程中的关键字,这些关键字在数据仓库中需要转换为数据仓库中的代理关键字,以适应时间维等多维数据处理的需要。

○6聚集运算。

数据仓库中大量的概括、聚集数据可以在数据向数据仓库加载过程中计算,而不必等到加载完成以后再进行,以降低数据I/O操作的开销。

3、元数据的建立与应用
元数据作为数据仓库中数据的数据主要作用于指导数据仓库中数据的抽取、清理和加载过程,并对数据仓库的应用发挥指导、帮助作用。

数据仓库模型的建立贯穿了整个数据仓库从规划设计到实际应用的整个过程(表现如上图所示),需要在数据仓库的开发应用中不断的更新,其主要过程有:
(1)在数据仓库的模型建立过程中,可以使用某种建模工具创建数据仓库的模型,此时需要从现有的业务处理系统中提取元数据,并建立数据仓库的逻辑模型与物理模型,包括数据仓库的逻辑名称、业务名称、列名、物理列名、业务术语和描述、查询提示和样值等,并将这些元数据保存在元灵气目录中。

(2)在数据仓库中添加关于数据加载的元数据,完成数据“来源定义”,主要是关于数据仓库源数据的一些描述信息,用作从源文件向数据仓库转换的准备。

(3)利用数加载工具提取数据仓库中各表的定义,并且完成源数据到目标数据的映射定义,捕捉所有的转换信息。

这些工作大多在数据模型设计中完成。

(4)将关于源数据到目标数据的映射、转换存储到元数据目录中。

(5)a在将源数据加载进数据仓库时,需要能够从元数据目录中查找到有关源数据的类型和位置、目标数据的类型和位置以及两者之间的映射。

(6)b在将数据加载前,还需要查看数据仓库中物理状态的最新信息。

(6)一边利用元数据指导从源数据提取数据,并且根据被提取的源数据的情况从中提取元数据,例如数提取的时间、源数据的有关变化等。

(7)将所提取的源数据经过清理、转换后加载进数据仓库。

(8)根据数据加载情况,将所捕捉到的数据加载统计信息和审核信息保存到元数据目录中。

(9)在数据仓库模型建立过程中所获取的事实表信息在元数据目录中应该成为业务分组的一些元数据,这些业务分组元数据实际上是一些关于使用数据仓库的帮助信息,只是在元数据目录中应该按照业务分组,便于用户使用,这些元数据应该可以被前端展示工具获取。

(10)用户可以在前端展示数据展示工具中形成查询请示,此时元数据可以为正确的查询请求生成提供帮助。

(11)数据仓库将查询使用等结果返回给用户。

(12)将用户的查询情况统计以后保存在元数据目录中,作为分析、了解用户使用数据仓库情况的依据。

4、清理后数据的加载
1.4.2数据仓库管理层设计。

相关文档
最新文档