數(shù)倉模型設(shè)計(jì)詳細(xì)講解
前言
今天給大家分享下數(shù)倉中的模型設(shè)計(jì),一個好的數(shù)倉項(xiàng)目首先看一下它的架構(gòu)以及他所用到的模型,它們使用的模型也都是非常巧妙的,好了,我們話不說到直接開始。
一、維度建?;靖拍?/strong>
維度模型是數(shù)據(jù)倉庫領(lǐng)域大師Ralph Kimall所倡導(dǎo),他的《數(shù)據(jù)倉庫工具箱》,是數(shù)據(jù)倉庫工程領(lǐng)域最流行的數(shù)倉建模經(jīng)典。維度建模以分析決策的需求出發(fā)構(gòu)建模型,構(gòu)建的數(shù)據(jù)模型為分析需求服務(wù),因此它重點(diǎn)解決用戶如何更快速完成分析需求,同時還有較好的大規(guī)模復(fù)雜查詢的響應(yīng)性能。
維度建模是專門應(yīng)用于分析型數(shù)據(jù)庫、數(shù)據(jù)倉庫、數(shù)據(jù)集市建模的方法。數(shù)據(jù)集市可以理解為是一種小型數(shù)據(jù)倉庫。
1.1 事實(shí)表
發(fā)生在現(xiàn)實(shí)世界中的操作型事件,其所產(chǎn)生的可度量數(shù)值,存儲在事實(shí)表中。從最低的粒度級別來看,事實(shí)表行對應(yīng)一個度量事件,反之亦然。
事實(shí)表表示對分析主題的度量。比如一次購買行為我們就可以理解為是一個事實(shí)。
圖中的訂單表就是一個事實(shí)表,可以理解他就是在現(xiàn)實(shí)中發(fā)生的一次操作型事件,每完成一個訂單,就會在訂單中增加一條記錄。
事實(shí)表的特征:表里沒有存放實(shí)際的內(nèi)容,他是一堆主鍵的集合,這些ID分別能對應(yīng)到維度表中的一條記錄。事實(shí)表包含了與各維度表相關(guān)聯(lián)的外鍵,可與維度表關(guān)聯(lián)。事實(shí)表的度量通常是數(shù)值類型(條/個/次),且記錄數(shù)會不斷增加,表數(shù)據(jù)規(guī)模迅速增長。
1.2 維度表
維度表示要對數(shù)據(jù)進(jìn)行分析時所用的一個量,比如你要分析產(chǎn)品銷售情況, 你可以選擇按類別進(jìn)行分析,或按區(qū)域分析。這樣的按..分析就構(gòu)成一個維度。上圖中的用戶表、商家表、時間表這些都屬于維度表。這些表都有一個唯一的主鍵,然后在表中存放了詳細(xì)的數(shù)據(jù)信息。
例如:交易金額分析分析
男性用戶的訂單金額、聯(lián)想商品的訂單金額、第一季度的訂單金額、手機(jī)的訂單金額、家里下單的訂單金額
例如:學(xué)生分析
姓張的同學(xué)有多少、男性的同學(xué)有多少、江蘇的同學(xué)有多少、身高小于170cm的同學(xué)有多少、年齡小于23歲的同學(xué)有多少。
每個維度表都包含單一的主鍵列。維度表的主鍵可以作為與之關(guān)聯(lián)的任何事實(shí)表的外鍵,當(dāng)然,維度表行的描述環(huán)境應(yīng)與事實(shí)表行完全對應(yīng)。維度表通常比較寬,是扁平型非規(guī)范表,包含大量的低粒度的文本屬性。
總的說來,在數(shù)據(jù)倉庫中不需要嚴(yán)格遵守規(guī)范化設(shè)計(jì)原則。因?yàn)閿?shù)據(jù)倉庫的主導(dǎo)功能就是面向分析,以查詢?yōu)橹?,不涉及?shù)據(jù)更新操作。
事實(shí)表的設(shè)計(jì)是以能夠正確記錄歷史信息為準(zhǔn)則。
維度表的設(shè)計(jì)是以能夠以合適的角度來聚合主題內(nèi)容為準(zhǔn)則。
二、維度建模三種模式
2.1 星型模型
星形模式(Star Schema)是最常用的維度建模方式。星型模式是以事實(shí)表為中心,所有的維度表直接連接在事實(shí)表上,像星星一樣。
星形模式的維度建模由一個事實(shí)表和一組維表成,且具有以下特點(diǎn):
- 維表只和事實(shí)表關(guān)聯(lián),維表之間沒有關(guān)聯(lián);
- 每個維表主鍵為單列,且該主鍵放置在事實(shí)表中,作為兩邊連接的外鍵;
- 以事實(shí)表為核心,維度表圍繞核心呈星形分布
2.2 雪花模式
雪花模式(Snowflake Schema)是對星形模式的擴(kuò)展。雪花模式的維度表可以擁有其他維度表的,雖然這種模型相比星型更規(guī)范一些,但是由于這種模型不太容易理解,維護(hù)成本比較高,而且性能方面需要關(guān)聯(lián)多層維表,性能也比星型模型要低。所以一般不是很常用。
2.3 星座模式
星座模式是星型模式延伸而來,星型模式是基于一張事實(shí)表的,而星座模式是基于多張事實(shí)表的,而且共享維度信息。
前面介紹的兩種維度建模方法都是多維表對應(yīng)單事實(shí)表,但在很多時候維度空間內(nèi)的事實(shí)表不止一個,而一個維表也可能被多個事實(shí)表用到。在業(yè)務(wù)發(fā)展后期,絕大部分維度建模都采用的是星座模式。
總結(jié)
好了本篇文章就分享到這里了,本篇文章主要講解了維度模型三種模式,在設(shè)計(jì)數(shù)倉的時候盡量將表設(shè)計(jì)為星星模型和雪花模型這樣的話我們在實(shí)現(xiàn)功能的時候就比較簡單,原因是星星模型和雪花模型架構(gòu)基本上是一對多的。信自己,努力和汗水總會能得到回報(bào)的。我是大數(shù)據(jù)老哥,我們下期見~~~。
本文轉(zhuǎn)載自微信公眾號「大數(shù)據(jù)老哥」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系大數(shù)據(jù)老哥公眾號。