关于数据事实表汇总的模拟实现——原理
2009-10-15 09:38
239 查看
原创于2007年01月08日,2009年10月15日迁移至此。
在数据仓库中通常会存储双重粒度级别的数据来满足不同的需要,轻度综合数据和原始数据,在原始数据层面上可以访问细节数据,而在分析层面则访问轻度综合数据。
原始数据因为存储了基本上原封不动的数据,导致系统存储压力增大,同时也造成查询使系统性能的下降;而轻度综合数据由于数据进行压缩更为简洁,通常情况下对数据仓库的访问
95%以上都是通过轻度综合数据访问来进行的。
数据增量聚合的实现和增量抽取类似,都是尽量以时间戳的方式,尽量减少每次事务的开销。
下面开始对基于时间戳的数据增量聚合进行系统设计:
1、
首先需要定义一张数据字典表,定义需要进行处理的任务,其中主要包括任务名称,任务描述,本次聚合开始时间、结束时间、当前时间、执行的系统时间,状态,最大时限等等。
2、
有了这张字典表就可以开始进行工作了,为了方便表达,暂时处理成伪代码形式,同时只以一个表的处理为例。
1、获取上次处理的恶最后时间,状态和取消情况
2、如果取消状态,则直接退出
3、判断是否存在该任务
4、如果没有,则新增,如果存在更新当前状态为运行
5、获取本次任务开始时间和结束时间
6、并根据系统表中的最大处理时限和时间间隔进行截取时间
7、根据控制事务处理大小的粒度,进行循环抽取
8、
INSERT INTO t_fact_table(TargetFieldList)
SELECT SourceFieldList
FROM t_org_table
WHERE logdate> BeginDate
AND logdate<
BeginDate+粒度
9、并同步进行时间和状态的更新
在数据仓库中通常会存储双重粒度级别的数据来满足不同的需要,轻度综合数据和原始数据,在原始数据层面上可以访问细节数据,而在分析层面则访问轻度综合数据。
原始数据因为存储了基本上原封不动的数据,导致系统存储压力增大,同时也造成查询使系统性能的下降;而轻度综合数据由于数据进行压缩更为简洁,通常情况下对数据仓库的访问
95%以上都是通过轻度综合数据访问来进行的。
数据增量聚合的实现和增量抽取类似,都是尽量以时间戳的方式,尽量减少每次事务的开销。
下面开始对基于时间戳的数据增量聚合进行系统设计:
1、
首先需要定义一张数据字典表,定义需要进行处理的任务,其中主要包括任务名称,任务描述,本次聚合开始时间、结束时间、当前时间、执行的系统时间,状态,最大时限等等。
序号 | 字段名称 | 字段描述 | 字段类型 | 备注 |
1 | factProcName | 任务名称 | Varchar(40) | |
2 | factDesc | 任务描述 | Varchar(100) | |
3 | factType | 任务类型 | INT | |
4 | LastLogTime | 当前处理时间 | Datetime | |
5 | BeginTime | 本次任务开始时间 | Datetime | |
6 | EndTime | 本次任务结束时间 | Datetime | |
7 | Status | 本次任务执行情况 | Varchar(20) | FINSHED RUNNING EXCEPTION |
8 | LogLimit | 本次任务处理最大时限 | Int | |
9 | Step | 本次任务处理距离当前时间最大间隔 | Int | |
10 | CancelFlag | 取消标志 | Int | 1,取消 0,正常 |
11 | CurTime | 本次任务执行的系统时间 | Datetime |
有了这张字典表就可以开始进行工作了,为了方便表达,暂时处理成伪代码形式,同时只以一个表的处理为例。
1、获取上次处理的恶最后时间,状态和取消情况
2、如果取消状态,则直接退出
3、判断是否存在该任务
4、如果没有,则新增,如果存在更新当前状态为运行
5、获取本次任务开始时间和结束时间
6、并根据系统表中的最大处理时限和时间间隔进行截取时间
7、根据控制事务处理大小的粒度,进行循环抽取
8、
INSERT INTO t_fact_table(TargetFieldList)
SELECT SourceFieldList
FROM t_org_table
WHERE logdate> BeginDate
AND logdate<
BeginDate+粒度
9、并同步进行时间和状态的更新
相关文章推荐
- 关于数据事实表汇总的模拟实现——原理
- 关于数据事实表汇总的模拟实现——脚本实现
- 关于数据事实表汇总的模拟实现——脚本实现
- 关于数据增量抽取的模拟实现——原理
- 关于数据增量抽取的模拟实现——原理
- 关于数据增量抽取的模拟实现——原理
- jQuery的实现原理的模拟代码 -2 数据部分
- 关于数据增量抽取的模拟实现——脚本实现
- 关于数据增量抽取的模拟实现——脚本实现
- jQuery的实现原理的模拟代码 -2 数据部分
- vue.js双向数据绑定原理解析及模拟demo的实现
- 数据挖掘:K-Means算法的原理与Python实现
- 关于字符串比较的一点讨论---strcmp与memcmp的效率及实现原理
- Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构
- 关于双控阵列的实现原理的讨论
- 关于set的底层实现原理部分介绍及使用 hashcode和equals 使用
- 浅析VUE双向绑定原理,实现数据监听并通知订阅者
- (转)Python-详解抓取网站,模拟登陆,抓取动态网页的原理和实现