成熟的ETL工具都是相类似的,都是在相互借鉴中不断的完善的结果.
简单的总结一下:
Ø元数据管理,不管通过DBMS进行存储也好,通过XML或者自己的管理系统也好.元数据的管理是必须的,提供了一个可视化的数据字典.
Ø和配置工具的集成,或者内置一个配置库管理工具.
Ø项目化管理和集成环境,统一对系统内的工作流和任务进行管理
Ø任务包中都包含源数据,目标数据的管理,其中也包括关系数据库,平面文件,XML文件,WebService,COBOL等文件的管理
Ø任务包中提供了一系列的排序,转换,合并,连接,过滤,聚合,查找表,复制,分裂,条件分割等等一些通用的数据转换.
Ø数据流架构和流水线即工作流管理,几乎所有的ETL工具都是根据时序进行任务流的处理,这也符合数据仓库的过程化处理要求.其中包括错误处理方式,错误报表,并行处理,时序等待等等.
Ø可伸缩硬件环境支持,最大限度的利用硬件的支持.
Ø并行支持,发挥DBMS的优势,或者通过内置的内存管理进行处理.
不过我有些怀疑ETL的功效,据权威人士统计80%的时间和IO消耗是集中在ETL的抽取和加载环节,而抽取和加载的速度是由DBMS或者其他数据源所决定的,也就是说无论怎么优化,ETL工具的优化也只有20%的余地.有个玩笑:ETL工具执行的效率肯定比不上最好的程序员写的代码的效率,但是起码要比最差的程序员写的代码要强.