ETL工具---留念2011年的点滴(二)

来源:互联网 发布:淘宝子账号怎么登录 编辑:程序博客网 时间:2024/06/05 14:47
 

  ETL(Extraction-Transformation-Loading的缩写)中文名称为数据提取、转换和加载。负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载临时或永久的数据存储域,成为后续处理的基础。在数据仓库的书籍中,会经常出现这个词。
 
  我恰好跟数据仓库打交道,所以ETL是一个重要的工作内容了。

  在我们进行数据清洗时,经常会碰到一个问题,是用专用的ETL工具好,还是自己开发的ETL脚本好?这个要根据实际情况了,专用的etl需要买的,很贵,碰到自己需要的个性化,不能很好的变通。而自己开发的脚本需要费精力去维护和保持版本统一。

  说到这,我要澄清一个问题,ETL和ETL工具区别,
 
  ETL :是一个次序的过程,一个概念。是把三个步骤合到一起的一个统称,是一个项目中的实施过程。

  ETL工具:是为了实现一个有次序的过程,而专门开发的一套通用的软件组合,是一个独立的产品。

 这此只说这个ETL工具。ETL到下节说。

现在主流的ETL工具:IBM的DataStage 和 Teradata的ETL Automation,kettle和Talend

上面说的产品,可以百度一下,都有详细的介绍和比较。

列出这几个产品,主要是因为从事的项目中用到的ETL是自己开发的,开发原理类似Teradata的ETL Automation,用到的DB2数据库,对IBM产品的关注,和对开源的软件的支持。

我们现在用的ETL的工具包括以下几个主要程序:

1.作业调度程序,这个是核心,会对调度表的内容进行循环扫描,发现有需要调度的作业编号,就取出作业号,找到对应的作业进行调度。c语音实现。

2.作业监控程序,这个是对作业调度时间的控制,对于定时的作业,在时间到时要把作业放到调度表,对于触发的作业,要检查触发条件是否满足,如果满足,把作业放到调度表,
                同时可以对文件目录的变化进行监控,如果目录中文件有变化,把对应的作业加到调度表中。

3.作业重调程序,这个是对报错的作业进行重新调度。

这3个程序都是c语言实现,在后台长期运行,所以稳定性要求很高,可以实现连续运行两年,不需要重新启动。

4.作业配置程序,这个是单独开发的,使用perl脚本,配置开发用的作业。使用的时候配置一个作业需要花费2分钟的时候,这个速度是可以接受的。

5.使用存储过程来进行具体的转换工作。

总体来说,和ETL流程不一致,而是ELT模式。

结构图如下:

etl的核心程序关系

 

 

 

 

 

 

 

 

 

 

 

 

 

 

优点:1.可以快速的配置作业,不依赖于具体的开发工具,记事本都可以直接开发。利于远程维护。
      2.修改转换、清洗规则,不需要重新修改作业。
      3.由于使用了存储过程,所以速度上是能达到高标准。
      4.在团队协作开发中,可以和转换、清洗并发操作。
      5.可快速响应需求变更的处理。

缺点:1.没有图形界面。
      2.对人员熟悉系统的结构要求高。

另外在用的还有一种ETL工具,FLEX开发的WEB界面。可对数据进行ETL的方式的实现,缺点明显且致命。
 1.系统部署麻烦,作业配置也很麻烦。配置一个作业需要10分钟。

 2.运行速度慢,当数据库连不上时,容易僵死。

在抽取压缩处理 1亿条数据时,居然需要3个小时,真的很崩溃。需要后续的持续改进。

实施新的项目时,在对ETL工具的使用上,要选择谨慎态度,有几条建议,可以参考一下:

1.成本最小化  是指在选用ETL工具时,不但要顾眼前的利益,还要考虑以后的维护成本和维护方便性,。

2.版本统一化  是指当项目在多个地方实施时,版本尽量统一,减少技术支持难度。

3.兼顾扩展性和兼容性。

 

 

原创粉丝点击