
累計(jì)快照事實(shí)表的主要用于研究事件之間時(shí)間間隔,當(dāng)然并不僅限于此,還有一些特殊用途,可以在實(shí)際工作中靈活運(yùn)用。
設(shè)計(jì)特點(diǎn)
1)數(shù)據(jù)不斷更新:不同于前面說的兩種事實(shí)表,累計(jì)快照事實(shí)表中的數(shù)據(jù)實(shí)例會(huì)定期更新。


累積快照事實(shí)表
如上圖所示多事務(wù)事實(shí)表中一條交易記錄會(huì)每天有一條數(shù)據(jù)來記錄整個(gè)交易過程;而累積快照事實(shí)表只會(huì)有一條記錄,數(shù)據(jù)會(huì)一致更新直到過程結(jié)束。
2)適用于業(yè)務(wù)過程有明確的起止時(shí)間的短生命周期場(chǎng)景,如交易訂單、物流訂單。長(zhǎng)生命周期的實(shí)體記錄完全可以由周期快照表實(shí)現(xiàn),如商品、用戶。
3)業(yè)務(wù)的流程不是只有一種,如交易流程可能是
① 下單、支付、發(fā)貨、確認(rèn)
② 下單、關(guān)閉訂單
③? 。。。
對(duì)于不同過程,要設(shè)計(jì)統(tǒng)一的結(jié)束標(biāo)志,沒有的業(yè)務(wù)時(shí)間置空


樣例設(shè)計(jì)

有時(shí)需要將每個(gè)過程時(shí)間間隔作為事實(shí)放在表中,如下單到支付時(shí)間間隔、支付到發(fā)貨時(shí)間間隔、發(fā)貨到確認(rèn)時(shí)間間隔,方便下游直接使用
物理實(shí)現(xiàn)
1)全量表:一般是日分區(qū),每天存儲(chǔ)前一天的全量數(shù)據(jù)和當(dāng)天增量數(shù)據(jù)進(jìn)行合并,保證每條數(shù)據(jù)的最新狀態(tài),此方式適用于數(shù)據(jù)量不大的情況
2)全量變化表:累積事實(shí)表用于保存生命周期短的實(shí)例,所以可以根據(jù)業(yè)務(wù)實(shí)體從開始到結(jié)束的最大時(shí)間間隔,如交易業(yè)務(wù)最大時(shí)間跨度200天,每天保存的是過去200天的全量數(shù)據(jù),200天之前的數(shù)據(jù)存儲(chǔ)在歸檔表中。適用于數(shù)據(jù)量大的場(chǎng)景
3)以業(yè)務(wù)結(jié)束時(shí)間分區(qū):每天分區(qū)中存放的是當(dāng)天結(jié)束的業(yè)務(wù),然后用一個(gè)非常大的分區(qū)(如 3000-12-31)保存所有至今未結(jié)束的記錄,這種方式不會(huì)浪費(fèi)存儲(chǔ)資源