在資料倉儲的建設中,一般都會圍繞著星型模型和雪花模型來設計表關係或者結構。下面我們先來理解這兩種模型的概念。
(一)星型模型圖示如下:
星型模是一種多維的資料關係,它由乙個事實表和一組維表組成。每個維表都有乙個維作為主鍵,所有這些維的主鍵組合成事實表的主鍵。強調的是對維度進行預處理,將多個維度集合到乙個事實表,形成乙個寬表。這也是我們在使用hive時,經常會看到一些大寬表的原因,大寬表一般都是事實表,包含了維度關聯的主鍵和一些度量資訊,而維度表則是事實表裡面維度的具體資訊,使用時候一般通過join來組合資料,相對來說對olap的分析比較方便。
(二)雪花模型圖示如下:
當有乙個或多個維表沒有直接連線到事實表上,而是通過其他維表連線到事實表上時,其**就像多個雪花連線在一起,故稱雪花模型。雪花模型是對星型模型的擴充套件。它對星型模型的維表進一步層次化,原有的各維表可能被擴充套件為小的事實表,形成一些區域性的 "層次 " 區域,這些被分解的表都連線到主維度表而不是事實表。雪花模型更加符合資料庫正規化,減少資料冗餘,但是在分析資料的時候,操作比較複雜,需要join的表比較多所以其效能並不一定比星型模型高。
(三)星型模型和雪花模型的優劣對比:
屬性星型模型
雪花模型
資料總量多少
可讀性容易
差表個數少多
查詢速度快慢
冗餘度高
低對實時表的情況
增加寬度
字段比較少,冗餘底
擴充套件性差
好(四)應用場景
星型模型的設計方式主要帶來的好處是能夠提公升查詢效率,因為生成的事實表已經經過預處理,主要的資料都在事實表裡面,所以只要掃瞄實時表就能夠進行大量的查詢,而不必進行大量的join,其次維表資料一般比較少,在join可直接放入記憶體進行join以提公升效率,除此之外,星型模型的事實表可讀性比較好,不用關聯多個表就能獲取大部分核心資訊,設計維護相對比較簡答。
雪花模型的設計方式是比較符合資料庫正規化的理念,設計方式比較正規,資料冗餘少,但在查詢的時候可能需要join多張表從而導致查詢效率下降,此外規範化操作在後期維護比較複雜。
(五)總結
通過上面的對比,我們可以發現資料倉儲大多數時候是比較適合使用星型模型構建底層資料hive表,通過大量的冗餘來提公升查詢效率,星型模型對olap的分析引擎支援比較友好,這一點在kylin中比較能體現。而雪花模型在關係型資料庫中如mysql,oracle中非常常見,尤其像電商的資料庫表。在資料倉儲中雪花模型的應用場景比較少,但也不是沒有,所以在具體設計的時候,可以考慮是不是能結合兩者的優點參與設計,以此達到設計的最優化目的。
理解資料倉儲中星型模型和雪花模型
在資料倉儲的建設中,一般都會圍繞著星型模型和雪花模型來設計表關係或者結構。下面我們先來理解這兩種模型的概念。一 星型模型圖示如下 img 星型模是一種多維的資料關係,它由乙個事實表和一組維表組成。每個維表都有乙個維作為主鍵,所有這些維的主鍵組合成事實表的主鍵。強調的是對維度進行預處理,將多個維度集合...
資料倉儲的星型模型和雪花模型
在多維分析的商業智慧型解決方案中,根據事實表和維度表的關係,又可將常見的模型分為星型模型和雪花型模型。在設計邏輯型資料的模型的時候,就應考慮資料是按照星型模型還是雪花型模型進行組織。當所有維表都直接連線到 事實表 上時,整個 就像星星一樣,故將該模型稱為星型模型,如圖 1 星型架構是一種非正規化的結...
資料倉儲星型模型VS雪花模型
在多維分析的商業智慧型解決方案中,根據事實表和維度表的關係,可將常見的模型分為星型模型和雪花模型。在設計邏輯型資料的模型的時候,就應考慮資料是按照星型模型還是雪花模型進行組織。當所有維表都直接連線到事實表上時,整個 就像星星一樣,故將該模型稱為星型模型。星型架構是一種非正規化的結構,多維資料集的每乙...