关于数据事实表汇总的模拟实现——原理
生活随笔
收集整理的這篇文章主要介紹了
关于数据事实表汇总的模拟实现——原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? 在數據倉庫中通常會存儲雙重粒度級別的數據來滿足不同的需要,輕度綜合數據和原始數據,在原始數據層面上可以訪問細節數據,而在分析層面則訪問輕度綜合數據。
原始數據因為存儲了基本上原封不動的數據,導致系統存儲壓力增大,同時也造成查詢使系統性能的下降;而輕度綜合數據由于數據進行壓縮更為簡潔,通常情況下對數據倉庫的訪問 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?
?
? 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?
?
? 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、并同步進行時間和狀態的更新 ?
轉載于:https://blog.51cto.com/baoqiangwang/309772
總結
以上是生活随笔為你收集整理的关于数据事实表汇总的模拟实现——原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 回《笔试常见的“阶乘”编程题,你写对了么
- 下一篇: 身体器官工作表一览,别熬夜