1 數據倉庫的基本概念
1.1 為什么要使用數據倉庫
??數據倉庫是從數據庫基礎上發展而來,主要是為了方便組織、理解和使用數據。那么問題來了,傳統的數據庫不也可以實現這些功能嗎,為什么要發展數據倉庫技術?試想這樣一個場景,現在我們想要對數據庫中的數據進行一些復雜的操作,比如我們想要按照不同季度,不同地區去統計不同品牌手機的銷售量。對于傳統數據庫我們需要對多張表進行連接操作,同時使用sum()函數,group by進行分組等操作。當數據量小的時候處理速度還能接受,當數據量龐大時這些復雜操作十分消耗系統資源。傳統的數據庫可以滿足應用的日常事務處理工作,但無法滿足對數據進行復雜分析處理。這時候就需要數據倉庫,它是專門設計用來進行復雜數據分析處理的。
1.2 數據庫和數據倉庫的比較
1.2.1 數據的分類
??對于數據,我們可以根據用途分為兩類:操作型數據和分析型數據。傳統數據庫對數據進行增刪改查操作所以是操作型數據,數據倉庫中的數據主要用來分析決策屬于分析型數據。
表1.1 兩類數據的區別
操作型數據 | 分析型數據 | |
---|---|---|
粒度 | 細粒度 | 綜合的,粗粒度 |
存儲數據 | 存取瞬間 | 歷史數據 |
驅動 | 事務驅動 | 分析驅動 |
目的 | 面向應用 | 面向分析 |
操作數據大小 | 一次操作數據小 | 一次操作數據大 |
1.2.2 數據庫和數據倉庫的區別
數據庫和數據倉庫是相輔相成的,兩者不是相互取代的關系,各自用于不同場景。
表1.2 數據庫和數據倉庫的區別
數據庫 | 數據倉庫 | |
---|---|---|
目的 | 面向應用 | 面向分析 |
容量 | 相對小 | 巨大 |
存儲的數據 | 實時的數據 | 歷史數據 |
操作 | 一次操作一個記錄 | 一次操作一個數據集合 |
冗余 | 非冗余或少量冗余 | 經常冗余 |
操作頻率 | 頻繁 | 相對不頻繁 |
計算 | 簡單操作 | 復雜操作 |
特色 | 支持事務處理 | 支持數據分析 |
1.3 數倉的特點
- 面向主題:所謂主題就是一些數據集合,有完整的、一致的內容。面向主題的數據組織方式能統一的刻畫各個分析對象所涉及的各項數據,以及這些數據之間的聯系
- 集成:不同的數據庫和數據源的數據經過抽取、篩選、清理、轉換等流程,才將它們集成到數據倉庫中
- 穩定不易失:數據倉庫在某個短時段內看是保持不變的,一般數倉建構完成較長時間內會保持相對穩定,不會對數據進行修改
- 隨時間變化:數據倉庫中的是歷史數據,數據都有時間維度,所以從長時間看數據倉庫又是變化的。
1.4 數據倉庫系統
1.4.1 數據倉庫系統組成
1.4.2 ETL
ETL分別是Extract、Transform、Load三個英文單詞的首字母,即抽取、轉換和裝載。
- 數據抽取:把數據從各種各樣的存取環境提取出來,需要考慮抽取方式、抽取時機、抽取周期等。
- 數據轉換:將異構的數據格式能統一起來,轉換為統一格式。
- 數據裝載:將清洗處理完的數據導入數據倉庫中。
2 數據倉庫建模
2.1 構建模式
數據分析以數據為驅動,數據倉庫又是數據倉庫系統的核心,所以構建良好的數據倉庫十分關鍵。數據倉庫主要有先整體再局部和先局部再整體兩種構建模式,即所謂的自頂向下和自底向上構建模式。這里先提一個概念數據集市,它指的是數據倉庫的子集,存儲的是數據倉庫的部分數據,跟數據倉庫是整體和部分的關系。
2.1.1 自頂向下構建模式
自頂向下的構建模式要求先對數據倉庫進行整體設計,之后再針對各個主題構建數據集市。這種構建模式要求企業技術成熟,對業務理解透徹。
優點:數據規范程度高,減少數據冗余和不一致;可以快速使用數據進行分析和挖掘。
缺點:建設周期長、見效慢,對企業技術要求高,風險較大。
2.1.2 自底向上構建模式
自底向上的構建模式要求先建立各個主題的數據集市,之后在此基礎上逐步擴充建立完整的數據倉庫。
優點:投資少、見效快,設計靈活,結構簡單易實現。
缺點:數據需要逐步清洗和提煉,數據會有較多冗余和不一致性。
2.2 多維數據模型及其相關概念
- 粒度:粒度是數據倉庫中數據單元的詳細程度,數據越詳細粒度越小,數據綜合度高粒度越大。
- 維度:維度(簡稱維)是指人們觀察事物的特定角度,概念上類似于關系表的屬性。
- 維屬性和維成員:一個維是通過一組屬性描述的,如時間維可以包含年份、季度、月份和日期等屬性,這些屬性統稱為維屬性。一個時間維的具體取值,如20xx年第一季度6月8號稱為維成員。
- 維層次:維度中的維屬性的粒度可能不同,可以將不同粒度的屬性映射到不同層次,如“年份→季度→月份→日期”就是維層次。
- 度量:度量也稱為事實,是數據倉庫中具有實際意義的數值型數據,如銷售量、單價、庫存量等。度量是多維數據的核心,是用戶瀏覽多維數據時重點查看的數據。
- 事實表:存放度量的表稱為事實表,用來記錄事實并做相應指標的統計分析,通常記錄數量很多。事實表中除了度量外其他字段都是維表的關鍵字(外鍵)。
- 維表:維表存放維信息,包括維屬性(列)和維層次,一個維用一個維表表示。
2.3 常見的多維數據模型
常見的多維數據模型有星形模式、雪花模式和事實星座模式,它們三者之間的關系如圖所示。
2.3.1 星形模式
星形模型由一個事實表和多個維表組成。事實表是該模式的核心,通過事實表將各種不同的維表連接起來。
2.3.2 雪花模式
雪花模式在星形模式的基礎上,允許每個維表可以連接其他維表。
2.3.3 事實星座模式
事實星座模式有多個事實表,一般一個主題(問題)對應一個事實表,在多主題情況下一個事實表已經不能滿足要求,所以事實星座模式允許使用多個事實表來滿足多主題的情況。
3 OLAP
??OLAP(OnLine Analytical Processing,聯機分析處理),主要是對數倉數據進行訪問、處理和分析的一類軟件技術。直白來說,通過OLAP技術用戶可以操作數據進行分析處理。
3.1 OLAP的基本操作
1、切片和切塊
按條件選擇多維數據的維成員,類似于數據庫中select操作。切片的結果是一維數據,而切塊操作結果是多維數據,切塊可以看成是多次使用切片。
2、旋轉
旋轉是一種視圖操作,改變頁面顯示的維方向,本質是用戶可以從不同角度來看數據。
上面兩張圖是以手機銷售為例,我們可以清楚的明白旋轉操作的含義,將季度和品牌進行旋轉操作,將原來各省每季度各品牌銷售數量,改為各省各品牌每季度銷售數量,我們的觀察視角發生了變化。
3、上卷
上卷操作通過維的概念分層向上進行數據聚集。如下面的圖片所示,假設我們統計手機的總銷售量,我們把所有品牌的手機銷售量求和,這個操作SUM就是從品牌上卷到了手機。
4、下鉆
下鉆是上卷的逆操作,由上層不詳細的數據到更詳細的數據。下圖我們從品牌下鉆到每個品牌的具體型號,顯然我們的數據更加詳細了。
總結:本文是自己學習數據倉庫的筆記和總結,介于作者也是初學者,難免有錯誤歡迎各位指正。由于篇幅較短有些內容沒有介紹,下附思維導圖一張。
參考文獻:李春葆,李石君,李筱馳. 數據倉庫與數據挖掘實戰. 電子工業出版社,2014.
附件:數倉思維導圖