更加可操作的方法论应该是:1. 绘制出每个主题的ETL流程控制模型,使用图形化文档解释每个主题的ETL到底需要哪些控制、不同工作流之间的调度关系、schedual、日志管理、如何发邮件/短信通知2. 数据模型管理每个ETL各层级的思想,比如Informatica的workflow、session/tasks、...
显示全部更加可操作的方法论应该是:
1. 绘制出每个主题的ETL流程控制模型,使用图形化文档解释每个主题的ETL到底需要哪些控制、不同工作流之间的调度关系、schedual、日志管理、如何发邮件/短信通知
2. 数据模型管理每个ETL各层级的思想,比如Informatica的workflow、session/tasks、mapping,例每个workflow想使用几条线并发运行,是否有控制task,是否有时间task等等。session的话,每个session是否partition、是否全量等等,每个mapping是控制的重点,因为开发的开发量大部分都在这里,每个mapping可将每个SQ的过滤条件全放模型里控制,每个mapping用到了哪些组件?还可以将update策略、Join组件关联策略、lookup策略等等信息集成到管理模型里。
这种ETL过程管理数据模型最大的好处就是大批量开发的时候可及时发现问题、可分析、可调用(比如SQ过滤条件全从过程模型里调用),经验丰富的人,一看分析数据,就可以大致判断出某ETLmapping是否范了较大的错误,当然细节问题是发现不了的,需要去看具体开发逻辑。
3. 复杂ETL过程模型,比如固定规律的数据刷新,需要先对某些数据清理掉,然后再汇总插入,就需要ETL过程模型辅助(如果刷新使用update else insert可能会非常慢)、复杂条件的生成,如1楼提到的时间判断模型,如果对多个复杂模型汇总的话,可以升级成为局部通用的ETL过程数据模型,ETL过程的精华将在模型里,你只需要关联模型即可,而非想尽办法写程序,最后弄得10个开发人员10个逻辑方式。
大规模开发的重点一直在于方便控制、方便查看思路、方便维护,即便是国际大团队,也能真正做到。我计划写一个完整的高可实现方案在我日益壮大的团队中实践,从自我开始跟随ETL过程模型开发,成熟的时候我想是可以推广的,不同的工具,只要修修改改一下即可使用,这套模型思路绝不能太依赖具体的工具而定。
过程模型同时也是ETL设计思想的实例化过程,绝不会为开发增加负担。
至于业务逻辑是否让业务人员定,可以将过程模型中具体的过滤数据、逻辑数据给出接口给相应的维护人员维护,其他属于技术数据,应技术团队管理。就目前元数据管理工具中的元数据来看,可能无法满足细节管理的需求,如果能满足需求,那么第二部分的工作可以省略掉,工具的数据可能更专业。
收起