ETL和EAI

ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)作为BI/DW(Business Intelligence)的核心和灵魂,能够按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。如果说数据仓库的模型设计是一座大厦的设计蓝图,数据是砖瓦的话,那么ETL就是建设大厦的过程。在整个项目中最难部分是用户需求分析和模型设计,而ETL规则设计和实施则是工作量最大的,约占整个项目的60%~80%,这是国内外从众多实践中得到的普遍共识。

1、什么是EAI?

企业的业务流程会同时涉及到多个应用系统,因此要求这些系统能够协同,但接口、架构的不统一往往使得这些本应紧密集成的应用系统成为了一个个“信息孤岛”。于是,企业应用集成(Enterprise Application Integration,EAI)技术应运而生,它可以通过中间件作为粘合剂来连接企业内外各种业务相关的异构系统、应用以及数据源,从而满足 E-Commerce、ERP、CRM、SCM、OA、数据库、数据仓库等重要系统之间无缝共享和交换数据的需要。EAI 涉及技术广泛,实施复杂。

基本特征

EAI 的核心是使用中间件连接企业应用。有多种不同类型的中间件可以提供 EAI 的功能。在选择 EAI 中间件时需注意以下的基本特征:

* 通过中间件将不同的应用连接起来,保证应用的独立性,在不需要修改应用自身的业务逻辑的同时,又解决了数据共享问题。
* 对核心共享业务数据模型的处理与支持。
* 实现业务流程自动化。确保各个部门在采用不同的系统的同时可以协同完成同一个工作。
* 支持应用架构的不断变更。可以方便地重新配制以增加或去除系统而不会影响其它系统。
* 能够提供实时接口和批处理接口,能够提供同步和异步接口。
* 必须保证数据的安全,只有目的应用可以读取。
* 良好的性能和数据吞吐量,并且具有灵活的可扩展性以适应企业的发展。
* 必须具备恢复机制,当数据传输过程中发生连接中断等异常时可以确保数据的恢复。
* 对流程管理提供预定义的通用模型与行业模型。
* 既能够提供实时接口和批处理接口,又能够提供同步和异步接口。
* 能够提供实时接口和批处理接口,能够提供同步和异步接口。

五大层面

一个完整的 EAI 解决方案应当包含以下五个层面:
* 用户交互:实现应用用户界面统一的接入与安全机制,利用门户技术进行构建。
* 应用连接:通过 HUB 或总线架构,实现应用与应用之间的连接,完成相关的数据路由与数据格式转换。
* 业务流程整合:实现业务流程管理,包括工作流管理和自动化流程两个方面。
* 构建整合:这个层面包含两个部分,一部分是构建与现有应用兼容的新应用,另一部分是对现有资源进行重用以适应新环境的需要。
* 信息集成:实现数据集成,在异构的数据源之间实现数据层的直接整合。

相关技术

EAI 解决方案通常涉及到 JCA、JMS、Web 服务以及 XML 等多种企业级技术。这些技术都已经成为业界的标准,从而可以最大化地保护客户投资。这些技术既可以被包含在相关产品中供用户透明地使用,也可以由用户自己在应用程序中加以调用。此外,SOA(面向服务的架构)随着各大厂商的追捧而变得炙手可热。虽然 SOA 本身不是一个全新的概念, 但由于 Web 服务以及网格计算等技术的成熟,SOA 具备了更好的发展条件。对于 EAI 来说,基于 SOA 的企业应用系统可以随着企业业务的变化而逐渐变化,能够实现“柔性化”的软件系统,从而降低实施EAI 的成本和风险,因此我们可以说 SOA 的兴起给了 EAI 厂商一个新的机会。

2、什么是ETL?

ETL即数据抽取(Extract)、转换(Transform)、装载(Load)的过程。它是构建数据仓库的重要环节。数据仓库是面向主题的、集成的、稳定的且随时间不断变化的数据集合,用以支持经营管理中的决策制定过程。数据仓库系统中有可能存在着大量的噪声数据,引起的主要原因有:滥用缩写词、惯用语、数据输入错误、重复记录、丢失值、拼写变化等。即便是一个设计和规划良好的数据库系统,如果其中存在着大量的噪声数据,那么这个系统也是没有任何意义的,因为“垃圾进,垃圾出”(garbage in, garbage out),系统根本就不可能为决策分析系统提供任何支持。为了清除噪声数据,必须在数据库系统中进行数据清洗。目前有不少数据清洗研究和ETL研究,但是如何在ETL过程中进行有效的数据清洗并使这个过程可视化,此方面研究不多。

本文主要从两个方面阐述ETL和数据清洗的实现过程:ETL的处理方式和数据清洗的实现方
法。

(1)ETL的处理方式

