这是最好的时代,这是最坏的时代,这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;这是希望之春,这是失望之冬;人们面前有着各样事物,人们面前一无所有;人们正在直登天堂;人们正在直下地狱。 我也要与时俱进了,被itpub2.0牵着尾巴,拼命的奔跑,不停的灌水...

关于数据事实表汇总的模拟实现——原理

上一篇 / 下一篇  2008-02-14 22:07:11 / 个人分类:数据仓库专区

在数据仓库中通常会存储双重粒度级别的数据来满足不同的需要,轻度综合数据和原始数据,在原始数据层面上可以访问细节数据,而在分析层面则访问轻度综合数据。ITPUB个人空间X:cSu]y{&_

e0F!|ad,HM ^0

原始数据因为存储了基本上原封不动的数据,导致系统存储压力增大,同时也造成查询使系统性能的下降;而轻度综合数据由于数据进行压缩更为简洁,通常情况下对数据仓库的访问95%以上都是通过轻度综合数据访问来进行的。

数据增量聚合的实现和增量抽取类似,都是尽量以时间戳的方式,尽量减少每次事务的开销。

增量聚合
#X#AvKq?b0

下面开始对基于时间戳的数据增量聚合进行系统设计:

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

2、有了这张字典表就可以开始进行工作了,为了方便表达,暂时处理成伪代码形式,同时只以一个表的处理为例。

1、获取上次处理的恶最后时间,状态和取消情况

2、如果取消状态,则直接退出

3、判断是否存在该任务

4、如果没有,则新增,如果存在更新当前状态为运行

5、获取本次任务开始时间和结束时间

6、并根据系统表中的最大处理时限和时间间隔进行截取时间

7、根据控制事务处理大小的粒度,进行循环抽取

8INSERT INTO t_fact_table(TargetFieldList)

SELECT SourceFieldList FROM t_org_table

WHERE logdate> BeginDate

AND logdate< BeginDate+粒度

9、并同步进行时间和状态的更新


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-07-20  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 18333
  • 日志数: 62
  • 建立时间: 2007-12-07
  • 更新时间: 2008-07-17

RSS订阅

Open Toolbar