`
mengqingyu
  • 浏览: 333847 次
  • 性别: 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工具77项参数对比大全.pdf

    ETL(Extract, Transform, Load)工具是数据仓库和大数据处理中的关键组件,负责从不同数据源抽取数据、转换数据格式和结构,并加载到目标系统中。本篇将对比分析三款主流的ETL工具——Informatica、Datastage和...

    很全的ETL学习资料

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

    ETL学习资料

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

    ETL Automation使用手册

    ETL Automation 使用手册 ETL Automation 是一个自动化的数据集成工具,旨在帮助用户快速高效地完成数据提取、转换和加载(ETL)过程。本手册将详细介绍 ETL Automation 的安装、配置、使用和管理。 ETL ...

    传统数据仓库ETL设计报告

    ETL平台分为三个主要模块:ETL元数据驱动模块负责根据配置信息生成ETL作业,ETL调度模块配置调度并结合数据质量校验控制执行,而ETL元数据管理模块则用于管理和检索ETL配置信息。 2.1.2.2 ETL平台技术架构 技术...

    ETL系列专题2 ETL数据结构

    在ETL(抽取、转换、加载)过程中,数据结构的设计尤为重要,因为它直接影响ETL的性能、效率和可靠性。本章节将详细介绍数据结构的概念和在ETL中的应用,尤其是ETL架构设计中Staging Area(暂存区)的原则和常用数据...

    ETL Automation 使用手册 Version 2.6.0 中文

    ETL Automation 使用手册 Version 2.6.0 中文 ETL Automation 是一个数据集成平台,旨在提供一个自动化的数据集成解决方案。下面是对 ETL Automation 使用手册 Version 2.6.0 中文的详细知识点解释。 ETL ...

    Java分布式ETL框架

    Java分布式ETL(Extract, Transform, Load)框架是用于大数据处理的一种关键技术,它涉及从各种数据源抽取数据,经过转换处理后,加载到目标存储系统的过程。在Java中,实现分布式ETL可以利用多线程、分布式计算以及...

    ETL规范.doc

    ETL 规范设计指南 ETL(Extract、Transform、Load)是数据集成的重要步骤,涉及到数据的抽取、转换和加载。为了确保 ETL 过程的高效性和可靠性,需要制定相应的规范和标准。本文档旨在提供一份完整的 ETL 规范设计...

    ODS ETL体系建设

    ### ODS ETL体系建设 #### 数据整合技术架构与ETL流程设计 在现代银行的数据仓库建设和业务智能(Business Intelligence, BI)项目中,ETL(Extract-Transform-Load,提取-转换-加载)是一个至关重要的组成部分。...

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

    ETL(Extract, Transform, Load)是数据仓库和大数据处理中的关键步骤,它涉及从不同来源提取数据,对其进行转换以适应特定需求,然后加载到目标系统。Kettle是一款开源的ETL工具,由Pentaho公司开发,因其强大的...

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

    【etl-engine】是一款由国内开发者使用Go语言编写的轻量级ETL(Extract, Transform, Load)引擎,旨在帮助用户快速构建ETL解决方案,降低集成到现有项目或产品生态中的技术门槛。它包含了三个主要组件:etl-engine...

    达梦ETL批量流程向导

    ### 达梦ETL批量流程向导:详细解析与应用指南 #### 一、引言 随着企业数据规模的不断增长以及对数据处理效率要求的提高,ETL(Extract, Transform, Load)技术成为了现代数据仓库建设中的核心环节之一。其中,...

    ETL工具,开源,使用需要配置

    ETL(Extract, Transform, Load)是数据仓库领域中的关键过程,用于从各种源系统抽取数据,转换数据以满足特定需求,然后加载到目标数据库或数据仓库中。在这个主题中,我们将深入探讨ETL工具的开源特性以及配置使用...

    ETL

    ETL,全称为Extract, Transform, Load,是数据仓库领域中的关键过程,用于从不同的数据源提取数据(Extract),经过清洗、转换(Transform)后,加载(Load)到目标系统,如数据仓库或大数据平台。这个过程对于数据...

    ETL详解.docx

    ETL 与大数据的关系紧密,因为大数据的处理往往涉及大量、多样化的数据整合,而这正是 ETL 技术的核心应用。随着大数据技术的发展,传统的 ETL 过程已经不能满足实时或近实时的数据处理需求。大数据环境下的 ETL ...

    数据仓库ETL算法详解

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

    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中的数据清洗...

Global site tag (gtag.js) - Google Analytics