第一次接触Informatica, 还是在大学的时候,当时有一个学长,问我想不想报BI的培训班,他有靠谱的资源。当时的我和现在是一样的,对一切新鲜的事物都充满好奇的,就有点‘稀里糊涂’的答应了。当晚给父母打电话,要了第一笔培训费。就这样开始了BI的学习路程。第一门课是DW,当时SQL其实自己还只是一个入门的水平,虽然可能比同学好一些,但现在看来仍然是弱爆了。DW更多学习的是原理和设计的方法,而不是写SQL。毕竟是中国教育培养出来的孩子,学理论嘛,超快,何况这东西也很有趣。于是,依靠兴趣又读完了,Inmon的《数据仓库》,国内几个老师编写《数据仓库与数据挖掘》。跑题了,第二门课就是Informatica了,本身因为informatica就是一个工具所以这门课相当于就是实践课了。从老师拿搞到licence, 自己就可以在里面‘无情’操作了。你可以想象一下,一个长期只学理论的人,突然有一个东西是可以上手操作的了。得有多兴奋啊。于是,反复看老师的录频,PPT。反复的做练习。截至毕业的时候,informatica的技术也算能抵个1-2年工作经验的人了。第三门课是BO,不是本文重点,就不赘述了。
后来,工作直接走的社招渠道,面的一年经验Informatica的ETL工程师岗位。一共面试了2次,因为是同一家公司,不同的部门,所以面试是分开的。 第一次,两个女生面试我,我记得很清楚。虽然JD写了Informatica,但是相关的什么也没问,一个劲的问我各种SQL 问题,还让我当场写存储过程。当然,一个劲看DW理论,练习informatica的人怎么会SQL 很好呢。是的,我被问住了。回去很受打击,恶补了几周SQL,于是有了第二次面试,我投了另一个部门的相同岗位,二面果然问SQL 了,还算比较顺利的通过了吧,毕竟不是一个长期学习的实力。三面是老板面试,老板本身是做技术出身,所以问了很多技术问题。终于! 有人问我Informatica的问题了。几个informatica的问题,得心应手。老板见状开始提升难度了,开始问我调优相关的问题了。因为有充分的准备,当然也不在话下,都回答上了。这一次很快,第二天就通知过了然后谈‘钱’了。后面,进到项目组后,一直就这样专职做Informatica相关的项目,做了2年。还有,那3个没有问我Informatcia的同事,我也去了解了一下,是的,他们并不会Informatica。甚至,入职后组里带我的人,自己都说:“我informatica还不如这个小伙子。”。
其实,当时我并不知道自己有多厉害,实力是怎样。一个“学了很多,却总觉得缺点什么”的感觉吧。于是,出于“填补内心的空缺”的目的买下了这一本《Informatica PowerCenter 权威指南》。当时,已经很多东西已经学到烂熟于心,这本书读的飞快,很快就读完了。当然,也收获了很多以前不知道的东西。
现在,因为工作项目变动的原因,有一年多没有碰过Informatica了。最近有点时间,打算拿出重新读一下。看看有一定经验积累的我是否能读出技术以外其他的东西来。
重读之前,也上淘宝搜了一下,市场上除了这本书仍然没有其他相关的书籍。是的。我本来的想法是看看有没有新的再买本新的,认识一下新的东西。既然没有,那么重读一遍吧。
以下是忘记或者以前忽略的地方:
规范:
1.命名规则遵守 informatica velocity methodology 的官方命名规范建议
2.为了预防源的重复定义,建议项目组在客户端使用统一的ODBC命名规范。
3.对于Designer 和Workflow manager的公用属性,在项目中最好有个规范文档,说明这些属性应该设置的位置及修改顺序建议。 (深刻体会,自己在项目中遇到过很多同一个属性被不同层级override,一旦出现问题Debug的时候排查带来不必要的麻烦。)
数据源:导入时驱动区别可能会导致字段的数据类型发生变化与源数据库中的定义不一致。如:varchar 变nvarchar. 不同Informatica版本可能需要用不同的驱动。
优化:
1.表达式中如果有相同的计算、判断、或者公式。应该做成变量减少计算量,达到优化的目的。
2.source组件中编辑SQL减少抽取的数据量,达到减少源数据库的负担和PowerCenter负担的目的。
3.同样原理,先SQL排序,SQL去重。也能在一定情况,达到性能优化的目的。
4.理解熟悉各类数据库,对你在source组件中写什么的SQL 会有很帮助。比如,SQLServer, 如果源数据库上你抽取表有索引,但优化器没有用到正确的索引来安排执行计划,你是可以通过指定使用索引来达到优化抽取速度的效果的。
5.关于sorted joiner,大多数时候相当于没有排序的join可以提升性能,但是在使用partition的时候,可能会造成性能下降。
6.同样的,如果你熟悉数据库的JOIN原理或者算法的话,你发现PowerCenter使用的join算法其实是和数据库类似的,merge 或者nested-loop算法。也就瞬间理解,为什么排序后的JOIN会更快了。
这次阅读主要的收获还是在后面几个章节,确实当拥有一些使用经验或者行业经验以后再来看,以前选择跳过或者根本看不明白的地方就成为了新的收获。当然,仍然还有不能看懂的地方。也许还会读第三遍吧。
主要收获的内容,稍后更新。待续
