了解主要模式:星與雪花
已發表: 2022-08-26多維模式旨在構建數據倉庫系統模型。
這些模式的主要目的是滿足為分析目的而構建的大型數據庫 (OLAP) 的需求。
此方法用於對數據庫中的數據進行排序,使數據庫中的內容排列良好。 該模式允許客戶提出與業務或市場趨勢相關的問題。
此外,多維模式以數據立方體的形式表示數據,可以從不同的角度和維度查看和建模數據。
它分為三種類型,但很多人混淆了星星和雪花。 因此,他們很難選擇更好的模型。
如果您是其中之一,讓我們討論星型和雪花模式之間的區別,從定義開始,了解它們的好處、挑戰、圖表和特徵。
什麼是多維模式?
Schema 是指完整的數據庫和數據集市的邏輯描述。 它包括記錄的名稱及其描述,包括聚合和相關的數據項。
數據庫一般使用關係模型來描述,而數據倉庫系統使用Schema模型。
可以使用數據挖掘查詢語言 (DMQL) 定義多維模式。
為了定義數據集市和數據倉庫,它使用兩個原語——維度定義和多維數據集定義。
多維模式使用不同類型的模式模型。 他們是:
- 星型圖
- 雪花模式
- 銀河模式
讓我們討論一下什麼是星型和雪花模式。
星與雪花:它們是什麼?

什麼是星圖?
星型模式是一種架構數據倉庫和商業智能模型,需要單個事實表來存儲測量數據和事務數據。 它還使用不同的較小維度表來保存有關業務數據的屬性。
它是根據其結構命名的。 事實表就像一顆星,位於圖表的中心,而小維度表就像中心表的分支一樣,形成一個星形結構。
每個星型模式都由一個事實表和多個小維度表組成。 事實表包括需要分析的特定的、可測量的數據,例如記錄的績效、財務數據或銷售記錄。 它可能是一次或事務性的歷史數據快照。
此外,星型模式是數據倉庫和數據集市模式中最簡單、最基本的模式。 它在處理基本查詢方面很有效。 星型模式通常支持商業智能、即席查詢、分析應用程序和在線分析處理多維數據集。
星型模式還支持許多記錄的計數、平均、總和和其他聚合。 用戶可以輕鬆地按維度過濾和分組聚合。 例如,用戶會生成諸如“查找 6 月份的所有銷售記錄”或“分析 2022 年 XYZ 辦公室的總收入”之類的查詢。
什麼是雪花模式?

雪花模式是一種多維數據模型,也可以稱為星型模式的擴展。 這是因為雪花模式中的維度表分解為子維度。
如果一個或多個維度表不直接鏈接到事實表而是通過其他維度表連接,那麼架構就是一片雪花。
雪花化是一種對星型模式中的維度表進行規範化的現象。 當您對所有維度表進行規範化時,生成的結構類似於在結構中間包含事實表的雪花。
簡單來說,雪花模式由模型中間的一個事實表組成,它連接到維度表,維度表又鏈接到其他維度表。 此模式用於增強查詢的性能。
該模型是為跨複雜關係和維度進行快速、靈活的查詢而創建的。 它有助於各個維度級別之間的一對多和多對多關係。
由於更嚴格地遵守更多規範化標準,您將獲得更高的存儲效率。 但是,與星型模式等非規範化數據模型相比,數據冗餘可以忽略不計,並且性能較低。
星與雪花:它們是如何工作的?

星型模式如何工作?
星型模型中間的事實表存儲兩種類型的信息——數值和維度屬性值。 讓我們通過一個銷售數據庫的例子來理解它們。
- 數值對於每一行和數據點都是唯一的。 這與存儲在另一行中的數據無關或不相關。 這些是關於給定交易的事實,例如總金額、訂單數量、確切時間、淨利潤、訂單 ID 等。
- 維度屬性值不直接存儲任何數據,而是存儲維度表中行的外鍵值。 中心表的不同行會引用這些信息,例如數據值、銷售人員 ID、分公司 ID、產品 ID 等。
維度表總是存儲來自事實表的支持信息。 每個維度表都與事實表的列以及維度值相關,並存儲有關該值的附加數據。
示例:員工維度表以員工 ID 作為鍵值,還包含姓名、性別、地址、電話號碼等信息。 同樣,產品維度表存儲信息,包括產品名稱、顏色、首次上市日期、製造成本等。
雪花模式如何工作?

想想一個帶有中心盒子的雪花設計,並通過該盒子與不同的點進行不同的連接。 為了維護數據集市和數據倉庫,雪花模式設計應運而生。
它類似於星型模式,但有細微的變化。 與星型模式不同,雪花模式擴展了它的子維度表,這些子維度錶鍊接到維度表。
該模型的主要目的是對星形模型的非規範化信息進行歸一化。 這樣,它可以解決與星型模式相關的常見問題。
在模式的核心,您會發現一個與維度表中包含的信息鏈接的事實表。 這些表再次向外輻射到具有描述維度表信息的詳細信息的子維度表。
示例:雪花模式包含一個銷售事實表和商店位置、行、系列、產品和時間維度表。 市場維度由兩個維度表組成,商店作為主維度表,商店的位置作為子維度表。 產品維度具有三個子維度表,分別是產品、線和系列子維度表。
星與雪花:特徵

