主要的建模思想大致有三類,三范式撵彻,緯度建模钓株,還有datavalt。
三范式
熟悉關(guān)系型數(shù)據(jù)庫的都知道陌僵,三范式建模主要可以避免數(shù)據(jù)冗余轴合。如果數(shù)據(jù)倉庫中采用這種建模方式,還有另外的好處就是可以直接將關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)直接導(dǎo)入數(shù)倉碗短,減少了很多的建模工作受葛。三范式建模的一個顯而易見的缺點(diǎn)就是查詢性能,因?yàn)樾枰绫聿樵儭H缃翊鎯Τ杀疽呀?jīng)不再是限制大數(shù)據(jù)發(fā)展的主要因素了总滩,所以個人認(rèn)為增加冗余而減少查詢開銷是有必要的纲堵。
Inmon 堅持三范式建模的原因還有:
- 數(shù)據(jù)倉庫中的數(shù)據(jù)應(yīng)該不違反任務(wù)業(yè)務(wù)規(guī)則
- 數(shù)倉本身使用的技術(shù)包括建模應(yīng)該越通用越好
- 必須盡可能將數(shù)據(jù)裝入數(shù)據(jù)倉庫,因此冗余性降低利于提高速度
維度建模
維度建模是大師kimball的觀點(diǎn)闰渔,和關(guān)系型建模相反席函,維度建模通過增加冗余來增加查詢速度,他將業(yè)務(wù)主題對應(yīng)的多個實(shí)體冗余記錄冈涧,將共有維度茂附,變化緩慢的屬性抽出形成維度表。與關(guān)系型建模面向?qū)嶓w督弓,維度建模主要面向業(yè)務(wù)营曼。在數(shù)倉建模中,維度建模用的最多咽筋。
一般的建模流程:
- 選擇業(yè)務(wù)流程
- 確定粒度
- 確定事實(shí)
- 確定維度
有些時候溶推,會對維度進(jìn)一步的細(xì)化,就成了雪花模型
Data Vault
DataVault相當(dāng)于上面兩種建模的折中奸攻。用的比較少蒜危,至少我沒接觸過。
DataVault包含3種類型的表睹耐,中心表辐赞,鏈接表,附屬表(描述表硝训,在我看來就是維度表)响委。
和關(guān)系型建模相比,每個中心表對應(yīng)業(yè)務(wù)的每個實(shí)體窖梁,這點(diǎn)沒有變赘风。但是中心表不再包含屬性鍵值,屬性鍵被寫到附屬表纵刘,只包含業(yè)務(wù)主鍵邀窃。實(shí)體之間的聯(lián)系不再由外鍵約束,而是在鏈接表定義假哎。將關(guān)系型數(shù)據(jù)導(dǎo)出也很方便瞬捕,不需要做太多建模工作,只需要3中表抽出即可舵抹。
個人比較喜歡維度建模肪虎,簡單易懂,當(dāng)然還需要針對不同場景區(qū)分