[原創]-數據倉庫維度建模

概述

在數據建模過程當中,最簡單的描述就是按照事實表、維度表來構建數據倉庫、數據集市。在維度建模方法體系中,維度是描述事實的角度,如日期、客戶、供應商等,事實是要度量的指標,如客戶數、銷售額等。web

維度建模還會分爲星型模型、雪花模型等,各有優缺點,但不多直接回答一個問題,也就是數據倉庫爲何要採用維度建模? 維度模型是數據倉庫領域大師Ralph Kimball 所倡導,他的《[數據倉庫工具箱]》,是數據倉庫工程領域最流行的數倉建模經典。維度建模以分析決策的需求出發構建模型,構建的數據模型爲分析需求服務,所以它重點解決用戶如何更快速完成分析需求,同時還有較好的大規模複雜查詢的響應性能。算法

星型模型與OLAP多維數據庫sql


爲何要進行數據建模

  1. 進行全面的業務梳理,改進業務流程。

在業務模型建設的階段,可以幫助咱們的企業或者是管理機關對本單位的業務進行全面的梳理。經過業務模型的建設,咱們應該可以全面瞭解該單位的業務架構圖和整個業務的運行狀況,可以將業務按照特定的規律進行分門別類和程序化,同時,幫助咱們進一步的改進業務的流程,提升業務效率,指導咱們的業務部門的生產。數據庫

  1. 創建全方位的數據視角,消滅信息孤島和數據差別。

經過數據倉庫的模型建設,可以爲企業提供一個總體的數據視角,再也不是各個部門只是關注本身的數據,並且經過模型的建設,勾勒出了部門之間內在的聯繫,幫助消滅各個部門之間的信息孤島的問題,更爲重要的是,經過數據模型的建設,可以保證整個企業的數據的一致性,各個部門之間數據的差別將會獲得有效解決。設計模式

  1. 解決業務的變更和數據倉庫的靈活性。

經過數據模型的建設,可以很好的分離出底層技術的實現和上層業務的展示。當上層業務發生變化時,經過數據模型,底層的技術實現能夠很是輕鬆的完成業務的變更,從而達到整個數據倉庫系統的靈活性。微信

  1. 幫助數據倉庫系統自己的建設。

經過數據倉庫的模型建設,開發人員和業務人員可以很容易的達成系統建設範圍的界定,以及長期目標的規劃,從而可以使整個項目組明確當前的任務,加快整個系統建設的速度架構

事實表

發生在現實世界中的操做型事件,其所產生的可度量數值,存儲在事實表中。從最低的粒度級別來看,事實表行對應一個度量事件,例如電商行業中的訂單表,每完成一個訂單,就會在表中增長一條記錄,實際上就是業務上的流水錶,表內不存放實際的內容,是一堆維度表主鍵的集合,經過這些維度主鍵能夠對應到維度表中的一條記錄。app

維度表

每一個維度表都包含單一的主鍵列。維度表的主鍵能夠做爲與之關聯的任何事實表的外鍵,這裏的主鍵和外鍵能夠是實際表中建立的,也能夠是物理意義上的虛擬主鍵和外鍵。數據庫設計

維度表一般是比較寬、扁平型的非規範表,包含大量的低粒度屬性。編輯器

以上面兩種表簡單舉一個列子:

建模原則

  1. 高內聚和低輯合

將業務相近或者相關、粒度相同的數據設計爲一個邏輯或者物理模型:將高几率同時訪問的數據放一塊兒,將低機率同時訪問的數據分開存儲。

  1. 核心模型與擴展模型分離

創建核心模型與擴展模型體系,核心模型包括的宇段支持經常使用的核心業務,擴展模 型包括的字段支持個性化或少許應用的須要 ,不能讓擴展模型的宇段過分侵人核心模型,以避免破壞核心模型的架構簡潔性與可維護性。

  1. 公共處理邏輯下沉及單一

越是底層公用的處理邏輯越應該在數據調度依賴的底層進行封裝與實現,不要讓公用的處理邏輯暴露給應用層實現,不要讓公共邏輯多處同時存在。

  1. 成本與性能平衡

適當的數據冗餘可換取查詢和刷新性能,不宜過分冗餘與數據複製。

  1. 數據可回滾

不改變處理邏輯,不修改代碼的狀況下重跑任務結果不變

  1. 一致性

字段命名及定義必須一致

  1. 命名清晰、可理解

表命名需清晰、一致,表名需易於使用方理解

維度模型設計

在數倉中存在幾種數據存儲方式的算法:

1.歷史快照: 天天都是增量數據,保存每日增量,例如流水錶

2.拉鍊: 對於流水記錄存儲,通常存儲5年的記錄,例如在銀行業中,天天的流水記錄太大,數倉存儲壓力太過大,用歷史拉鍊的方式節省存儲空間拉鍊表是一種數據庫設計模式,相似與面向對象的23中設計模式,用於存儲歷史數據和分析時間維度。能夠查看某一個時間點活着時間段的歷史快照信息;

3.全量覆蓋: 配置信息能夠用這種方式

寬事實表設計的優缺點:

  1. 業務直觀,在作業務的時候,這種表特別方便,直接能對到業務中。

  2. 使用方便,寫sql的時候很方便。

  3. 數據冗餘巨大,真的很大,在幾億的用戶規模下,他的訂單行爲會很恐怖、粒度僵硬,什麼都寫死了,這張表的可複用性過低。

維度模型設計的優缺點:

  1. 數據冗餘小(由於不少具體的信息都存在相應的維度表中了,好比客戶信息就只有一份)

  2. 結構清晰(表結構一目瞭然)

  3. 便於作OLAP分析(數據分析用起來會很方便)

  4. 增長使用成本,好比查詢時要關聯多張表

  5. 數據不一致,好比用戶發起購買行爲的時候的數據,和咱們維度表裏面存放的數據不一致


掃描下方二維碼

加入優質社羣一塊兒交流吧!


如若二維碼過時

請添加小編微信,回覆關鍵詞:[進羣/加羣],


-今日互動-


想要免費領取維度建模PDF書籍?

請在後臺回覆:[維度建模]

歡迎文章下方留言互動哦




若是對你有幫助的話

           
❤️來個「轉發朋友圈「在看」,是最大的支持❤️


本文分享自微信公衆號 - DataScience(DataScienceTeam)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索