天天看點

面試中常常被問到的資料模型

最近 想整理一下關于資料模型的知識點,簡要的寫點文字。
(一)    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中資料模型。相關的主要内容是摘抄自《阿裡巴巴大資料實踐》。作為搬運工,還是要說一下,次元模組化是企業中用的最多最廣泛的。後面會陸續的再總結一些次元模組化的文章。

繼續閱讀