`
mengqingyu
  • 浏览: 328830 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

(转载)ETL 选型

    博客分类:
  • BI
阅读更多


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

ETL工具从厂商来分为两种,一种是数据库厂商自带的ETL工具,Oracle warehouse builder 就是这种,另外一种是第三方工具提供商.开源世界也有一大票的ETL工具,功能各异,强弱不一,你可以从一下地址找到开源ETL工具的列表 http://www.manageability.org/blog/stuff/open-source-etl/view  , 提醒一句,选用工具的时候要慎重,真的,千万要慎重,不管你是选用商业的ETL工具(一般比较贵),还是开源的工具,都要在你充分了解产品的特性才去选择,千万不要听某某人说什么这个工具好,就购买了那个工具,一定要自己了解产品.

开源的ETL工具的列表 (排名是乱排的)
kettle  http://kettle.pentaho.org/  ,pentaho官方的ETL工具,是一个metadata-driven 的ETL工具,不需要自己写code .
talend  http://www.talend.com/    talend是talend自己公司的产品,宣传的是全功能的Data Integration 解决方案,基于eclipse 平台,包括很多的模块来实现商业流程建模,数据流程建模,最后输出的是perl 和 Java code
jasperETL  http://www.jaspersoft.com/   JasperETL是基于talend的平台,不太清楚有什么区别,jaspersoft开发的ETL产品.
Octopus   http://www.enhydra.org/tech/octopus/index.html    octopuc是enhydra 的一个ETL工具,enhydra是一个产品跨度非常大的开源站点,它有个开源的Workflow ,Shark ,pentaho就是使用的这个Workflow ,这个组织从workflow 到application server , 从ETL工具到application framework ,还有一些其他的中间件,octopus非常的原始,支持任何的JDBC数据源,用XML语言来定义的.也支持JDBC-DOBC ,和excel 和 access ,csv-files, XML files ,用Ant 和 JUnit 来创建表和测试.
CloverETL http://cloveretl.berlios.de/   CloverETL是提供给你一组API,用XML来定义ETL过程,同样支持JDBC数据源, CloverETL是开源的,但是它是没有图形界面的,它提供一个有图形界面的CloverGUI 来进行ETL的图形化开发过程,但是不是开源的,需要购买商业许可证.
KETL   http://www.ketl.org/    听说是几个前IBM员工做出来的ETL产品,
另外还有很多.不一一写介绍了,只列个表吧,
Joost        http://joost.sourceforge.net/    最近有个web2.0 网站也叫Joost,名字相同而已.
Xineo        http://software.xineo.net/xil.jspx
BabelDoc        http://sourceforge.net/projects/babeldoc
CB2XML        http://sourceforge.net/projects/cb2xml
mec-eagle        http://sourceforge.net/projects/mec-eagle/
Transmorpher        http://transmorpher.inrialpes.fr/
XPipe        http://xpipe.sourceforge.net/Articles/Miscellaneous/fog0000000018.html
DataSift        http://www.datasift.org/
Xephyrus Flume        http://www.xephyrus.com/flume/flume-intro.Prlx
Smallx        https://smallx.dev.java.net/
Nux        http://dsd.lbl.gov/nux/index.html
Netflux        http://www.netflux.org/
OpenDigger       https://opendigger.dev.java.net/
ServingXML        http://servingxml.sourceforge.net/
Scriptella        http://scriptella.javaforge.com/
ETL Integrator        http://www.glassfishwiki.org/jbiwiki/Wiki.jsp?page=ETLSE
Jitterbit        http://www.jitterbit.com/
Apatar        http://www.apatar.com/
Spring Batch       http://static.springframework.org/spring-batch/

大多数站点都是在sf.net上的.其中最后一个是Spring的,大名鼎鼎的Spring 也往ETL插一脚.实在是..........
根据talend官方介绍的数据,ETL工具的市场份额在2006好像是有160多亿美元.由于BI项目的成功,ETL的这一市场份额还会扩大,这也不难理解,为什么这么多的公司都在做ETL工具了.开源世界也免不了想要分一杯羹.再次废话一句,开源的东西你可以免费得到和使用,但是当你想应用到企业级开发的时候,省钱可不是唯一应该考虑的因素.还是那句话,慎重呀慎重.

openI : openI 并没有指定的ETL 工具
spagoBI : spagoBI 官方是支持多种ETL工具的,但他们的合作伙伴是 talend . talend 最近刚刚发布了2.0版本 , 自己声称是业绩第一个开源的ETL工具.基于eclipse平台。1.1版最后处理数据的方式是用perl,2.0版刚刚加了用java处理的方式,不过支持的数据源比较少.
jaspersoft : jasperETL ,一个基于talend的工具,不知道有什么不一样,大概是购买了talend的二次开发许可证。
pentaho : kettle ,现在已经改名叫pentaho data integration 了,不过一样可以叫kettle ,是pentaho独立的一个子项目,最近刚刚发布了2.5版本,非常容易安装和使用,跟pentaho一样,人气很旺。


让我们先看看ETL过程的设计是如何的定义的:
1 .数据抽取、   转换和加载,是数据仓库实现过程中,数据由数据源系统向数据仓库加载的主要方法,整个数据处理过程如下:
2 .数据抽取  : 从数据源系统抽取数据仓库系统所需的数据,数据抽取采用统一的接口,可以从数据库抽取数据,也可以从文件抽取。对于不同数据平台、源数据形式、性能要求的业务系统,以及不同数据量的源数据,可能采用的接口方式不同,为保证抽取效率,减少对生产运营的影响,对于大数据量的抽取,采取“数据分割、缩短抽取周期”的原则,对于直接的数据库抽取,采取协商接口表的方式,保障生产系统数据库的安全。
3 . 数据转换  :  数据转换是指对抽取的源数据根据数据仓库系统模型的要求,进行数据的转换、清洗、拆分、汇总等,保证来自不同系统、不同格式的数据和信息模型具有一致性和完整性,并按要求装入数据仓库。
4 . 数据加载  :  数据加载是将转换后的数据加载到数据仓库中,可以采用数据加载工具,也可以采用API编程进行数据加载。数据加载策略包括加载周期和数据追加策略,对于电信企业级应用,采用对ETL工具进行功能封装,向上提供监控与调度接口的方式。数据加载周期要综合考虑经营分析需求和系统加载的代价,对不同业务系统的数据采用不同的加载周期,但必须保持同一时间业务数据的完整性和一致性。


ETL的功能。

ETL 功能的强弱很难用一个指标来评价,大概从以下几个方面可以粗略的考虑

支持的平台,支持数据源,流程设计,Metadata管理,可扩展性 , API , 数据验证,数据质量管理 ,

*支持的平台
很多的服务器不是运行在Windows系统上,所以平台的支持非常的重要,Windows,Linux, Solaris,HP-UX , IBM AIX ,都是服务器常用的操作系统,至于Applet OSX我就不敢说了,如果哪个ETL工具只绑定在Windows平台上,恐怕支持的程度会很低,所以用java做的东西会占一点点的上风,企业用的东西还是要有一点跨平台的能力滴。

*支持的数据源
这里把数据源分为三种,数据库,文件,第三方应用程序
主流的数据库如 Mysql , Oracle , MS SQL Server , IBM DB2 , Sybase 还包括各种各样的数据库比如MS Access , PostgreSQL , Informix , Firebird SQL , Hypersonic , SAP DB , CA Ingres , SAP R/3 System 和任何支持ODBC的数据库,有人会对MS Access 和 Hypersonic 数据库上榜有疑问,我承认他们不是商业型数据库,可是我们不能否认他们的存在。这里要提一下JDBC 的好处了,JDBC的标准使数据库的通用性提高了很多。
支持的文件格式也算是ETL数据源一种很重要的输入,其中有两种是必须支持的,普通文本格式文件和CSV文件,另外还包括zip文件,XML文件,当然是按照一定格式输出的,有的是数据库本身输出的比如oracle的,有的是第三方工具输出的,也有是自身的ETL工具输出的格式,对文件格式支持又分为Read和Write,Read就是输入,要求支持的格式尽可能的多,而Write则因工具而不同,可能有的特性包括:按照field分隔数据,多种文件格式输出,追加的方式输出,按照文件大小或指定的行数自动分割文件等等。
支持的第三方应用程序也是ETL的附加特性,比如支持SAP 或者一些流行的ERP 数据格式的处理,但是并不是每个ETL工具都会有的特性,这个因工具而异。


*流程设计
ETL数据处理是非常复杂的,一个好的ETL流程设计工具不是凭一两个功能就算是成功的工具,流程设计也不可能因为一两个步骤就完成,我只是尽量挑些我知道的说吧,如果大家有补充的话,也欢迎留言或给我发email:  jj12tt@yahoo.com.cn
由于ETL过程的复杂性,为了方便的管理,高性能,可扩展性,大多采用象多线程,分布式架构,来提高管理和性能,所以GUI设计工具也要有相应的支持才能更好的完成工作.

输入和输出的时候要能够备份和恢复,你也可以认为这是数据流向临时表.
要能够方便的更改数据的结构,最好还有版本控制支持,不一定要非常的强大,至少要记录下每次更改的过程.
字段的转化功能要尽可能的强大,talend的转化设置还可以支持正则表达式.最好很多转换都有默认值,能够支持公式.
可以自定义函数,当然函数本身不能大复杂,跟公式转化能够搭配.
支持复杂的过滤,分组,查询.能够按照行或列进行聚合.
能够有基于时间的调度方式,事实上这也是必须的.
要有好的性能,能够批量的处理请求,并且这些性能是可视化的,也就是要有一个度量.每次转化多少数据用了多少秒或分钟,kettle官方上写的性能指标是4000/s,如果一条数据算1k 的话,一秒钟就是4M 的数据量,1GB就是256秒,大约4分钟多,应该算是非常可以接受的值了,不然别人也不会写在官方网站上了.
所有的任务都是能够集中管理的.也就是说,多个不同的客户端ETL工具有一个共用的服务器来设计任务,每个人可以设计自己的部分,但是执行的时候是一个整体在执行.
要有好的异常处理方式.出错是在所难免的,问题是出错了之后你怎么处理的问题.
是否支持集群,大型的数据库可能都会避免不了使用集群,如果转化的时候支持集群速度可能会提高非常之多,而且集群的特点就是只读服务器比较多,而ETL本身就是只读的,所以和集群也是非常和的来的.



流程是分步骤的,一个步骤又有可能是由多个任务来组成的,所以一个好的GUI是必不可少的,所以我们也说说GUI的特性:
1 . drag and drop 特性是必不可少的。而且有的时候需要一些对话框和向导来收集用户的行为。
2 . 任务是可以复制和剪切的。
3 . 每一个动作都是可以描述的。也是可以取消和重做的。取消和重做的次数不说是无限次数,也要尽可能的大。
4 . 每一个任务都是必须要有起点和终点的,起点只有一个,但是终点就不一定了。
5 . 要有图形化建立数据库链接的方式。能用图形化建立每一步,每个任务的方式。
6 . 界面的可定制性要好,颜色要选鲜艳一点的,字体可以调的,图形化界面要可以放大和缩小的,(不是吧,这也算)。当你要面对数十个任务的时候,数据错综复杂,颜色鲜艳一点不至于让你睡着了,你就知道为什么需要了。
7 . 支持多条路线,也就是一个数据点可以把数据分散到多个不同的下一级数据点,多个下一级数据点又可以把数据汇集到同一个数据点。
8 . 可以预览,所谓的预览就是把指定数量的数据而不是全部数据进行处理,查看结果是否满意。
9 . 可以在数据运行的时候动态的pause , cancel , redo .尤其是在进行耗时很长的动作的时候,或者你发现前一个步骤出错的时候。
10 . 显示数据处理时的状态要清楚。你正在链接到一个database ,你正在读8000条记录,你正在更新这些记录而不是新建记录,每一步操作所处的状态要明确。
11 . 要支持缓存 .这应该算是提高性能的好方法,但是缓存不能丢失。
12 . 所有的操作可以存储。不论你是存储成XML格式的,还是用元数据储存在database里面。
13 . 存储的操作可以读取。并且是不丢失任何数据的读取。
14 . 识别不同的数据库数据类型。long , String , data , text ,还包括table , index, sequence 等等。
15 . 对数据库要有编辑器的支持。要有可视化图形的建立 query 的方式。旁边应该有group , order by , sum , avg 等标准函数的支持。
转自:http://jjjava.iteye.com/blog/79499
分享到:
评论

相关推荐

    很全的ETL学习资料

    三大主流ETL工具选型.docx 什么是ETL.docx 商业智能 通过SSIS设计ETL来将Oracle,DB2,Sybase等数据源的数据定期导入到数据仓库.docx 商务智能(BI)的四大关键技术-ETL(抽取(Extract)、转换(Transform)和加载(Load))....

    ETL工具77项参数对比大全.pdf

    ETL工具的典型代表有:Informatica、Datastage、BeeDI 。产品化工具 必须满足:1、专注性 2、持续性 3、通用性 4、自研核心(非包装开源)5、C\S架构 6、C++ \JAVE 开发 7、时间性 拥有15年以上 持续升级 完善...... ...

    ETL实战ETL实战

    ETL实战ETL实战ETL实战ETL实战

    ETL学习资料

    10.三大主流ETL工具选型 11.商务智能(BI)的四大关键技术-ETL(抽取(Extract)、转换(Transform)和加载(Load)) 12.商业智能 通过SSIS设计ETL来将Oracle,DB2,Sybase等数据源的数据定期导入到数据仓库 13.选择合适的ETL...

    支持国产ETL etl-engine 用go写的轻量级etl引擎 方便集成到各企业中

    etl-engine的核心思想是为用户快速搭建ETL产品提供解决方案,让用户低代码乃至零代码将ETL产品集成到自己的项目或产品生态中。该产品由etl-engine引擎和etl-designer云端设计器及etl-crontab调度组成。etl-engine...

    Java分布式ETL框架

    Java分布式ETL框架

    ETL工具 ,基于Kettle实现的Web版ETL工具

    ETL工具 ,基于Kettle实现的Web版ETL工具,实现简单的数据抓取功能

    ETL架构师面试题

    它对ETL项目组的作用是什么? 2.在数据仓库项目中,数据探索阶段的主要目的是什么? 3.如何确定起始来源数据? 架构 4.在ETL过程中四个基本的过程分别是什么? 5.在数据准备区中允许使用的数据结构有哪些?各有...

    BI ETL ELT Kettle 基础知识中文文档汇总

    BI ETL ELT Kettle 基础知识中文文档汇总 BI项目中ETL设计与思考.pdf CTL工具.pdf ETL-开发规范.pdf ETL_--_事实表.pdf ETL_文档.pdf ETL_架构.pdf ETL_调度系统技术方案说明书_V1.0.pdf ETL中的数据清洗...

    ETL简介,介绍了ETL的基础知识

    介绍ETL

    ETL系列专题2 ETL数据结构

    ETL架构设计系列,介绍ETL Staging Area架构原则和常用数据结构

    ETL详解.docx

    1 ETL是什么 3 2 ETL和大数据有什么关联 3 3 ETL有哪些过程,要进行哪些操作 3 3.1 抽取作业 4 3.1.1 手工开发抽取作业时候的常用方法 4 3.1.2 更新数据的时间和数量的问题 5 3.2 转换作业 8 3.2.1 数据清洗 8 3.2.2...

    传统数据仓库ETL设计报告

    ETL升级一方面采用元数据驱动ETL的方式,通过配置元数据驱动ETL;另一方面,在ETL调度控制方面,采用结合数据质量校验的ETL调度

    1、ETL工程师经典面试题.md

    5. 在 ETL过程中四个基本的过程分别是什么? 6. 从 ERP源系统中抽取数据最好的方法是什么? 7. 简述直接连接数据库和使用 ,ODBC连接数据库进行通讯的优缺点。 8. 什么是代理键?简述代理键替换管道如何工作。 9. ...

    ETL PLUS v5白皮书

    ETL PLUS v5白皮书 ETL PLUS V5 White Paper

    etl优化 资料

    etl

    kettle etl

    kettle使用,用来各个数据库之间ETL数据抽取,功能比较全面。

    SQL Server 2005 ETL 专家系列

    SQL Server 2005 ETL专家系列之一:SQL Server DTS的前世今生 SQL Server 2005 ETL专家系列之二:SQL Server 2005 Integration Service的基本任务 SQL Server 2005 ETL专家系列之三:SQL Server 2005 Integration ...

    数据仓库和ETL

    数据仓库和ETL数据仓库和ETL数据仓库和ETL数据仓库和ETL

    ETL Automation 工具简介.pptx

    ETL Automation 是由 Teradata 公司发布的 ETL 流程调度产品,使用 JAVA 程序开发,支持跨平台部署,安装、维护简单。

Global site tag (gtag.js) - Google Analytics