本文所采用的ETL方法是数据库段区域中的ETL处理方式,它不使用外部引擎而是使用数据库作为唯一的控制点。由于源系统SQLserver2000是关系数据库,它的段表也是典型的关系型表。成功地将外部未修改数据载入数据库后,再在数据库内部进行转换。数据库段区域中的ETL处理方式执行的步骤是提取、装载、转换,即通常所说的ELT。这种方式的优点是为抽取出的数据首先提供一个缓冲以便于进行复杂的转换,减轻了ETL进程的复杂度。

(2)ETL过程中实现数据清洗的实现方法

首先,在理解源数据的基础上实现数据表属性一致化。为解决源数据的同义异名和同名异义的问题,可通过元数据管理子系统,在理解源数据的同时,对不同表的属性名根据其含义重新定义其在数据挖掘库中的名字,并以转换规则的形式存放在元数据库中,在数据集成的时候,系统自动根据这些转换规则将源数据中的字段名转换成新定义的字段名,从而实现数据挖掘库中的同名同义。

其次,通过数据缩减,大幅度缩小数据量。由于源数据量很大,处理起来非常耗时,所以可以优先进行数据缩减,以提高后续数据处理分析效率。

最后,通过预先设定数据处理的可视化功能节点,达到可视化的进行数据清洗和数据转换的目的。针对缩减并集成后的数据,通过组合预处理子系统提供各种数据处理功能节点,能够以可视化的方式快速有效完成数据清洗和数据转换过程。

3、ETL与EAI 之间的关系

随着这种集成的增多,企业信息系统之间需处理的数据量也将越来越大,数据的传输将变得越来越复杂。ETL越来越适合用于这种数据处理的工作,并逐渐挑战传统 EAI(enterprise application integration)在系统集成中的地位了。

最初 ETL 的设计是为了方便建立数据市场和数据仓库,并将它们升级为批处理方式。而下一代的 ETL 工具则在许多功能上做了扩展,使其能够适用于企业的应用集成,并且其中的一些工具将能够起到 EAI 某些工具的作用。

但是 ETL 还不能取代EAI,下一代ETL在应用集成领域中还只是EAI的补充。但是随着ETL技术的发展,企业在建立基于批处理数据仓库的系统集成工具时,将越来越关注对ETL的选择,同时EAI和ETL之间的界限也将变得越来越模糊。

4、ETL与EAI 之间的区别

ETL 工具适合数据集成, EAI 工具则适用于流程操作。下一代 ETL 工具更加适用于解决两个系统间数据的批量或者实时同步工作,特别是当大量巨大的数据在两个系统间提取、转换和存储时, ETL 的优势更加明显。 EAI 则适用于工作流和商业流程管理的需求,特别是擅长处理大量小事务。

对于交互式流程,如果它没有扩展工作流的需求,没有复杂数据的转换的需求,或者需要批量实时数据的合并处理,则ETL工具将是比较好的选择。

ETL工具比较适合于数据集成的工作,如应用系统之间的数据同步和点对点的单步交互工作;需要实时数据处理的工作中包含了大量的数据处理、复杂的数据传输和数据运算,它同样适合采用 ETL 工具。上面这些工作,即便是有些具体的处理需要通过 EAI 工具编程实现,我们还是可以用 ETL中的工具来处理。因为 ETL工具主要是通过关系型数据库来实现大量数据操作的,所以使用这类工具来传输大块的数据将取得更好的效果。

