做数据仓库系统,ETL 是关键的一环
说大了,ETL 是数据整合解决方案,说小了,就是导数据的工具
回忆一下工作这么些年来,处理数据迁移、转换的工作倒还真的不少
但是那些工作基本上是一次性工作或者很小数据量,使用 access、DTS 或是自己编个小程序搞定
可是在数据仓库系统中,ETL 上升到了一定的理论高度,和原来小打小闹的工具使用不同了
究竟什么不同,从名字上就可以看到,人家已经将倒数据的过程分成 3 个步骤,E、T、L 分别代表抽取、转换和装载
其实 ETL 过程就是数据流动的过程,从不同的数据源流向不同的目标数据
但在数据仓库中,ETL有几个特点,一是数据同步,它不是一次性倒完数据就拉到,它是经常性的活动,按照固定周期运行的,甚至现在还有人提出了实时ETL 的概念
二是数据量,一般都是巨大的,值得你将数据流动的过程拆分成 E、T 和 L
现在有很多成熟的工具提供ETL 功能,例如datastage、pow ermart 等,且不说他们的好坏
从应用角度来说,ETL 的过程其实不是非常复杂,这些工具给数据仓库工程带来很大的便利性,特别是开发的便利和维护的便利
但另一方面,开发人员容易迷失在这些工具中
举个例子,VB 是一种非常简单的语言并且也是非常易用的编程工具,上手特别快,但是真正VB 的高手有多少
微软设计的产品通常有个原则是“将使用者当作傻瓜”,在这个原则下,微软的东西确实非常好用,但是对于开发者,如果你自己也将自己当作傻瓜,那就真的傻了
ETL 工具也是一样,这些工具为我们提供图形化界面,让我们将主要的精力放在规则上,以期提高开发效率
从使用效果来说,确实使用这些工具能够非常快速地构建一个 job 来处理某个数据,不过从整体来看,并不见得他的整体效率会高多少
问题主要不是出在工具上,而是在设计、开发人员上
他们迷失在工具中,没有去探求 ETL 的本质