【转】ETL介绍与ETL工具比较
ETL负责将分布的、异构数据源中的数据如关系数据、
ETL是数据仓库中的非常重要的一环。它是承前启后的必要的一步。相对于关系数据库,数据仓库技术没有严格的数学理论基础,它更面向实际工程应用。所以从 工程应用的角度来考虑,按着物理数据模型的要求加载数据并对数据进行一些系列处理,处理过程与经验直接相关,同时这部分的工作直接关系数据仓库中数据的质 量,从而影响到联机分析处理和数据挖掘的结果的质量。
数据仓库是一个独立的数据环境,需要通过抽取过程将数据从联机事务处理环境、外部数据源和脱机的数据存储介质导入到数据仓库中;在技术上,ETL主要涉及 到关联、转换、增量、调度和监控等几个方面;数据仓库系统中数据不要求与联机事务处理系统中数据实时同步,所以ETL可以定时进行。但多个ETL的操作时 间、顺序和成败对数据仓库中信息的有效性至关重要。
ETL中的关键技术
ETL过程中的主要环节就是数据抽取、数据转换和加工、数据装载。为了实现这些功能,各个ETL工具一般会进行一些功能上的扩充,例如工作流、调度引擎、规则引擎、脚本支持、统计信息等。
数据抽取
数据抽取是从数据源中抽取数据的过程。实际应用中,数据源较多采用的是关系数据库。从数据库中抽取数据一般有以下几种方式。
(1)全量抽取
全量抽取类似于数据迁移或数据复制,它将数据源中的表或视图的数据原封不动的从数据库中抽取出来,并转换成自己的ETL工具可以识别的格式。全量抽取比较简单。
(2)增量抽取
增量抽取只抽取自上次抽取以来数据库中要抽取的表中新增或修改的数据。在ETL使用过程中。增量抽取较全量抽取应用更广。如何捕获变化的数据是增量抽取的 关键。对捕获方法一般有两点要求:准确性,能够将业务系统中的变化数据按一定的频率准确地捕获到;性能,不能对业务系统造成太大的压力,影响现有业务。目 前增量数据抽取中常用的捕获变化数据的方法有:
a.触发器:在要抽取的表上建立需要的触发器,一般要建立插入、修改、删除三个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个 临时表,抽取线程从临时表中抽取数据,临时表中抽取过的数据被标记或删除。触发器方式的优点是数据抽取的性能较高,缺点是要求业务表建立触发器,对业务系 统有一定的影响。
b.时间戳:它是一种基于快照比较的变化数据捕获方式,在源表上增加一个时间戳字段,系统中更新修改表数据的时候,同时修改时间戳字段的值。当进行数据抽 取时,通过比较系统时间与时间戳字段的值来决定抽取哪些数据。有的数据库的时间戳支持自动更新,即表的其它字段的数据发生改变时,自动更新时间戳字段的 值。有的数据库不支持时间戳的自动更新,这就要求业务系统在更新业务数据时,手工更新时间戳字段。同触发器方式一样,时间戳方式的性能也比较好,数据抽取 相对清楚简单,但对业务系统也有很大的倾入性(加入额外的时间戳字段),特别是对不支持时间戳的自动更新的数据库,还要求业务系统进行额外的更新时间戳操 作。另外,无法捕获对时间戳以前数据的delete和update操作,在数据准确性上受到了一定的限制。
c.全表比对:典型的全表比对的方式是采用MD5校验码。ETL工具事先为要抽取的表建立一个结构类似的MD5临时表,该临时表记录源表主键以及根据所有 字段的数据计算出来的MD5校验码。每次进行数据抽取时,对源表和MD5临时表进行MD5校验码的比对,从而决定源表中的数据是新增、修改还是删除,同时 更新MD5校验码。MD5方式的优点是对源系统的倾入性较小(仅需要建立一个MD5临时表),但缺点也是显而易见的,与触发器和时间戳方式中的主动通知不 同,MD5方式是被动的进行全表数据的比对,性能较差。当表中没有主键或唯一列且含有重复记录时,MD5方式的准确性较差。
d.日志对比:通过分析数据库自身的日志来判断变化的数据。Oracle的改变数据捕获(CDC,Changed Data Capture)技术是这方面的代表。CDC 特性是在Oracle9i数据库中引入的。CDC能够帮助你识别从上次抽取之后发生变化的数据。利用CDC,在对源表进行insert、update或 delete等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式 提供给目标系统。CDC体系结构基于发布者/订阅者模型。发布者捕捉变化数据并提供给订阅者。订阅者使用从发布者那里获得的变化数据。通常,CDC系统拥 有一个发布者和多个订阅者。发布者首先需要识别捕获变化数据所需的源表。然后,它捕捉变化的数据并将其保存在特别创建的变化表中。它还使订阅者能够控制对 变化数据的访问。订阅者需要清楚自己感兴趣的是哪些变化数据。一个订阅者可能不会对发布者发布的所有数据都感兴趣。订阅者需要创建一个订阅者视图来访问经 发布者授权可以访问的变化数据。CDC分为同步模式和异步模式,同步模式实时的捕获变化数据并存储到变化表中,发布者与订阅都位于同一数据库中。异步模式 则是基于Oracle的流复制技术。
ETL处理的数据源除了关系数据库外,还可能是文件,例如txt文件、excel文件、xml文件等。对文件数据的抽取一般是进行全量抽取,一次抽取前可保存文件的时间戳或计算文件的MD5校验码,下次抽取时进行比对,如果相同则可忽略本次抽取。
数据转换和加工
从数据源中抽取的数据不一定完全满足目的库的要求,例如数据格式的不一致、数据输入错误、数据不完整等等,因此有必要对抽取出的数据进行数据转换和加工。
数据的转换和加工可以在ETL引擎中进行,也可以在数据抽取过程中利用关系数据库的特性同时进行。
(1)ETL引擎中的数据转换和加工
ETL引擎中一般以组件化的方式实现数据转换。常用的数据转换组件有字段映射、数据过滤、数据清洗、数据替换、数据计算、数据验证、数据加解密、数据合 并、数据拆分等。这些组件如同一条流水线上的一道道工序,它们是可插拔的,且可以任意组装,各组件之间通过数据总线共享数据。
有些ETL工具还提供了脚本支持,使得用户可以以一种编程的方式定制数据的转换和加工行为。
(2)在数据库中进行数据加工
关系数据库本身已经提供了强大的SQL、函数来支持数据的加工,如在SQL查询语句中添加where条件进行过滤,查询中重命名字段名与目的表进行映射,substr函数,case条件判断等等。下面是一个SQL查询的例子。
select ID as USERID, substr(TITLE, 1, 20) as TITLE, case when REMARK is null then ' ' else REMARK end as CONTENT from TB_REMARK where ID > 100;
相比在ETL引擎中进行数据转换和加工,直接在SQL语句中进行转换和加工更加简单清晰,性能更高。对于SQL语句无法处理的可以交由ETL引擎处理。
数据装载
将转换和加工后的数据装载到目的库中通常是ETL过程的最后步骤。装载数据的最佳方法取决于所执行操作的类型以及需要装入多少数据。当目的库是关系数据库时,一般来说有两种装载方式:
(1)直接SQL语句进行insert、update、delete操作。
(2)采用批量装载方法,如bcp、bulk、关系数据库特有的批量装载工具或api。
大多数情况下会使用第一种方法,因为它们进行了日志记录并且是可恢复的。但是,批量装载操作易于使用,并且在装入大量数据时效率较高。使用哪种数据装载方法取决于业务系统的需要。
ETL工具的典型代表有:Informatica、Datastage、ODI ,OWB、微软DTS、Beeload、Kettle、久其ETL……
ETL工具
旗鼓相当:Datastage与Powercenter:
ODI
ODI的性能不是很好,Powercenter > Datastage > ODI
独树一帜:Teradata的ETL Automation
就目前自主开发的ETL程序而言,有人用c语言编写,有人用存储过程,还有人用各种语言混杂开发,程序之间各自独立。这很危险,虽然能够让开发者过足编码的瘾,却根本不存在架构。
国产ETL软件—udis睿智ETL:
再来看国产的, 采用SOA架构体系,具有更好的方便性和灵活性.缺点是配置复杂,缺少对元数据的管理。
总体比较列表:
ETL工具选型参照表 |
|||
工具 |
优点 |
缺点 |
|
主流工具 |
Datastage |
内嵌一种类BASIC语言,可通过批处理程序增加灵活性,可对每个job设定参数并在job内部引用 |
早期版本对流程支持缺乏考虑;图形化界面改动费事 |
Powercenter |
元数据管理更为开放,存放在关系数据库中,可以很容易被访问 |
没有内嵌类BASIC语言,参数值需人为更新,且不能引用参数名;图形化界面改动费事 |
|
Automation |
提供一套ETL框架,利用Teradata数据仓库本身的并行处理能力 |
对数据库依赖性强,选型时需要考虑综合成本(包括数据库等) |
|
udis睿智ETL |
适合国内需求,性价比高 |
配置复杂,缺少对元数据的管理 |
|
自主开发 |
相对于购买主流ETL工具,成本较低 |
各种语言混杂开发,无架构可言,后期维护难度大。 |
在数据集成中该如何选择ETL工具呢?一般来说需要考虑以下几个方面:
转载于:https://www.cnblogs.com/shujuxiong/p/9273800.html
【转】ETL介绍与ETL工具比较相关推荐
- etl介绍与etl工具比较_ETL万岁
etl介绍与etl工具比较 提取转换负载是从一个数据系统中提取数据并加载到另一个数据系统中的过程. 涉及的数据系统称为源系统和目标系统. 来自源系统的数据形状与目标系统不匹配,因此需要进行一些转换以使 ...
- 【ETL】ETL介绍与ETL工具比较
本文转载自:http://blog.csdn.net/u013412535/article/details/43462537 ETL,是英文 Extract-Transform-Load 的缩写,用来 ...
- python数值转换机_用于ETL的Python数据转换工具详解
ETL的考虑 做 数据仓库系统,ETL是关键的一环.说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具.回忆一下工作这么些年来,处理数据迁移.转换的工作倒 还真的不少.但是那些工作基本上是一次 ...
- 《ETL原理及应用》学习笔记 ·001【ETL介绍】
注:前言.目录见 https://blog.csdn.net/qq_44220418/article/details/108428971 Tips:本节内容偏概念性,做简单了解即可 文章目录 一.ET ...
- BI开发流程和ETL介绍
BI开发流程和ETL介绍 BI开发过程 1. 构建维度-事实模型 2. 根据维度-事实模型搭建数据仓库(维度.事实) 3. 数据抽取(ETL) 4. 构 ...
- python etl 大猩猩_用于ETL的Python数据转换工具详解
ETL的考虑 做 数据仓库系统,ETL是关键的一环.说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具.回忆一下工作这么些年来,处理数据迁移.转换的工作倒 还真的不少.但是那些工作基本上是一次 ...
- ETL数据导入/导出工具 HData
HData是一个异构的ETL数据导入/导出工具,致力于使用一个工具解决不同数据源(JDBC.Hive.HDFS.HBase.MongoDB.FTP.Http.CSV.Excel.Kafka等)之间数据 ...
- 【ETL】使用kettle工具将数据从oracle迁移到mysql
[ETL]使用kettle工具将数据从oracle迁移到mysql 1 kettle安装及运行 kettle官网下载地址 ,下载完毕后大概有800多m 下载完毕后,直接解压,双击Spoon.ba ...
- ETL介绍及工作原理
ETL介绍及工作原理 ETL简介 ETL如何工作? 数据集的定义 ETL简介 ETL即EXTRACT(提取).Transform(转换).LOAD(加载): 提取是从数据库读取数据的过程.在此阶段,通 ...
最新文章
- centos7双网卡,一个连公网,一个连内网
- OO Unit4 UML
- 28、Power Query-分支语句的妙用
- 概率检索模型:BIM+BM25+BM25F
- [XSY] 宝藏(LCS,DP)
- 网络爬虫--5.urllib库的基本使用(1)
- php微信公众号的服务器配置,微信公众号服务器配置选项PHP示例代码
- pmo与敏捷团队可以共存吗_匿名与问责制可以共存吗?
- cc2530设计性实验代码四
- canape与matlab如何连接,CANape使用介绍.ppt
- 机器学习中的数学基础
- cat3 utp是不是网线_网线UTP-CAT5、UTP-CAT5e、UTP-cat6产品简介讲解
- Unity发布游戏在iOS设备上出现的字体问题
- 中国版Second Life前途难料
- BZOJ5287 HNOI2018毒瘤
- Mybatis联表查询:多对多(注解实现)
- Week of 2.21
- 扫描仪怎样装无线网络服务器,扫描仪(7140)安装说明
- JavaScript计算两个日期之间相差的天数
- 口碑好工作站服务器维修,童颜玩物 惠普Z800顶级工作站深度拆解
热门文章
- 服务器无限关机重启,服务器反复关机重启
- opencv的android.mk,android-opencv 版本下JNI Android.mk文件的书写
- java语言中 负责并发编程的机制是_Java并发编程艺术-并发机制的底层原理实现...
- mysql分时间段查询_mysql分时间段查询
- 【考证】大一规划、考证大军、水水水!
- 计算机网络高级技师,计算机网络管理员(高级技师)职业资格考核标准_new教案.doc...
- 乌班图配置mysql Java_从零开始的告警平台(1)
- JAVA设计模式Design Pattern→单例模式Singleton Pattern、工厂模式Factory Pattern、代理模式Proxy Pattern
- io 错误: socket closed_Tomcat NIO(9)IO线程Overall流程和关键类
- mininet编程实现交换机规则的插入、删除与修改。_Mysql闲聊之从Redo、Undo日志到MVCC实现原理