ETL过程---留念2011年的点滴(三)
来源:互联网 发布:idc数据 研究院 编辑:程序博客网 时间:2024/05/24 06:51
ETL过程,是使用ETL工具去解决实际具体的项目中的问题的一个实施过程(当然,如果不想用ETL工具,也称为ETL过程)。具体怎么实施,就不在这重复了。
这里就说一下作业如果有效的组织。
在经分系统中,多则上千个作业,少则数十个作业,对这些作业如何组织起来,实现预期的目的,是ETL实施中的一个关键性的问题。
前人的经验告诉我们,对于数量众多的东西,分而治之是行之有效的方法。方法有了,那么该如何分呢?如何治呢?
组织作业的办法:
1.按模块进行分类。 就是通常说的主题,主要是为了确保业务上的完整性。
如财务,三户关系、产品,都可以单独分开, 定义作业编码的1-2位,表示对应模块
财务:10 三户关系: 11 产品: 12
2.按功能进行分类。 就是按照先后步骤,有利于数据分层。
如抽取作业、加载作业、转换作业, 定义作业编码3-4位表示对应的功能
抽取作业: 21 加载作业: 31 转换作业 41
那么我们看到作业的前四位编码是 1041 ,就可以立即知道,这是财务模块中的转换作业
把作业分类好,只是有序的工作中的第一步,接下来要考虑这些作业组织到一起的时间效率,这些作业重开始节点到结束节点,运行完,需要多少时间?3个小时、5个小时、10个小时,都有可能。我们需要控制这些时间,是我们工作进度的重要保证和有序运行。
假如有个欠费表,里面有所有的历史欠费记录,记录条数2.5亿条,导出成数据后文件大小为13个G,操作系统限制文件大小最大不能超过2G,
现在需要抽取这个表的数据,加载到新的数据仓库表中,时间控制在30分钟内 ,该如何处理呢?
1.第一个想法,配置一个单独的作业把欠费表数据直接导出,纪录一下导出时间,能在30分钟内导出就ok了。 可能你会发现,此法行不通。
2.第二个想法,配置一个单独的作业,把欠费表中当月的欠费纪录导出,纪录一下导出时间,如果在10分钟内导出完成就有可行性。
3.第三个想法,配置一个单独的作业,把欠费表中某个地市的欠费纪录导出,纪录一下导出时间,如果在3分钟内导出完成就有可行性。
上面说的2和3,都是一个可行的方法,具体到实际情况,就是要确认欠费表,有没有分区?以哪个字段分区? 有没有建索引?在哪个字段建了索引?
假设考虑到上面的情况,我们用了5个作业并行抽取欠费表,在30分钟内完成了。就还需要为这5个作业配置相应的触发依赖关系。
到这还没有结束,还要考虑,当5个作业运行时,4个作业正确了,1个作业报错了,这个处理的方法和步骤是什么?都应该在这个时候确定好,利于后续的维护工作。
这些算完了? 没有,还有最后一步,编写相应的文档,文档内容尽量详细,每个关键点都要说清楚,不能产生歧义。首次编写肯定感觉很麻烦,要坚持,文档是一切的基础,是产出投入比很高的一个工序,当数据库拓机时,我第一个想的是组织作业的文档在什么地方,而不是数据库什么时候能启起来。
可能有人说,我现在系统中只有几十个作业,是不是就可以不采用分而治之的方法了,因为采用这个方法会增加实施的复杂度。
我的回答是,如果一个人能维护过来,你就可以不需要给自己添麻烦了。如果系统维护超过两个人,还是采取这个方法吧,不然的话,有人会骂娘的。
- ETL过程---留念2011年的点滴(三)
- ETL工具---留念2011年的点滴(二)
- 商业智能概述---留念2011年的点滴(一)
- ETL的安装验收过程
- ETL的四个基本过程.
- 关于ETL过程(1)
- 关于ETL过程(2)
- 关于ETL过程(3)
- 关于使用ETL工具Kettle的简单介绍(三)
- ETL(三)
- Android点滴(三)
- 学习点滴(三)
- 注册登录过程点滴(三):解决MVC3中使用Ajax.BeginForm会重复提交数据的问题
- ETL的过程原理和数据仓库建设
- 浅析ETL过程的四步
- ETL的过程原理和数据仓库建设
- ETL的过程原理和数据仓库建设
- ETL(Extract、Transform、Load )实现过程
- 服务器网络模型(4)---网络框架模型
- 关于 log4j.additivity的说明
- 算法导论代码 第22章 图的基本算法
- Java文件读写操作大全
- Mac中显示隐藏文件
- ETL过程---留念2011年的点滴(三)
- 如何用rose 2003反向生成UML图
- FPGA专区--------------4. simulink 中代数环的问题
- Zip解压库 zlibwrap
- atoi atof源码
- php运行时不显示错误信息?
- 算法导论代码 第23章 最小生成树
- Android中解析JSON(一)
- MFC总结(一):MFC中文件操作、查找与选择总结(3)