數據倉庫概念


數倉是一個面向主題的、集成的、穩定的、時變的,存儲歷史數據的倉庫。

面向主題的:數倉中的數據按照主題進行存儲,每個主題都是決策層分析的一個角度;

集成的:不同來源的數據會統一整合后存入數倉中;

穩定的:數據一旦進入倉庫后不會輕易發生改變,就算數據本身需要變化也輕易不會改動原數據,會根據分析需求考慮數據的更新策略;

時變的:隨着時間的推移,長時間不更新的數據會逐漸失去時效性,失去時效性的數據一般會被導出到外部壓縮存儲。目前常用的策略是"7年13個月",即保存維度信息的拉鏈表不保存七年前的數據,保存流水信息的事實表不保存13個月前的數據。

當然,上述保存策略也是根據情況決定,利用價值較低的原始數據可能只保存一個周期就被導出,高度聚合的數據可能保存更長的時間。

數倉分層

數倉往往分為三層,ods、dw、dm,而dw層又可以根據業務細分為dwd、dws、dwa等多層

ods層

操作型數據層,存放的是從不同來源進入數倉的原始數據,ods層往往只存放少量加工的原始數據,因此這里的數據不是集成的。

dw層

數據倉庫的核心,它根據數倉架構可能再次細分多層:

dwd層

數據細節層。將ods層的數據統一整合后,依照各主題需要將數據拆分存儲,常見的星型模型和雪花模型就是在這一層。

 dws層

數據服務層。按照范式存儲的數據在分析時往往需要進行多表join,這樣的分析效率很低,因此需要將dwd層的數據按照分析需求提前進行整合。由於主題之間的重合,該層的設計是反三范式的,存在數據冗余。

除了上述分層以外,dw還有基礎數據層、輕度匯總層等等,根據數倉架構而定。

DIM層

維度層。有些數倉會將dwd層中的維度表單獨抽離出來維護。

dm層

存放使用DW層數據進行業務統計的結果,它們可能被用於線上可視化的指標分析,也可能用於進一步的數據挖掘使用。

分層作用:復雜問題簡單化、減少重復計算、血緣追蹤、架構更清晰。

表的種類和特征

事務事實表:可以看做是保存某一事務的日志數據,事務一旦被提交就成為歷史數據,只能以增量的方式維護。

維度表:從某個角度觀察事實數據的窗口,存儲的數據用來從某個角度描述事實。

全量表:保存每天所有的最新狀態的數據

增量表:當數據改變時,將這個改變和改變后的結果記錄下來,就是增量表。(a賬戶分兩次存了100塊,增量表顯示為a賬戶金額100,200,並分別記錄變化時間)

拉鏈表:用特定字段維護緩慢變化維度的表

流水表:記錄表中所有改變的表。

周期快照表:按固定周期對事實表進行統計生成的表,按時間段保存記錄,增量更新。

累積快照表:按過程對事實表進行統計生成的表,將每個事務切分成多個小事務,明確開始和結束的狀態,每個小事務只保存一條結果。

拉鏈表如何實現

使用SCD策略維護特定字段實現。SCD1:不保存歷史數據,直接覆蓋更新SCD2:通過維護一個記錄時間和一個過期時間來保存變化歷史,增量更新SCD3:通過維護一個歷史字段來保存上次的數據,更新數據時,先檢查舊數據是否存在,如果存在就把舊數據的最新值保存到新數據的舊值字段,采用覆蓋更新的方式存儲數據。SCD4:單獨建立一個歷史維度表為該字段維護歷史變化。SCD5:混合使用123的維護策略。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM