1. 程式人生 > >星形模型和雪花模型比較

星形模型和雪花模型比較

一、概述
在多維分析的商業智慧解決方案中,根據事實表和維度表的關係,又可將常見的模型分為星型模型和雪花型模型。在設計邏輯型資料的模型的時候,就應考慮資料是按照星型模型還是雪花型模型進行組織。
當所有維表都直接連線到“ 事實表”上時,整個圖解就像星星一樣,故將該模型稱為星型模型,如圖 1 。
星型架構是一種非正規化的結構,多維資料集的每一個維度都直接與事實表相連線,不存在漸變維度,所以資料有一定的冗餘,如在地域維度表中,存在國家 A 省 B 的城市 C 以及國家 A 省 B 的城市 D 兩條記錄,那麼國家 A 和省 B 的資訊分別儲存了兩次,即存在冗餘。
圖1. 銷售資料倉庫中的星型模型

當有一個或多個維表沒有直接連線到事實表上,而是通過其他維表連線到事實表上時,其圖解就像多個雪花連線在一起,故稱雪花模型。雪花模型是對星型模型的擴充套件。它對星型模型的維表進一步層次化,原有的各維表可能被擴充套件為小的事實表,形成一些區域性的 " 層次 " 區域,這些被分解的表都連線到主維度表而不是事實表。如圖 2,將地域維表又分解為國家,省份,城市等維表。它的優點是 : 通過最大限度地減少資料儲存量以及聯合較小的維表來改善查詢效能。雪花型結構去除了資料冗餘。
圖 2. 銷售資料倉庫中的雪花型模型

星型模型因為資料的冗餘所以很多統計查詢不需要做外部的連線,因此一般情況下效率比雪花型模型要高。星型結構不用考慮很多正規化的因素,設計與實現都比較簡單。雪花型模型由於去除了冗餘,有些統計就需要通過表的聯接才能產生,所以效率不一定有星型模型高。正規化也是一種比較複雜的過程,相應的資料庫結構設計、資料的 ETL、以及後期的維護都要複雜一些。因此在冗餘可以接受的前提下,實際運用中星型模型使用更多,也更有效率。
二、使用選擇
星形模型(Star Schema)和雪花模型(Snowflake Schema)是資料倉庫中常用到的兩種方式,而它們之間的對比要從四個角度來進行討論。
  1.資料優化
雪花模型使用的是規範化資料,也就是說資料在資料庫內部是組織好的,以便消除冗餘,因此它能夠有效地減少資料量。通過引用完整性,其業務層級和維度都將儲存在資料模型之中。


相比較而言,星形模型實用的是反規範化資料。在星形模型中,維度直接指的是事實表,業務層級不會通過維度之間的參照完整性來部署。

  2.業務模型
主鍵是一個單獨的唯一鍵(資料屬性),為特殊資料所選擇。在上面的例子中,Advertiser_ID就將是一個主鍵。外來鍵(參考屬性)僅僅是一個表中的欄位,用來匹配其他維度表中的主鍵。在我們所引用的例子中,Advertiser_ID將是Account_dimension的一個外來鍵。
在雪花模型中,資料模型的業務層級是由一個不同維度表主鍵-外來鍵的關係來代表的。而在星形模型中,所有必要的維度表在事實表中都只擁有外來鍵。
  3.效能
第三個區別在於效能的不同。雪花模型在維度表、事實表之間的連線很多,因此效能方面會比較低。舉個例子,如果你想要知道Advertiser 的詳細資訊,雪花模型就會請求許多資訊,比如Advertiser Name、ID以及那些廣告主和客戶表的地址需要連線起來,然後再與事實表連線。
而星形模型的連線就少的多,在這個模型中,如果你需要上述資訊,你只要將Advertiser的維度表和事實表連線即可。
  4.ETL
雪花模型載入資料集市,因此ETL操作在設計上更加複雜,而且由於附屬模型的限制,不能並行化。
星形模型載入維度表,不需要再維度之間新增附屬模型,因此ETL就相對簡單,而且可以實現高度的並行化。
  總結
雪花模型使得維度分析更加容易,比如“針對特定的廣告主,有哪些客戶或者公司是線上的?”星形模型用來做指標分析更適合,比如“給定的一個客戶他們的收入是多少?”

相關推薦

星形模型雪花模型比較

一、概述 在多維分析的商業智慧解決方案中,根據事實表和維度表的關係,又可將常見的模型分為星型模型和雪花型模型。在設計邏輯型資料的模型的時候,就應考慮資料是按照星型模型還是雪花型模型進行組織。 當所有維表都直接連線到“ 事實表”上時,整個圖解就像星星一樣,故將該模型稱為星型模

星形模型雪花模型

一、概述 在多維分析的商業智慧解決方案中,根據事實表和維度表的關係,又可將常見的模型分為星型模型和雪花型模型。在設計邏輯型資料的模型的時候,就應考慮資料是按照星型模型還是雪花型模型進行組織。 當所有維表都直接連線到" 事實表"上時,整個圖解就像星星一樣,故將

對星型模型雪花模型的簡單理解

alt 存在 body 所有 維度 info 多層 分享 post 星形模型 雪花模型 星型模型是所有維度表都是連接在一個事實表上面,雪花模型是將維度表拆分地更加詳細,是多層次的。 在星型模型的維度表裏面,一張維度表儲存了眾多存在冗余的信息,為什麽冗余,在哪裏冗余,我

資料倉庫的星形雪花模型

本文是這篇文章的摘錄:http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/10g/r2/owb/owb10gr2_gs/owb/lesson3/starandsnowflake.htm什麼時候使用雪花模型?

時間序列--選擇基準模型(以後的模型這個基準比較

1.以前基準是用上一個時刻的值當做這一個時刻的值, 現在我設定引數不知道過去哪一個時刻的值取當做今天的值 from pandas import Series from sklearn.metrics import mean_squared_error from math import sqr

WinSock---WSAAsyncSelect IO模型select模型比較

關於WSAAsyncSelect IO模型和 select模型的比較。 個人認為一個是被動的,一個是被動的。 WSAAsyncSelect IO模型 是基於事件的。也就是說用 WINSOCK_API_LINKAGE int WSAAPIWSAAsyncSelect(   

判別模型生成模型

使用 sin cow ria regress gauss 生成 == 給定 【摘要】 - 生成模型:無窮樣本==》概率密度模型 = 產生模型==》預測 - 判別模型:有限樣本==》判別函數 = 預測模型==》預測 【簡介】 簡單的說,假設o是觀察值,

生成模型判別模型

特征 數據 學習方法 最大 mem 針對 表示 不能 問題 1、定義: 生成模型(或稱產生式模型)和判別模型(或稱判別式模型)的本質區別在於模型中觀測序列x和狀態序列y的決定關系。前者假設y決定x,後者假設x決定y。 2、生成模型特點 2.1、生成模型以“狀態序列y按照一定

Actor模型CSP模型的區別

  Akka/Erlang的actor模型與Go語言的協程Goroutine與通道Channel代表的CSP(Communicating Sequential Processes)模型有什麼區別呢?   首先這兩者都是併發模型的解決方案,我們看看Actor和Channel這兩個方案的不同:

【IM】關於引數模型模型的理解

學習模型按照引數與維度還是樣本相關,可分為引數模型(引數與維度相關)和核模型(引數與樣本相關)。 對於核模型的核方法或核函式說明有如下博文,參考《圖解機器學習》理解如下兩頁。 https://blog.csdn.net/fjssharpsword/article/details/8166

MVC模型MTV模型

MVC模型 MVC 設計模型是一種使用 Model View Controller( 模型-檢視-控制器)設計建立 Web 應用程式的模式。 Model(模型):是應用程式中用於處理應用程式資料邏輯的部分。     通常模型物件負責在資料庫中存取資料。 View(檢視):是

機器學習之---生成模型判別模型

  監督學習方法可分為兩大類,即生成方法與判別方法,它們所學到的模型稱為生成模型與判別模型。 判別模型:判別模型是學得一個分類面(即學得一個模型),該分類面可用來區分不同的資料分別屬於哪一類; 生成模型:生成模型是學得各個類別各自的特徵(即可看成學得多個模型),可用這些

星型模型雪花模型

星型模型和雪花模型 在多維分析的商業智慧解決方案中,根據事實表和維度表的關係,又可將常見的模型分為星型模型和雪花型模型。在設計邏輯型資料的模型的時候,就應考慮資料是按照星型模型還是雪花型模型進行組織。 星型模型 當所有維表都直接連線到“ 事實表”上時,整個圖解就像星星一樣,

判別模型生成模型——機器學習

轉載自:https://www.cnblogs.com/zeze/p/7047630.html    判別式模型(discriminative model) 產生式模型(generative model)

bs模型cs模型

  bs模式 客戶端通過瀏覽器,瀏覽web伺服器上的網頁,這樣的模型叫bs模型,b指客戶端browser,s指服務端server。在客戶端和瀏覽器端之間走的報文是http協議(即超文字傳輸協議)   cs模型 客戶端(client)發報文,伺服器(

【機器學習】生成模型判別模型

定義: 生成方法由資料學習聯合概率分佈P(x, y),然後求出條件概率分佈P(y|x)作為預測的模型。 包括樸素貝葉斯,貝葉斯網路,高斯混合模型,隱馬爾科夫模型等。 判別方法由資料直接學習決策函式

資料庫設計---PowerDesigner(物理模型概念模型

上一篇介紹了個工具建資料庫:PowerDesigner V16.5 安裝教程以及漢化(資料庫建模)?,現在我就說一下怎麼用這個建資料庫吧。 1、首先新建模型--選擇概念模型(CDM) 2、新建實體(學生和卡),設定相應的屬性

CNN模型RNN模型在分類問題中的應用(Tensorflow實現)

在這篇文章中,我們將實現一個卷積神經網路和一個迴圈神經網路語句分類模型。 本文提到的模型(rnn和cnn)在一系列文字分類任務(如情緒分析)中實現了良好的分類效能,並且由於模型簡單,方便實現,成為了競賽和實戰中常用的baseline。 cnn-text-classifica

tensorflow儲存模型恢復模型

儲存模型 w1 = tf.placeholder("float", name="w1") w2 = tf.placeholder("float", name="w2") b1= tf.Variable(2.0,name="bias") feed_dict ={w1:4,w2:8} w3 =

Tensorflow載入預訓練模型儲存模型

使用tensorflow過程中,訓練結束後我們需要用到模型檔案。有時候,我們可能也需要用到別人訓練好的模型,並在這個基礎上再次訓練。這時候我們需要掌握如何操作這些模型資料。看完本文,相信你一定會有收穫! 1 Tensorflow模型檔案 我們在checkpo