星型模式的特徵
- 星型模式可以從規範化數據中過濾數據,以滿足數據倉庫的需求。 唯一鍵是根據每個事實表的關聯信息生成的,以標識每一行。
- 它提供快速計算和匯總,例如獲得的收入和每月月底售出的總物品。 這些細節可以根據需要通過構建合適的查詢來過濾。
- 它是事件的度量,包括由外鍵組成的有限數值。 這些鍵與維度表相關。 有多種類型的事實表以原子級別的值作為框架。
- 事務事實表包含有關特定事件的數據,例如銷售和假期。
- 記錄事實包括給定的時期,例如年底或每個季度的帳戶信息。
- 維度表給出了在中心表中找到的屬性或記錄的詳細數據。
- 用戶可根據需要自行設計表格。
- 您可以使用星型模式來累積快照表。
雪花模式的特徵
- 雪花模式需要較小的磁盤空間。
- 由於其獨立的主要維度表,該模型易於實現。
- 維度表包含至少兩個屬性來定義多個粒度的信息。
- 由於有多個表,與星型模式相比,性能較低。
- 由於規範化,雪花模式具有最高的數據完整性級別和低冗餘。
Star vs. Snowflake:優勢

星型模式的優勢
- 星型模式是數據集市模式中最簡單的方式。
- 它有一個簡單的報告邏輯。 這個邏輯是動態隱含的。
- 它的設計使用通過在線交易流程應用的餵食立方體,以使立方體高效地工作。
- 星型模式由簡單的邏輯和查詢組成,這些查詢很容易從事務過程中提取出來。
- 它為報告應用程序提供了增強的性能。
- 它被部署來控制數據的快速恢復。
- 過濾和選擇的信息可以很容易地應用於不同的情況。
雪花模式的優點
- 由於磁盤存儲需求較少,星型模式用於提高查詢性能。
- 它在組件和維度級別之間的關係中提供了更大的可伸縮性。
- 它更容易維護。
- 星型模式提供快速的數據檢索。
- 它是用於數據倉庫的常見且簡單的數據模式。
- 它有助於提高數據質量。
- 結構化數據減少了數據完整性問題。
星與雪花:限制
星型模式的局限性
它具有高度的非規範化和完整性狀態。 如果用戶更新數據失敗,整個過程就會崩潰。 安全和保護也是有限的。 此外,星型模式不如分析模型靈活。 它沒有為各種關係提供有效的支持。

雪花模式的局限性
您會發現 Snowflake 的主要限制是由於小維度表數量的增加而導致的額外維護工作。 許多複雜的查詢使查找所需數據變得具有挑戰性。 此外,由於表格較高,問題的實施時間也很長。 這種模式也是剛性的,需要更高的維護成本。
星與雪花:差異

Star 和 Snowflake 是多維模式的類型,但具有不同的結構和屬性。 前者像星星,後者像雪花,定義了他們的名字。
在星型模式中,只有一個連接在中心事實表和側維度表之間建立關係。 另一方面,在雪花模式中,需要多個連接來鏈接到維度表。
當維度表中的行數較少時,通常使用星型模式,而當維度表相對較大時,使用雪花模式。
下圖區分了這兩種模型以及維度表和事實表如何在不同的模式中鏈接。
參數 | 星型圖 | 雪花模式 |
磁盤空間 | 星型模式使用更多磁盤空間。 | 雪花模式使用更少的磁盤空間。 |
數據冗餘 | 它具有高數據冗餘。 | 它具有低數據冗餘。 |
正常化 | 維度表是非規範化的,這意味著在表中重複相同的值。 | 維度表已完全規範化。 |
查詢性能 | 執行查詢需要最少的時間,從而獲得更好的性能。 | 查詢執行比星型模式花費更多時間,使其性能不如星型模式。 |
查詢複雜度 | 查詢複雜度低。 | 查詢複雜度高於星型模式。 |
維護 | 由於數據冗餘度高,維護星型模式有點困難。 | 由於數據冗餘低,易於維護和更改雪花模式。 |
數據的完整性 | 數據完整性很高,因為數據冗餘存儲在維度表中存在多個副本的位置。 | 數據完整性很低,因為它完全規範了維度表。 |
層次結構 | 星型模式中維度表的層次結構存儲在維度表中。 | 層次結構分為單獨的維度表。 |
數據庫設計 | 它有一個簡單的數據庫設計。 | 它有一個非常複雜的數據庫設計。 |
事實表 | 多個維度表圍繞著一個事實表。 | 事實表被維度表包圍,維度表也被子維度表包圍。 |
設置 | 星型模式易於設計和設置,因為直接關係代表它們。 | 另一方面,雪花模式的設置有點複雜。 |
立方體處理 | 立方體處理速度更快。 | 由於復雜的連接,多維數據集處理有點慢。 |
外鍵 | 它有最少數量的外鍵。 | 它具有最大數量的外鍵。 |
結論
Star 和 Snowflake 模式在不同領域都很有用。 因此,決定哪個更好是基於他們的要求。
雪花模式是星型模式的擴展,它對星型模式中的維度表進行規範化。
星型模式設計簡單,運行查詢更快,設置也很簡單。 另一方面,雪花模式更容易維護,佔用更少的磁盤空間,並且更不容易出現數據完整性問題。
因此,如果您需要簡單的設計、更少的外鍵和更快的多維數據集處理,星型模式可能是更好的選擇。 但是,如果您需要更少的磁盤空間、低數據完整性和低維護,雪花模式可能更合適。
您還可以探索一些最佳的圖形數據庫解決方案。