數據倉庫架構、維度數據建模、雪花模型和星型模型

在GeeksforGeeks上看到了幾篇關於數據倉庫架構、維度數據建模的文章,進行翻譯整理並加入了一些自己的理解,輸出了這篇文章。

一、數據倉庫架構

數據倉庫是將不同來源的數據在統一的模式下組織起來的異構集合。構建數據倉庫有兩種方法:自頂向下和自底向上。

1. 自頂向下的方法

自頂向下的架構如下圖:
在這裏插入圖片描述
圖中各主件的作用如下:

  1. External Sources
    外部源是不管收集的數據是何種類型的數據源。數據可以是結構化的、半結構化的和非結構化的。結構化的數據,比如:關係型數據庫中的表等;半結構化的數據,比如:Json串、XML文件等;非結構化的數據,比如:圖片、音頻、視頻等。

  2. Stage Area
    由於從外部數據源抽取的數據沒有特定的格式,因此需要對這些數據進行處理,以將其加載到數據倉庫中。爲此,建議使用ETL工具:

    E(Extracted): 從外部數據源抽取數據。
    T(Transform): 將抽取的數據轉換成標準格式。
    L(Load): 將標準格式的數據加載進數據倉庫。

  3. Data-warehouse
    在自頂向下的方法中,數據倉庫存儲最原始的數據。

  4. Data Marts
    數據集市也是存儲組件中的一部分。它存儲由不同主題組織起來的數據。

  5. Data Mining
    數據挖掘就是對數據倉庫中的大量數據進行分析處理。利用數據挖掘算法找出數據倉庫中隱藏的數據價值。

自頂向下的方法是被數據倉庫之父Bill Inmon定義的——數據倉庫作爲公司的中央倉庫,而數據集市從完整的數據倉庫創建而來。

自頂向下方法的優點:
  1. 由於數據集市是從數據倉庫創建而來,因此提供了數據集市的一致維度視圖。
  2. 這種模型可以很好的應對業務數據的變化。大公司會更喜歡採用這種方法。
  3. 從數據倉庫創建數據集市比較容易。
自頂向下方法的缺點
  1. 設計和維護的成本比較高。
     

2.自底向上

自底向上架構如下圖:
在這裏插入圖片描述
整個數據的流轉過程:

  1. 首先,數據會從外部數據源被抽取過來。
  2. 數據經過ETL之後,不再進入數據倉庫,而是被加載進數據集市。每個數據集市針對的是不同的業務主題,並且可以直接提供報表功能。
  3. 將數據集市整合進數據倉庫。

自下而上的方法是Ralph Kimball(數據倉庫和BI領域的權威專家)提出的——首先創建數據集市,併爲分析提供單個業務視圖,在創建完整的數據集市之後再創建數據倉庫。

自底向上方法的優點
  1. 由於是先創建數據集市,所以會快速生成報表。
  2. 數據倉庫可以根據數據集市進行擴展。
  3. 設計成本比較低。
自底向上方法的缺點
  1. 由於維度視圖的侷限性,造成這種方法沒有對數據的一個全局把控。

 

二、維度數據建模

維度建模的概念是由Ralph Kimball提出的,是許多OLAP(Online Analytical Processing,聯機分析處理)系統使用的數據模型。維度建模有兩個比較常用的建模模型:星型模型雪花模型,模型由事實表維度表組成。

維度建模步驟如下圖:

 
在這裏插入圖片描述

  1. Identifying the business objective
    第一步就是確定業務對象,比如,銷售(Sales)、人力資源(HR)、促銷(Marketing)等。業務對象的選擇直接影響着之後所用數據的質量,是數據建模中非常重要的一步。
  2. Identifying Granularity
    確定要存儲到表中的數據的粒度。
  3. Indentify Dimensions and ites Attributes
    維度用來對數據倉庫中的事實數據進行分類。比如,數據維度可能會是時間中的年、月、日,也可能是地域中的省、市、區縣等等。
  4. Indentifying the Fact
    確認事實表,比如,商品價格、尺寸等。
  5. Building of Schema
    構建模型,比較常用的模型有:星型模型和雪花模型。

三、星型模型和雪花模型

1. 星型模型

星型模型時數倉建模中較爲常用的模型,它包含一個或多個事實表,以及連接到事實表上的維度表。星型模型相較於雪花模型在查詢處理方面是更爲高效的。

星型模型之所以被稱爲星型,是因爲它的物理模型就像是一個恆星的形狀,中心是一個事實表,事實表上連着維度表。如下圖:
Star
在上圖中,SALES就是一個事實表,其他的都是維度表,並各自都有屬於自己的屬性。事實表中存儲業務流程中的定量數據;維度表中存儲事實數據的描述性特徵。事實數據,比如圖中的:銷售價格、數量、重量等。

星型模型的優點:
  1. 關聯查詢比較簡單,沒有過於複雜的關聯關係。
  2. 由於一些維度表已經預先進行了合併,因此不需要過多的join操作,那麼關聯查詢效率就會更高。
星型模型的缺點:
  1. 數據並不像3NF那樣規範化。
  2. 由於一些維度表已經預先進行了合併,就會造成數據的冗餘存儲,佔用了更多的空間。
     

2. 雪花模型

雪花模型可以認爲是星型模型的變體。雪花模型在星型模型的基礎上,對維度表進行了更規範化的拆分,就會促使某些維度表拆分出更細分的維度表。看下圖:
Snowflake
圖中就把Employee表拆分成了Employee和Department兩張維度表,Department維度表可以提供一個部門更詳細的信息,比如名字和位置。還有也把Customer維度表拆分成了Customer和City兩張維度表,City維度表有關於一個城市的詳細信息,比如城市名、郵政編碼、所屬省和國家。

雪花模型和星型模型的主要區別在於,雪花模型的維度表是規範化存儲的,減少了冗餘。這樣做的好處是易於維護和節省存儲空間,缺點就是需要更多的連接來執行查詢,性能較差。

通常情況下,不建議使用雪花模型,因爲它會增加維度模型的複雜度,可理解性差,而且需要連接更多的表來滿足查詢,性能低。

最後總結一下雪花模型有哪些優缺點。

優點:
  1. 提供了規範化的數據,數據完整性高。
  2. 由於數據時高度規範化的,因此佔用的存儲空間較小。
缺點:
  1. 高度結構化的數據,在另一方面也增加了模型的複雜度。
  2. 規範化的數據,在查詢的時候會有更多的join連接,就會導致較差的性能。
發佈了14 篇原創文章 · 獲贊 3 · 訪問量 3915
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章