09 : 09 ETL 的考虑
做数据仓库系统,ETL 是关键的一环。说大了,ETL 是数据整合解决方案,说小了,
就是倒数据的工具。回忆一下工作这么些年来,处理数据迁移、转换的工作倒还真的
不少。但是那些工作基本上是一次性工作或者很小数据量,使用 access、DTS 或是
自己编个小程序搞定。可是在数据仓库系统中,ETL 上升到了一定的理论高度,和原
来小打小闹的工具使用不同了。究竟什么不同,从名字上就可以看到,人家已经将倒
数据的过程分成 3 个步骤,E、T、L 分别代表抽取、转换和装载。
其实 ETL 过程就是数据流动的过程,从不同的数据源流向不同的目标数据。但在数据
仓库中,ETL 有几个特点,一是数据同步,它不是一次性倒完数据就拉到,它是经常
性的活动,按照固定周期运行的,甚至现在还有人提出了实时 ETL 的概念。二是数据
量,一般都是巨大的,值得你将数据流动的过程拆分成 E、T 和 L。
现在有很多成熟的工具提供 ETL 功能,例如 datastage、powermart 等,且不说他
们的好坏。从应用角度来说,ETL 的过程其实不是非常复杂,这些工具给数据仓库工
程带来和很大的便利性,特别是开发的便利和维护的便利。但另一方面,开发人员容
易迷失在这些工具中。举个例子,VB 是一种非常简单的语言并且也是非常易用的编
程工具,上手特别快,但是真正 VB 的高手有多少?微软设计的产品通常有个原则是
“将使用者当作傻瓜”,在这个原则下,微软的东西确实非常好用,但是对于开发者,
如果你自己也将自己当作傻瓜,那就真的傻了。ETL 工具也是一样,这些工具为我们
提供图形化界面,让我们将主要的精力放在规则上,以期提高开发效率。从使用效果
来说,确实使用这些工具能够非常快速地构建一个 job 来处理某个数据,不过从整体
来看,并不见得他的整体效率会高多少。问题主要不是出在工具上,而是在设计、开
发人员上。他们迷失在工具中,没有去探求 ETL 的本质。
可以说这些工具应用了这么长时间,在这么多项目、环境中应用,它必然有它成功之
处,它必定体现了 ETL 的本质。如果我们不透过表面这些工具的简单使用去看它背后
蕴涵的思想,最终我们作出来的东西也就是一个个独立的 job,将他们整合起来仍然
有巨大的工作量。大家都知道“理论与实践相结合”,如果在一个领域有所超越,必须
要在理论水平上达到一定的高度
09 : 26 探求 ETL 本质之一
ETL 的过程就是数据流动的过程,从不同异构数据源流向统一的目标数据。其间,数据的
抽取、清洗、转换和装载形成串行或并行的过程。ETL 的核心还是在于 T 这个过程,也就
是转换,而抽取和装载一般可以作为转换的输入和输出,或者,它们作为一个单独的部件,
其 复 杂 度 没 有 转 换 部 件 高 。 和 OLTP 系 统 中 不 同 , 那 里 充 满 这 单 条 记 录 的
insert、update 和 select 等操作,ETL 过程一般都是批量操作,例如它的装载多采用批
量装载工具,一般都是 DBMS 系统自身附带的工具,例如 Oracle SQLLoader 和 DB2 的
autoloader 等。
!
ETL 本身有一些特点,在一些工具中都有体现,下面以 datastage 和 powermart 举例
来说。
评论3