資料倉儲專題(4)-分散式資料倉儲事實表設計思考---討論精華

weixin_34067049發表於2015-04-16

一、前言

  上一篇分享博文《資料倉儲專題(3)--分散式資料倉儲事實表設計思考》後,陸續有各位兄弟參加大討論,提出了各種問題,關於分散式環境下,維表和事實表設計,進行了比較深入的探討,在此彙集整理,分享給大家。希望能有更多人蔘與盡力啊,共同探索分散式資料倉儲資料模型的設計。

二、紀要

【活躍】北京-RTB-胖哥(1106110976) 10:21:36 
分散式模式下事實表設計思考:
做大做強事實表,做小做弱維表;
【冒泡】杭州-電子病歷<ruanjizhou@qq.com> 10:23:31 
能舉例子說明嗎? 您這句話,我似懂非懂,但是確實在臨床上又有非常多的問題存在。
【潛水】廈門-BI-鍋蓋(584249213) 10:25:58 
胖哥,我看了你部落格,這點確實不太理解。你是指只有唯一值的維度直接合併到事實表嗎?

 

【潛水】bomb(4684895) 10:26:45

 但是這樣做會有個問題,導致事實表變的更大

【潛水】bomb(4684895) 10:27:20

 我覺得比較好的方式是使用列儲存資料庫,列儲存資料庫對於聚合計算是有很大優勢的

【冒泡】杭州-電子病歷<ruanjizhou@qq.com> 10:31:37

 @廈門-BI-鍋蓋 胖哥的部落格,您在哪裡看的?方便發部落格地址我嗎?

【潛水】廈門-BI-鍋蓋(584249213) 10:32:43

 

現在列儲存的廠家就SAP HANA,Oracle Exadata,不多而且比較貴

 

【潛水】廈門-BI-鍋蓋(584249213) 10:33:06

 

http://www.cnblogs.com/hadoopdev/p/4425715.html

【潛水】廈門-BI-鍋蓋(584249213) 10:33:26

 

分散式模式-維度建模新原則

  (1)以值代鍵:針對鍵值唯一的維表,除非必要,否則不引入維表,如IP地址維表,採用IP作為維表的主鍵,事實表中儲存IP值;

      (2)合理分表:傳統關係型資料倉儲存在多表整合的衝動,如上圖Event事實表,各種Acount Ind,Finance Ind等,用來擴充套件表的通用性,試圖把所有的資料都儲存到一張表 中。分散式資料倉儲的設計,恰恰相反,因為單表資料規模的問題,如果要滿足分析和處理的效能,合理的按照業務進行資料的分表儲存。如財務相關事件、賬戶相關事件,單獨成表。更有利於資料的計算和分析。 

【冒泡】南京-電商-凌雲<hds1999@qq.com> 10:38:34

 

列儲存資料庫 只是在平臺層面考慮的問題,但是對於海量資料的時候,在模型上面還是要有一定的考量的

【冒泡】南京-電商-凌雲<hds1999@qq.com> 10:41:29

 

@北京-RTB-胖哥  分散式資料倉儲 在架構層面是如何設計的?

【活躍】北京-RTB-胖哥(1106110976) 10:43:13

 

架構,具體知識技術腳骨

【活躍】北京-RTB-胖哥(1106110976) 10:43:20

 架構還是資料架構

【活躍】北京-RTB-胖哥(1106110976) 10:43:24

 是兩個不同的問題。

【潛水】bomb(4684895) 10:43:50

 

sql

【潛水】bomb(4684895) 10:44:00

 

sql server 也有列儲存了

【活躍】北京-RTB-胖哥(1106110976) 10:44:03

 事實表不變,也大。因為海量資料情況下,單表的容積都是百億級別的。

【活躍】北京-RTB-胖哥(1106110976) 10:44:38

 

Hive的分表,前提是你分表週期內的資料,都已經達到百億級別的情況。

【活躍】北京-RTB-胖哥(1106110976) 10:45:13

 

主要是分散式列式資料庫,維表不能大,大了的話,記憶體消費不起呢。

【冒泡】南京-電商-凌雲<hds1999@qq.com> 10:46:26

 維表不能太,是不是意味著維表就要做分表策略呢?

【冒泡】南京-電商-凌雲<hds1999@qq.com> 10:47:36

那就是維度設計考慮的問題,維度的層次是不是要多一些

【冒泡】南京-電商-凌雲<hds1999@qq.com> 10:48:03

 


  (1)以值代鍵:針對鍵值唯一的維表,除非必要,否則不引入維表,如IP地址維表,採用IP作為維表的主鍵,事實表中儲存IP值;

【冒泡】南京-電商-凌雲<hds1999@qq.com> 10:48:35

  在這裡考慮的主鍵的作用是什麼?

【冒泡】南京-電商-凌雲<hds1999@qq.com> 10:54:10

 @北京-RTB-胖哥  是資料架構

【活躍】北京-RTB-胖哥(1106110976) 10:55:59

 首先IP不重複,可以承擔維表中的主鍵,其次,IP作為事實表重的維度FK,如果只是針對IP地址的數值統計,可以不引入IP維表

