前言
今天給你們分享下數倉中的模型設計,一個好的數倉項目首先看一下它的架構以及他所用到的模型,它們使用的模型也都是很是巧妙的,好了,咱們話不說到直接開始。 git
1、維度建模基本概念
維度模型是數據倉庫領域大師Ralph Kimall所倡導
,他的《數據倉庫工具箱》,是數據倉庫工程領域最流行的數倉建模經典。<font size="3" color="red">維度建模以分析決策的需求出發構建模型</font>,構建的數據模型<font size="3" color="red">爲分析需求服務</font>,所以<font size="3" color="red">它重點解決用戶如何更快速完成分析需求</font>,同時還有較好的大規模複雜查詢的響應性能。 <font size="3" color="red">維度建模是專門應用於分析型數據庫、數據倉庫、數據集市建模的方法。數據集市能夠理解爲是一種小型數據倉庫
。</font>程序員
1.1 事實表
<font size="3" color="red">發生在現實世界中的操做型事件,其所產生的可度量數值,存儲在事實表中</font>。從最低的粒度級別來看,事實錶行對應一個度量事件,反之亦然。 事實表表示對分析主題的度量。好比<font size="3" color="red">一次購買行爲咱們就能夠理解爲是一個事實。</font> 圖中的訂單表就是一個事實表,<font size="3" color="red">能夠理解他就是在現實中發生的一次操做型事件</font>,每完成一個訂單,就會在訂單中增長一條記錄。 事實表的特徵:表裏沒有存放實際的內容,他是一堆主鍵的集合
,<font size="3" color="red">這些ID分別能對應到維度表中的一條記錄</font>。事實表包含了與各維度表相關聯的外鍵,可與維度表關聯。事實表的度量一般是數值類型(條/個/次),且記錄數會不斷增長,表數據規模迅速增加。github
1.2 維度表
<font size="3" color="red">維度
表示要對數據進行分析時所用的一個量</font>,好比你要<font size="3" color="red">分析產品銷售狀況</font>, 你能夠選擇<font size="3" color="red">按</font>類別
<font size="3" color="red">進行分析,或按</font>區域
<font size="3" color="red">分析</font>。這樣的按..分析就構成一個維度
。上圖中的用戶表、商家表、時間表這些都屬於維度表。這些表都有一個惟一的主鍵,而後在表中存放了詳細的數據信息。面試
例如:交易金額分析分析 男性用戶的訂單金額、聯想商品的訂單金額、第一季度的訂單金額、手機的訂單金額、家裏下單的訂單金額數據庫
例如:學生分析 姓張的同窗有多少、男性的同窗有多少、江蘇的同窗有多少、身高小於170cm的同窗有多少、年齡小於23歲的同窗有多少。 <font size="3" color="red">每一個維度表都包含單一的主鍵列</font>。維度表的主鍵能夠做爲與之關聯的任何事實表的外鍵,固然,<font size="3" color="red">維度錶行的描述環境應與事實錶行徹底對應。維度表一般比較寬,是扁平型非規範表,包含大量的低粒度的文本屬性。</font>架構
總的說來,在數據倉庫中不須要嚴格遵照規範化設計原則。由於數據倉庫的主導功能就是面向分析,以查詢爲主,不涉及數據更新操做。
工具
事實表的設計是以可以正確記錄歷史信息爲準則。
oop
維度表的設計是以可以以合適的角度來聚合主題內容爲準則。
性能
2、維度建模三種模式
2.1 星型模型
星形模式(Star Schema)是最經常使用的維度建模方式。星型模式是以事實表爲中心,全部的維度表直接鏈接在事實表上,像星星同樣。
星形模式的維度建模由一個事實表和一組維表成
,且具備如下特色:大數據
- 維表只和事實表關聯,維表之間沒有關聯;
- 每一個維表主鍵爲單列,且該主鍵放置在事實表中,做爲兩邊鏈接的外鍵;
- 以事實表爲核心,維表圍繞核心呈星形分佈;
2.2 雪花模式
雪花模式(Snowflake Schema)是對星形模式的擴展。雪花模式的維度表能夠擁有其餘維度表
的,雖然這種模型相比星型更規範一些,可是因爲這種模型不太容易理解,維護成本比較高,並且性能方面須要關聯多層維表,性能也比星型模型要低。因此通常不是很經常使用。
2.3 星座模式
星座模式是星型模式延伸而來,星型模式是基於一張事實表的,而<font size="3" color="red">星座模式是基於多張事實表的,並且共享維度信息</font>。 前面介紹的兩種維度建模方法都是多維表對應單事實表,但在<font size="3" color="red">不少時候維度空間內的事實表不止一個,而一個維表也可能被多個事實表用到</font>。在業務發展後期,絕大部分維度建模都採用的是星座模式。
總結
好了本篇文章就分享到這裏了,本篇文章主要講解了維度模型三種模式,在設計數倉的時候儘可能將表設計爲星星模型
和雪花模型
這樣的話咱們在實現功能的時候就比較簡單,緣由是星星模型
和雪花模型
架構基本上是一對多的。信本身,努力和汗水總會能獲得回報的。我是大數據老哥,咱們下期見~~~
獲取Flink面試題,Spark面試題,程序員必備軟件,hive面試題,Hadoop面試題,Docker面試題,簡歷模板等資源請去GitHub自行下載 https://github.com/lhh2002/Framework-Of-BigData