EAI 工具无疑是最适合流程集成的工具,如果流程中包含了大量的传输,那么它就必然包含了对业务流程的管理和实时交互的流程。

 

      ETL是数据抽取(Extract)、转换(Transform)、清洗(Cleansing)、装载(Load)的过程。是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。

  信息是现代企业的重要资源,是企业运用科学管理、决策分析的基础。目前,大多数企业花费大量的资金和时间来构建联机事务处理OLTP的业务系统和办公自动化系统,用来记录事务处理的各种相关数据。据统计,数据量每2~3年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占在总数据量的2%~4%左右。因此,企业仍然没有最大化地利用已存在的数据资源,以致于浪费了更多的时间和资金,也失去制定关键商业决策的最佳契机。于是,企业如何通过各种技术手段,并把数据转换为信息、知识,已经成了提高其核心竞争力的主要瓶颈。而ETL则是主要的一个技术手段。如何正确选择ETL工具?如何正确应用ETL?

  目前,ETL工具的典型代表有:Informatica、Datastage、OWB、微软DTS……

  数据集成:快速实现ETL

  ETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性。而影响质量问题的原因有很多,由系统集成和历史数据造成的原因主要包括:业务系统不同时期系统之间数据模型不一致;业务系统不同时期业务过程有变化;旧系统模块在运营、人事、财务、办公系统等相关信息的不一致;遗留系统和新业务、管理系统数据集成不完备带来的不一致性。

  实现ETL,首先要实现ETL转换的过程。它可以集中地体现为以下几个方面:

  空值处理 可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。

  规范化数据格式 可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。

  拆分数据 依据业务需求对字段可进行分解。例,主叫号 861084613409,可进行区域码和电话号码分解。

  验证数据正确性 可利用Lookup及拆分功能进行数据验证。例如,主叫号861084613409,进行区域码和电话号码分解后,可利用Lookup返回主叫网关或交换机记载的主叫地区,进行数据验证。

  数据替换 对于因业务因素,可实现无效数据、缺失数据的替换。

  Lookup 查获丢失数据 Lookup实现子查询,并返回用其他手段获取的缺失字段,保证字段完整性。

  建立ETL过程的主外键约束 对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键惟一记录的加载。

  为了能更好地实现ETL,笔者建议用户在实施ETL过程中应注意以下几点:

  第一,如果条件允许,可利用数据中转区对运营数据进行预处理,保证集成与加载的高效性;

  第二,如果ETL的过程是主动“拉取”,而不是从内部“推送”,其可控性将大为增强;

  第三,ETL之前应制定流程化的配置管理和标准协议;

  第四,关键数据标准至关重要。目前,ETL面临的最大挑战是当接收数据时其各源数据的异构性和低质量。以电信为例,A系统按照统计代码管理数据,B系统按照账目数字管理,C系统按照语音ID管理。当ETL需要对这三个系统进行集成以获得对客户的全面视角时,这一过程需要复杂的匹配规则、名称/地址正常化与标准化。而ETL在处理过程中会定义一个关键数据标准,并在此基础上,制定相应的数据接口标准。

  ETL过程在很大程度上受企业对源数据的理解程度的影响,也就是说从业务的角度看数据集成非常重要。一个优秀的ETL设计应该具有如下功能:

  管理简单;采用元数据方法,集中进行管理;接口、数据格式、传输有严格的规范;尽量不在外部数据源安装软件;数据抽取系统流程自动化,并有自动调度功能;抽取的数据及时、准确、完整;可以提供同各种数据系统的接口,系统适应性强;提供软件框架系统,系统功能改变时,应用程序很少改变便可适应变化;可扩展性强。


  数据模型:标准定义数据


  合理的业务模型设计对ETL至关重要。数据仓库是企业惟一、真实、可靠的综合数据平台。数据仓库的设计建模一般都依照三范式、星型模型、雪花模型,无论哪种设计思想,都应该最大化地涵盖关键业务数据,把运营环境中杂乱无序的数据结构统一成为合理的、关联的、分析型的新结构,而ETL则会依照模型的定义去提取数据源,进行转换、清洗,并最终加载到目标数据仓库中。

  模型的重要之处在于对数据做标准化定义,实现统一的编码、统一的分和组织。标准化定义的内容包括:标准代码统一、业务术语统一。ETL依照模型进行初始加载、增量加载、缓慢增长维、慢速变化维、事实表加载等数据集成,并根据业务需求制定相应的加载策略、刷新策略、汇总策略、维护策略。


  元数据:拓展新型应用


  对业务数据本身及其运行环境的描述与定义的数据,称之为元数据(metadata)。元数据是描述数据的数据。从某种意义上说,业务数据主要用于支持业务系统应用的数据,而元数据则是企业信息门户、客户关系管理、数据仓库、决策支持和B2B等新型应用所不可或缺的内容。

  元数据的典型表现为对象的描述,即对数据库、表、列、列属性(类型、格式、约束等)以及主键/外部键关联等等的描述。特别是现行应用的异构性与分布性越来越普遍的情况下,统一的元数据就愈发重要了。“信息孤岛”曾经是很多企业对其应用现状的一种抱怨和概括,而合理的元数据则会有效地描绘出信息的关联性。

  而元数据对于ETL的集中表现为:定义数据源的位置及数据源的属性、确定从源数据到目标数据的对应规则、确定相关的业务逻辑、在数据实际加载前的其他必要的准备工作,等等,它一般贯穿整个数据仓库项目,而ETL的所有过程必须最大化地参照元数据,这样才能快速实现ETL。

  ETL体系结构

  下图为ETL体系结构,它体现了主流ETL产品框架的主要组成部分。ETL是指从源系统中提取数据,转换数据为一个标准的格式,并加载数据到目标数据存储区,通常是数据仓库。

  ETL体系结构图

  Design manager 提供一个图形化的映射环境,让开发者定义从源到目标的映射关系、转换、处理流程。设计过程的各对象的逻辑定义存储在一个元数据资料库中。

  Meta data management 提供一个关于ETL设计和运行处理等相关定义、管理信息的元数据资料库。ETL引擎在运行时和其它应用都可参考此资料库中的元数据。

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值