【活躍】北京-RTB-胖哥(1106110976) 10:56:07

 FK值就是IP地址。

【冒泡】南京-電商-凌雲<hds1999@qq.com> 10:58:27

但是如果是IP作為一個維表的話,那麼主鍵是不是IP地址 沒有關係啊,因為你在事實表中還是要引用IP維表的主鍵作為FK,同樣可以基於IP維表的主鍵做數量統計的

【潛水】bomb(4684895) 11:00:19

 這樣的情況,事實表也就是IP的維度表,自然不再需要IP的維度表

【冒泡】南京-電商-凌雲<hds1999@qq.com> 11:00:31

 不對

【冒泡】南京-電商-凌雲<hds1999@qq.com> 11:01:13

 事實表中不僅包括IP,還有其他的維度資訊啊

【潛水】bomb(4684895) 11:01:52

 

恩,我明白胖哥的意思

【冒泡】南京-電商-凌雲<hds1999@qq.com> 11:02:12

對於IP維度來講的話,他的也是有層次的,比如國內IP,國外IP,不同電信運營商線路的IP

【潛水】bomb(4684895) 11:02:53

 

這樣的情況我認為一般不會出現,就像一個銷售記錄中有訂單號,我們通常不會用訂單號做維度

【冒泡】南京-電商-凌雲<hds1999@qq.com> 11:03:00

 是不是可以把IP地址理解成一種偽度量去考量的

【潛水】bomb(4684895) 11:06:42

 我認為這個時候IP(或訂單號)其實就是事實表的主鍵了,通常這種情況下也不會對IP(或者訂單號)做分析,做分析時我們會關係一類IP或者某個地域的一類IP是什麼樣的情況,而不會關心單個IP是什麼樣的情況,如果關心單個IP的情況,就是明細查詢了,明細查詢可以考慮用其他的方式,比如搜尋引擎

【潛水】bomb(4684895) 11:08:14

個人的一點愚見,歡迎拍磚

【冒泡】南京-電商-凌雲<hds1999@qq.com> 11:09:05

 IP是事實表的主鍵?能舉例嗎

【活躍】北京-RTB-胖哥(1106110976) 11:09:27

 先掐著,掐明白了,就明白了。

 

【潛水】bomb(4684895) 11:09:40

 

我覺得胖哥的意思,就像我們常見到的銷售訂單表

【潛水】bomb(4684895) 11:09:49

 我同意,胖哥

【潛水】bomb(4684895) 11:10:48

 

在銷售訂單表中,每個訂單號是唯一的,就可以作為主鍵,這種情況下,我們通常不會再做一張訂單號的維度表

 

【冒泡】南京-電商-凌雲<hds1999@qq.com> 11:11:18

 我們在銷售單中一般的考量是ID+單號

【潛水】bomb(4684895) 11:11:25

 其實我們原來一個專案中幹過這樣的實情,結果就呵呵了……

【潛水】bomb(4684895) 11:12:02

 cube處理要很長時間,後來發現使用者根本不會用訂單號這個維度做分析,所以把這個維度去了,就快多了

【冒泡】南京-電商-凌雲<hds1999@qq.com> 11:12:42

 這個是你的事實表資料粒度的考慮

【潛水】bomb(4684895) 11:12:47

 一般我在事實表中沒有主鍵(sql server)

【冒泡】南京-電商-凌雲<hds1999@qq.com> 11:12:57

 如果客戶要用訂單號做分析呢

【潛水】bomb(4684895) 11:13:07

 

那就悲催了……

【冒泡】南京-電商-凌雲<hds1999@qq.com> 11:14:59

模型設計的時候不應該完全按照現有的資料分析需求考量

【潛水】bomb(4684895) 11:15:25

 

這個我同意

【冒泡】南京-電商-凌雲<hds1999@qq.com> 11:16:50

 帶IP或者是訂單號的資料一般是粒度比較低的事實資料或者明細資料

【潛水】bomb(4684895) 11:16:53

 但是對訂單資訊按照每個訂單做分析,我認為是沒有意義的,資料分析是反映批量資料的狀態或趨勢,對單條訂單的查詢是明細查詢

【冒泡】南京-電商-凌雲<hds1999@qq.com> 11:17:49

對啊,所以說事實表的資料是按照維度的粒度做計算,分層的

【活躍】北京-RTB-胖哥(1106110976) 11:22:36

 最細粒度的資料,有時候需要刻意的反規範設計

【活躍】北京-RTB-胖哥(1106110976) 11:22:42

 也是沒辦法的事情。

【冒泡】南京-電商-凌雲<hds1999@qq.com> 11:27:29

 對

【冒泡】南京-電商-凌雲<hds1999@qq.com> 11:27:57

 反規範做冗餘是經常的事情

三、未完待續

      分散式資料倉儲資料儲存模型設計進行中,後續會持續更新,請關注QQ群:分散式資料倉儲建模 398419457。

相關文章