`
lexloo
  • 浏览: 14977 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论
阅读更多
通常认为ETL就是数据抽取,转换,加载的过程,完全正确.就像数据库就是存储和管理数据的工具一样,然而数据库并不全部是数据的存储,最重要的是管理,即数据的并发性一致性可恢复性管理,包括一系列的进程和内存的管理等等.ETL工具本身也是同样的问题.如果只是抽取转换加载,相信通过PowerBuilder的数据管道技术并加以封装或者一系列的语言工具编码可以做到,并非很难的事情.
之所以思考,是因为阅读了一下<DataStage企业版产品白皮书>,当然也只是粗略的看了一下,其实所有成熟的ETL工具都是相类似的,都是在相互借鉴中不断的完善的结果.
简单的总结一下:
Ø元数据管理,不管通过DBMS进行存储也好,通过XML或者自己的管理系统也好.元数据的管理是必须的,提供了一个可视化的数据字典.
Ø和配置工具的集成,或者内置一个配置库管理工具.
Ø项目化管理和集成环境,统一对系统内的工作流和任务进行管理
Ø任务包中都包含源数据,目标数据的管理,其中也包括关系数据库,平面文件,XML文件,WebService,COBOL等文件的管理
Ø任务包中提供了一系列的排序,转换,合并,连接,过滤,聚合,查找表,复制,分裂,条件分割等等一些通用的数据转换.
Ø数据流架构和流水线即工作流管理,几乎所有的ETL工具都是根据时序进行任务流的处理,这也符合数据仓库的过程化处理要求.其中包括错误处理方式,错误报表,并行处理,时序等待等等.
Ø可伸缩硬件环境支持,最大限度的利用硬件的支持.
Ø并行支持,发挥DBMS的优势,或者通过内置的内存管理进行处理.
不过我有些怀疑ETL的功效,据权威人士统计80%的时间和IO消耗是集中在ETL的抽取和加载环节,而抽取和加载的速度是由DBMS或者其他数据源所决定的,也就是说无论怎么优化,ETL工具的优化也只有20%的余地.有个玩笑:ETL工具执行的效率肯定比不上最好的程序员写的代码的效率,但是起码要比最差的程序员写的代码要强.
也许ETL工具本身就是一个管理的平台,它的意义在于屏蔽底层编码的细节和异构数据源,通过图形化的方式实现数据流程的调度,从而提供开发和管理上的效率,而并非程序执行效率.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics