这次在武汉用的ETL工具是oracle的owb,owb中用来设计ETL流程的就是刘兄提到的"控制流程图"和"数据流程图",但是在我们使用的过程中虽然在开始设计的时候这两种流程图都用到了,但是最后为了ETL过程中优化性能,把owb生成的代码改的面目全非。现在的结果是虽然性能提高了,但是如果库表结构修改了,库表之间的关联关系修改了,都要手工修改代码,owb工具中的"数据流程图"一点用都没有。不知各位有没有遇到过这样的情况?ETL工具可以生成代码,但是为了优化的要求(或者其他因素)不得不手工修改这些代码,元数据管理的功能就失效了。
======= 2005-11-21 18:02:00 您在来信中写道:=======
>突然发现常见的ETL工具,如Datastage,Informatica的流程处理部分都有一个特点,都是去控制ETL过程的。例如前者流程图中的每个节点是Job、命令行或是异常处理,而后者的节点是session、worklet等,他们的节点都是"过程"。而其箭头连线表示的是控制转换,过程执行的顺序,并行还是串行。一个节点指向另一个节点,意味着,当头一个节点运行结束,或者到某种状态时,执行后一个节点。
> 这种流程图的好处是对ETL过程了如指掌,我们可以叫他做"控制流程图"。
>
>然而,还有一种流程,也是和ETL紧密相关的。但关注的并非主要是处理过程,而是数据之间的依赖关系。例如想知道有一个A表,有多少其他的数据集基于它汇总、转换的呢?从控制流程图上看不到这种信息,因此,还需要一种"数据流程图"。
>
>这种流程图的节点是整个ETL过程中所有出现的数据集,可以是数据文件、库表、视图、Hash文件等。其连线箭头,表示一种依赖关系,A指向B,表示B的数据全部或部分出于A。数据流程图绘制出来,有个好处,能够帮助优化ETL过程,从一个节点出去的箭头密集,或者如一个节点的箭头密集,这都是关键部位,是需要优化的地方。
> 其实这种数据依赖关系的信息,大多见于元数据管理的讨论中。然而从使用的角度,ETL设计者确实需要这样的数据流程视图。
> 当然,数据的依赖关系还可以用来做数据血统分析、变更影响分析等,由此也证明一个观点——元数据本身没什么用,只有用起来才有用。
= = = = = = = = = = = = = = = = = = = =
致
礼!
happy
xinin...@prient.com
2005-12-27