最近 想整理一下關于資料模型的知識點,簡要的寫點文字。
(一) ER 模型
資料倉庫之父 Bill lnmon 提出的模組化方法是從全企業的高度設計
3NF 模型,用實體關系( Entity Relationship, ER )模型描述企業業
務,在範式理論上符合 3NF 。資料倉庫中的 3NF OLTP 系統中的 3NF
的差別在于,它是站在企業角度面向主題的抽象,而不是針對某個具體
業務流程的實體對象關系的抽象。其具有以下幾個特點:
需要全面了解企業業務和資料
實施周期非常長。
對模組化人員的能力要求非常高。
采用 模型建設資料倉庫模型的出發點是整合資料,将各個系統
中的資料以整個企業角度按主題進行相似性組合和合并,并進行一緻性
處理,為資料分析決策服務,但是并不能直接用于分析決策。
其模組化步驟分為三個階段。
·高層模型:一個高度抽象的模型,描述主要的主題以及主題間的
關系,用于描述企業的業務總體概況。
中層模型:在高層模型的基礎上,細化主題的資料項。
實體模型(也叫底層模型):在中層模型的基礎上,考慮實體存
儲,同時基于性能和平台特點進行實體屬性的設計,也可能做一
些表的合并、分區的設計等。
ER 模型在實踐中最典型的代表是 Teradata 公司基于金融業務釋出
FS-LDM (Financial Services Logical Data Model ),它通過對金融業
務的高度抽象和總結,将金融業務劃分為 10 主題 ,并以設計面向
融倉庫模型的核心為基礎,企業基于此模型做适當調整和擴充就能快速
落地實施。
(二)次元模型
次元模型是資料倉庫領域的 Ralph Kimball 大師所倡導的,他的 The
Data rehouse olkit-The Complete Guide to Dimensional Modeling
資料倉庫工程領域最流行的資料倉庫模組化的經典。
次元模組化從分析決策的需求出發構模組化型,為分析需求服務,是以
它重點關注使用者如何更快速地完成需求分析,同時具有較好的大規模複
雜查詢的響應性能。其典型的代表是星形模型,以及在一些特殊場景下
使用的雪花模型。其設計分為以下幾個步驟。
選擇需要進行分析決策的業務過程。業務過程可以是單個業務事
件,比如交易的支付、退款等;也可以是某個事件的狀态,比如
目前的賬戶餘額等;還可以是一系列相關業務事件組成的業務流
程,具體需要看我們分析的是某些事件發生情況,還是目前狀态,
或是事件流轉效率。
選擇粒度。在事件分析中,我們要預判所有分析需要細分的程度,
進而決定選擇的粒度。粒度是次元的一個組合。
識别維表。選擇好粒度之後,就需要基于此粒度設計維表,包括
次元屬性,用于分析時進行分組和篩選。
·選擇事實。确定分析需要衡量的名額
(三)Data Vault 模型
Data Vault Dan Linstedt 發起建立的一種模型,它是 模型的
生,其設計的出發點也是為了實作資料的整合,但不能直接用于資料分
析決策。它強調建立一個可審計的基礎資料層,也就是強調資料的曆史
性、可追溯性和原子性,而不要求對資料進行過度的一緻性處理和整合
同時它基于主題概念将企業資料進行結構化組織,并引入了更進一步的
範式處理來優化模型,以應對遊、系統變更的擴充性。 Data Vault 型由
以下幾部分組成。
• Hub :是企業的核心業務實體,由 實體 key 、資料倉庫序列代理
鍵、裝載時間、資料來源組成。
• Link :代表 Hub 之間的關系。這裡與 模型最大的差別是将關
系作為一個獨立的單元抽象,可以提升模型的擴充性。它可以直
接描述 : :n n:n 的關系,而不需要做任何變更。它由 Hub
的代理鍵、裝載時間、資料來源組成。
• Satellite :是 Hub 的較長的描述内容, 一個 ub 可以有多個 Satellite
它由 Hub 的代理鍵、裝載時間、來源類型、詳細的 Hub 描述信
息組成。
Data Vault 模型比 ER 模型更容易設計和産出,它的 ETL 加工可實
現配置化。通過 Dan Linstedt 的比喻更能了解 Data Vault 的核心思想:
Hub 可以想象成人的骨架,那麼 Link 就是連接配接骨架的韌帶,而 Sate II ite
就是骨架上面的血肉。看如下圖
(四) Anchor 模型
Anchor Data Vault 模型做了進一步規範化處理, Lars. Ri:innback
的初衷是設計 個高度可擴充的模型,其核心思想是所有的擴充隻是添
加而不是修改,是以将模型規範到 6NF ,基本變成了 k-v 結構化模型。
們看 Anchor 模型的組成。
• Anchors :類似于 Data Vault Hub ,代表業務實體,且隻有主鍵。
• Attributes :功能類似于 Data Vault Satellite ,但是它更加規範
化,将其全部 k-v 結構化, 個表隻有 Anchors 的屬性描述。
• Ties :就是 Anchors 之間的關系,單獨用表來描述,類似于 Data
Vault Link ,可以提升整體模型關系的擴充能力。
• Knots :代表那些可能會在 Anchors 中公用的屬性的提煉,
比如性别、狀态等這種枚舉類型且被公用的屬性。
在上述四個基本對象的基礎上,又可以細劃分為曆史的和非曆史
的,其中曆史的會以時間戳加多條記錄的方式記錄資料的變遷曆史。
Anchor 模型的建立者以此方式來擷取極大的可擴充性,但是也會
增加非常多的查詢 join 操作。建立者的觀點是,資料倉庫中的分析查詢
隻是基于一小部分字段進行的,類似于列存儲結構,可以大大減少資料
掃描,進而對查詢性能影響較小。一些有資料表裁剪( Table Elimination)
特性的資料庫如 MariaDB 的出現, 還會大量減少 join 操作。但是實際
情況是不是如此,還有待商榷。下面是一個 Anchor 模型圖
以上就是4中資料模型。相關的主要内容是摘抄自《阿裡巴巴大資料實踐》。作為搬運工,還是要說一下,次元模組化是企業中用的最多最廣泛的。後面會陸續的再總結一些次元模組化的文章。