|
一种面向数据仓库的ETL多层实现策略数据仓库是一个面向主题的、集成的、不可更新的且随时间不断变化的数据集合,是支持管理人员决策的数据依据。 1、引言 数据仓库是一个面向主题的、集成的、不可更新的且随时间不断变化的数据集合,是支持管理人员决策的数据依据。它的目的是建立结构化的数据存储空间,将不同数据源的数据分离出来,形成统一、有效的数据集,并最终加工、整合成决策支持所需要的数据。 ETL 是英文Extract、Transform、load 的缩写,是指从各种异构应用系统中抽取数据,并对抽取到的数据进行加工转换处理,最后加载到数据仓库DW(Data Warehouse)中的过程,它是保证数据仓库数据正确性和有效性重要过程,也是决策支持项目实施成败的关键因素。抽取是指把数据从源系统抽取的过程;数据转换是指根据需求将数据按照特定规则进行清洗、转换、加工并统一数据粒度的过程;加载是将加工好的数据装入目标数据库的过程。根据大量的实践经验得出ETL规则设计和实施约占整个项目工作量的60%-80%。 目前的ETL 实现有两种方式,一是在决策支持项目的实施过程中,针对数据源系统再另外定制一套专门的ETL系统,这种方式的好处在于ETL 工具的针对性对抽取效率和数据质量进行保证,缺点在于决策支持系统本身就是工程量巨大的项目,在此基础上再另外投入大量的人力、时间开发专门的ETL系统增加了项目实施的代价。二是借助专业ETL 厂商提供的现成的ETL 工具。目前较为成熟的ETL工具有Ascential sofware 公司的Datastage 和Informatica 公司的产品Informatica,这些产品一般对自己厂商的相关产品可以进行良好的支持且能发挥最大效率,缺点在于其结构相对封闭,对其他厂商产品的支持也很有限。所以在进行项目的实施过程中,要结合实际情况选择有效的ETL 实现方式。 本文将以进出口贸易公司的决策支持项目实施为例,在借助ETL工具Informatica 的情况下,结合数据仓库存储设计、数据库多重粒度划分,提出一种面向数据仓库的ETL 多层实现策略。 2、ETL多层实现策略 2.1 数据仓库存贮区域设计 良好的数据存储区域设计可以简化ETL 过程中的数据转换,提高抽取效率。通常情况下,传统的ETL 架构设计是将数据的抽取、清洗、转换及加载放在同一过程完成,但是对于大型的进出口贸易集团公司来说,其业务种类繁多,完成信息化建设的过程中又都针对不同业务,在不同时期分别建立了专门的业务系统,这导致数据来源的复杂性。而传统的ETL 架构将处理复杂数据放在一个过程中完成无形的增加了ETL 转换逻辑难度,增加了数据源系统的负担。这种复杂性首先体现在数据源系统数据库类型的不同。大型进出口贸易公司的数据来源多种多样,数据分布于大量异构系统上,其业务系统数据库管理系统DBMS 的类型不尽相同,无法采用单一的抽取、加载方式。其次,来自不同异构系统的数据对于同一个指标字段在数据类型、字段长度的存储上各不相同。例如院分销系统是贸易公司必不可少的业务系统之一,在分销系统中"销售数量"为numeric(22,6),而在物流系统中字段"出库数量"为numeric(18,3)。又比如,同种商品的"商品编号"字段在不同系统存储有不同的编码定义。诸如此类的"不一致"问题为后继的数据加工带来诸多不便。 在规范目标数据源建模的同时,更需要通过ETL进行数据转换(Transform)的操作,将数据进行标准化。另外,从不同数据源抽取的数据,在粗细粒度上也会存在差异。为汇总计算带来不便。 基于以上异构系统数据源存在的复杂数据问题,可以在ETL 过程中采用以下数据存储区域设计方案,此方案对大型的进出口贸易公司存在的数据来源多样、ETL 转换逻辑复杂等问题起到了良好的作用。 2.2 各个存储区域间ETL的实现 1) 数据源到缓冲层(stage 层)。针对不同数据源的数据库服务器类型,采用多种抽取方式相结合,将各个业务系统的元数据加载到此存储区域。期间不对数据进行任何转换处理和加工,其目的在于在目标数据库中最大化的呈现源系统数据的面貌,使得后继错误排查及纠正工作不会对源业务系统数据库造成影响。此存储区域将保留业务系统所有全量及增量数据。在增量抽取到缓冲层时增加抽取时间字段,可以标示出每日增量情况。 责编:张泽牧 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 著作权声明:kaiyun体育官方人口
文章著作权分属kaiyun体育官方人口
、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。 |
热门博文 |
|