数据建模知多少?
?1前言
? ? ???數據建模乍一聽的時候感覺非常的有技術性,并且外行感覺非常的高大上,高深莫測。
? ? ? 在目前的時代下,數據量可以說是海量,并且還在持續增長,那么對于企業來說,如何快速的準確的從這些數據中獲取自己想得到的信息呢?
?
2什么是數據建模
? ? ? ?數據建模簡單來說就是基于對業務的理解,將各種數據進行整合和關聯,并最終使得這些數據可用性,可讀性增強,讓使用方能快速的獲取到自己關心的有價值的信息并且及時的作出響應,為公司帶來效益。
?
3為什么要建模
? ? ? 數據建模是一套方法論,主要是對數據的整合和存儲做一些指導,強調從各個角度合理的存儲數據。
有了合適的數據模型,是會帶來很多好處的:
?
-
查詢使用性能提升
-
用戶效率提高,改善用戶體驗
-
數據質量提升
-
......
?
? ? ? ?所以大數據系統需要數據模型方法來更好的組織和存儲,以便在性能,成本,效率和質量之間取的平衡。
?
4建模常用工具
?
PowerDesigner:
?
? ? ? ?Power Designer 是Sybase公司的CASE工具集,使用它可以方便地對管理信息系統進行分析設計,他幾乎包括了數據庫模型設計的全過程。利用Power Designer可以制作數據流程圖、概念數據模型、物理數據模型,還可以為數據倉庫制作結構模型,也能對團隊設計模型進行控制。他可以與許多流行的軟件開發工具,例如PowerBuilder、Delphi、VB等相配合使開發時間縮短和使系統設計更優化。
? ? ? power designer是能進行數據庫設計的強大的軟件,是一款開發人員常用的數據庫建模工具。使用它可以分別從概念數據模型(Conceptual Data Model)和物理數據模型(Physical Data Model)兩個層次對數據庫進行設計。在這里,概念數據模型描述的是獨立于數據庫管理系統(DBMS)的實體定義和實體關系定義;物理數據模型是在概念數據模型的基礎上針對目標數據庫管理系統的具體化。
?
5業務系統和數據倉庫建模區別
?
? ? ? 在業務系統中,通常面對業務庫的隨機讀寫,目前主要是采用三范式(3NF)模型存儲數據。
?
? ? ? ?而在數據倉庫的建模過程中,由于主要是數據的批量讀取操作,但是事物并不是我們所關心的,主要是關注數據的整合以及查詢處理性能,因此會采用其他的建模方法,以Kimball維度建模最為經典。
?
6Kimball和Inmon架構
?
1Inmon架構
?
? ? ? 輻射狀企業信息工廠(CIF) 方法由Bill Inmon及業界人士倡導的。在這個環境下,數據從操作性數據源中獲取,在ETL系統中處理,將這一過程稱為數據獲取,從這一過程中獲得的原子數據保存在滿足第三范式的數據庫中,這種規范化的原子數據的倉庫被稱為CIF架構下的企業級數據倉庫(EDW)
? ? ? 與Kimball方法相似,CIF提倡企業數據協調與集成,但CIF認為要利用規范化的EDW承擔這一角色,而Kimball架構強調具有一致性維度的企業總線的重要作用
?
?
? ? ? Inmon企業級數據倉庫的分析數據庫通常以部門為中心(而不是圍繞業務過程來組織),而且包含匯總數據,并不是原子級別數據,如果ETL過程中數據所應用的業務規則超越了基本概要,如部門改名了或者其他的類似計算,要將分析數據庫與EDW原子數據聯系起來將變得很困難
?
?
2Kimball架構
?
? ? ??
? ? ? ?Kimball架構利用了CIF中處于中心地位的EDW,但是此次的EDW完全與分析與報表用戶隔離,僅作為數據來源,其中數據是維度的,原子的,以過程為中心的,與企業級數據倉庫總線結構保持一致。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
3架構對比
?
-
流程
Inmon架構是自頂向下,即從數據抽取-->數據倉庫-->數據集市,以數據源為導向,是一種瀑布流開發方法,模型偏向于3NF,
Kimball:架構是自下向上,即從數據集市(主題劃分)-->數據倉庫-->?數據抽取,是以需求為導向的,一般使用星型模型??
?
-
事實表和維表
Inmon架構下,不強調事實表和維表的概念,因為數據源變化可能會比較大,更加強調的是數據清洗的工作??
kimball架構強調模型由事實表和維表組成,注重事實表與維表的設計
?
-
數據集市
Inmon架構中,數據集市有自己的物理存儲,是真實存在的。
Kimball數據倉庫架構中,數據集市是一個邏輯概念,只是多維數據倉庫中的主題域劃分,并沒有自己的物理存儲,也可以說是虛擬的數據集市。是數據倉庫的一個訪問層,是按主題域組織的數據集合,用于支持部門級的決策。
?
-
中心
?Inmon架構是以部門為中心,而Kimball架構是以業務過程為中心?
?
-
EDW的訪問
Inmon架構中用戶可以直接訪問企業數據倉庫(EDW)
Kimball架構中用戶不可以直接訪問企業數據倉庫(EDW),只能訪問展現區數據
?
4總結
? ?
企業開發中一般選擇Kimball維度建模
? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ?? ?
7數據建模的幾種方式
?
?
1ER模型
?
? ? ?
ER模型是屬于三范式的,是企業級的主題抽象而不是單獨描述某個業務
?
1.1 什么是范式
?
? ? ? 當分類不可再分時,這種關系是規范化的,一個低級范式分解轉換為更高級的范式時,就叫做規范化
? ? ? 數據表可以分為1-5NF,第一范式是最低要求,第五范式則是最高要求
? ? ? 最常用的范式有第一范式(1NF)、第二范式(2NF)、第三范式(3NF)
?
1.2 第一范式
?
表中的每一列都是不可拆分的原子項
?
由上圖可知,phone字段里面存了2個值,具有可分割性,不符合1NF,可以改成:
?
1.3 第二范式
?
第二范式要同時滿足下面兩個條件:
-
滿足第一范式。
-
沒有部分依賴。
?
?
上圖可以看出,如果一個用戶下了很多訂單,則用戶名,收獲地址和手機號有重復出現的情況造成數據冗余,很明顯不太符合第二范式,可以改成:
?
?
1.4 第三范式
?
第三范式要同時滿足下面兩個條件:
-
滿足第二范式。
-
沒有傳遞依賴。
簡單點說,關系重復,能互相推導出來
?
?
如上圖所示,如果知道了zip郵編,其實是能推出來省市區的,相反,知道了省市區,也是可以推出郵編的,有傳遞依賴,造成了冗余,不符合第三范式,需要改造:
?
?
1.5 小結
?
? ? ??在關系數據模型設計中,一般需要滿足第三范式的要求。如果一個表有良好的主外鍵設計,就應該是滿足3NF的表。
? ? ? 規范化帶來的好處是通過減少數據冗余提高更新數據的效率,同時保證數據完整性。然而,我們在實際應用中也要防止過度規范化的問題。規范化程度越高,劃分的表就越多,在查詢數據時越有可能使用表連接操作。
? ? ? ?而如果連接的表過多,會影響查詢的性能。關鍵的問題是要依據業務需求,仔細權衡數據查詢和數據更新的關系,制定最適合的規范化程度。還有一點需要注意的是,不要為了遵循嚴格的規范化規則而修改業務需求。
?
?
2維度建模
? ? ? 維度建模是一種將大量數據結構化的邏輯設計手段,包含維度和指標,它不像ER模型目的是消除冗余數據,維度建模是面向分析,最終目的是提高查詢性能,所以會增加數據冗余,并且違反三范式。
? ? ? 維度建模也是重點關注讓用戶快速完成需求分析且對于復雜查詢及時響應,維度建模一般可以分為三種:
?
-
星型模型
-
雪花模型
-
星座模型
?
? ? 其中最常用的其實是星型模型
?
2.1 背景
?
? ? ? ? ?在多維分析的商業智能解決方案中,根據事實表和維度表的關系,又可將常見的模型分為星型模型,雪花型模型及星座模型。在設計邏輯型數據的模型的時候,就應考慮數據是按照星型模型,雪花型模型還是星座模型進行組織。
?
2.2 星型模型
?
? ? ? ? ?星形模型中有一張事實表,以及零個或多個維度表,事實表與維度表通過主鍵外鍵相關聯,維度表之間沒有關聯,當所有維表都直接連接到“?事實表”上時,整個圖解就像星星一樣,故將該模型稱為星型模型。星形模型是最簡單,也是最常用的模型。由于星形模型只有一張大表,因此它相比于其他模型更適合于大數據處理。其他模型可以通過一定的轉換,變為星形模型。
? ? ? ?星型架構是一種非正規化的結構,多維數據集的每一個維度都直接與事實表相連接,不存在漸變維度,所以數據有一定的冗余,如在地域維度表中,存在國家 A 省 B 的城市 C 以及國家 A 省 B 的城市 D 兩條記錄,那么國家 A 和省 B 的信息分別存儲了兩次,即存在冗余。
?
?
2.3 雪花模型
?
? ? ? ? ?當有一個或多個維表沒有直接連接到事實表上,而是通過其他維表連接到事實表上時,其圖解就像多個雪花連接在一起,故稱雪花模型。雪花模型是對星型模型的擴展。它對星型模型的維表進一步層次化,原有的各維表可能被擴展為小的維度表,形成一些局部的 "?層次 " 區域,這些被分解的表都連接到主維度表而不是事實表。如圖,將地域維表又分解為國家,省份,城市等維表。它的優點是 :?通過最大限度地減少數據存儲量以及聯合較小的維表來改善查詢性能。雪花型結構去除了數據冗余。
?
?
2.4 星座模型
?
? ? ??? ?星座模型是由星型模型延伸而來,星型模型是基于一張事實表而星座模式是基于多張事實表,并且共享維度表信息,這種模型往往應用于數據關系比星型模型和雪花模型更復雜的場合。星座模型需要多個事實表共享維度表,因而可以視為星形模型的集合,故亦被稱為星系模型
?
?
2.5 對比
?
?
-
星型模型因為數據的冗余所以很多統計查詢不需要做外部的連接,因此一般情況下效率比雪花型模型要高。
-
星型結構不用考慮很多正規化的因素,設計與實現都比較簡單。
-
雪花型模型由于去除了冗余,有些統計就需要通過表的聯接才能產生,所以效率比較低。
-
正規化也是一種比較復雜的過程,相應的數據庫結構設計、數據的 ETL、以及后期的維護都要復雜一些。
?
2.6 小結
?
? ? ???通過對比,我們可以發現數據倉庫大多數時候是比較適合使用星型模型構建底層數據Hive表,通過大量的冗余來減少表查詢的次數從而提升查詢效率,星型模型對OLAP的分析引擎支持比較友好,這一點在Kylin中比較能體現。而雪花模型在關系型數據庫中如MySQL,Oracle中非常常見,尤其像電商的數據庫表。在數據倉庫中雪花模型和星座模型的應用場景比較少,但也不是沒有,所以在具體設計的時候,可以考慮是不是能結合兩者的優點參與設計,以此達到設計的最優化目的。
?
2.7 建模原則:
?
-
高內聚和低輯合
? ? ? 將業務相近或者相關、粒度相同的數據設計為一個邏輯或者物理模型:將高概率同?時訪問的數據放一起?,將低概率同時訪問的數據分開存儲。
?
-
核心模型與擴展模型分離
? ? ? ?建立核心模型與擴展模型體系,核心模型包括的宇段支持常用的核心業務,擴展模型包括的字段支持個性化或少量應用的需要?,不能讓擴展模型的宇段過度侵人核心模型,以免破壞核心模型的架構簡潔性與可維護性。
?
-
公共處理邏輯下沉及單一
? ? ? ?越是底層公用的處理邏輯越應該在數據調度依賴的底層進行封裝與實現,不要讓公用的處理邏輯暴露給應用層實現,不要讓公共邏輯多處同時存在。
?
-
成本與性能平衡
? ? ? 適當的數據冗余可換取查詢和刷新性能,不宜過度冗余與數據復制。
?
-
數據可回滾
? ? ? ?處理邏輯不變,在不同時間多次運行數據結果確定不變。
?
-
一致性
? ? ? 具有相同含義的字段在不同表中的命名必須相同,必須使用規范定義中的名稱。
?
-
命名清晰、可理解
? ? ? ? 表命名需清晰、一致,表名需易于消費者理解和使用。
?
星型模型設計步驟:
?
選擇需要進行分析決策的業務過程。業務過程可以是單個業務事件,比如交易的支付、退款等;也可以是某個事件的狀態,比如當前的賬戶余額等;還可以是一系列相關業務事件組成的業務流程,具體需要看我們分析的是某些事件發生情況,還是當前狀態,或是事件流轉效率。
選擇粒度。在事件分析中,我們要預判所有分析需要細分的程度,從而決定選擇的粒度。粒度是維度的一個組合。
識別維表。選擇好粒度之后,就需要基于此粒度設計維表,包括維度屬性,用于分析時進行分組和篩選。
選擇事實。確定分析需要衡量的指標??
?
3Data Vault模型
?
? ? ? ?Data Vault Dan Linstedt 發起創建的一種模型,它是模型的衍生,其設計的出發點也是為了實現數據的整合,但不能直接用于數據分析決策。它強調建立一個可審計的基礎數據層,也就是強調數據的歷史性、可追溯性和原子性,而不要求對數據進行過度的一致性處理和整合;
? ? 同時它基于主題概念將企業數據進行結構化組織,并引入了更進一步的范式處理來優化模型,以應對源系統變更的擴展性。Data Vault 型由以下幾部分組成。
? ? ? ? Hub :是企業的核心業務實體,由 實體 key 、數據倉庫序列代理鍵、裝載時間、數據來源組成。
? ? ? ? Link :代表 Hub 之間的關系。這里與 模型最大的區別是將關系作為一個獨立的單元抽象,可以提升模型的擴展性。它可以直
接描述 1:1 1:n n:n 的關系,而不需要做任何變更。它由 Hub?的代理鍵、裝載時間、數據來源組成。
? ? ? ? Satellite :是 Hub 的詳細描述內容, 一個 Hub 可以有多個 Satellite它由 Hub 的代理鍵、裝載時間、來源類型、詳細的 Hub 描述信息組成。
?
? ? ? ?Data Vault 模型比 ER 模型更容易設計和產出,它的 ETL 加工可實現配置化。
?
?
8模型分層
?
1前言
?
?
??
? ?數據倉庫一般分為三層,自上而下分別為數據貼源層(ODS,Operation Data Store)、數據公共層(CDM,Common Data Model)和數據應用層(ADS,Application Data Service)。
?
2ods層
?
? ? ??貼源層,與業務庫保持一致,不做任何處理
?
3cdm層
?
? ? ? ?數據公共層CDM(Common Data Model,又稱通用數據模型層),包括DIM維度表、DWD,DW和DWS,由ODS層數據加工而成。主要完成數據加工與整合,建立一致性的維度,構建可復用的面向分析和統計的明細事實表,以及匯總公共粒度的指標
-
公共維度層(DIM):基于維度建模理念思想,建立企業一致性維度。降低數據計算口徑和算法不統一風險。? ? ?公共維度層的表通常也被稱為邏輯維度表,維度和維度邏? ? ? ? ? ? ? ?輯表通常一一對應。
-
明細粒度事實層(DWD):對數據進行規范化編碼轉換,清洗,統一格式,脫敏等,不做橫向整合
-
主題寬表層(DW)?對dwd各種信息進行整合,輸出主題寬表(面? ? ? ?向業務過 程,不同業務過程的信息不冗余建設,采用外鍵形式)
-
公共匯總粒度事實層(DWS):以分析的主題對象作為建模驅動,基于上層的應用和產品的指標需求,構建公共粒度的匯總指標事實表,以寬表化手段物理化模型。構建命名規范、口徑一致的統計指標,為上層提供公共指標,建立匯總寬表、明細事實表。
? ? 公共匯總粒度事實層的表通常也被稱為匯總邏輯表,用于存放派生指標數據。
?
4ads層
?
? ? ? ?數據應用層ADS(Application Data Service):面向業務需求定制開發,存放數據產品個性化的統計指標數據。
?
?
5邏輯分層架構
?
?
6分層的好處
?
清晰數據結構:每一個數據分層都有它的作用域,這樣我們在使用表的時候能更方便地定位和理解。
數據血緣追蹤:簡單來講可以這樣理解,我們最終給業務呈現的是一張能直接使用的張業務表,但是它的來源有很多,如果有一張來源表出問題了,我們希望能夠快速準確地定位到問題,并清楚它的危害范圍。
減少重復開發:規范數據分層,開發一些通用的中間層數據,能夠減少極大的重復計算。
把復雜問題簡單化:將一個復雜的任務分解成多個步驟來完成,每一層只處理單一的步驟,比較簡單和容易理解。而且便于維護數據的準確性,當數據出現問題之后,可以不用修復所有的數據,只需要從有問題的步驟開始修復。
?
# 參考?《大數據之路:阿里巴巴大數據實踐》
# 參考?《數據倉庫工具箱-維度建模指南》
#?PowerDesigner介紹來自百度百科
?
2020大數據面試題真題總結(附答案)
如何寫好一篇數據部門規范文檔
如何優化整個數倉的執行時長(比如7點所有任務跑完,如何優化到5點)
從0-1建設數倉遇到什么問題?怎么解決的?
多值維度及交叉維度最佳解決方案
深入探究order by,sort by,distribute by,cluster by
Hive調優,數據工程師成神之路
數據質量那點事
簡述元數據管理
你真的了解全量表,增量表及拉鏈表嗎?
緩慢變化維(SCD)常見解決方案
全方位解讀星型模型,雪花模型及星座模型
Sqoop or Datax
left join(on&where)
ID-Mapping
你們公司還在用SparkOnYan嗎?
大廠高頻面試題-連續登錄問題
朋友面試數據研發崗遇到的面試題
數據倉庫分層架構
簡單聊一聊大數據學習之路
朋友面試數據專家崗遇到的面試題
HADOOP快速入門
數倉工程師的利器-HIVE詳解
?
總結
- 上一篇: PLM选型
- 下一篇: 【鱼眼镜头2】[鱼眼畸变模型]:评估了五