天天看點

淺談資料倉庫、BI與OLAP一:資料倉庫二:商業智能(BI) 三:OLAP 

Table of Contents

一:資料倉庫

1.1 概述

1.2 次元模組化

1.2.1 星型模型 

1.2.2 雪花模型 

1.2.3 事實星座模型

1.2.4 三種模型對比 

1.3 事實表和次元表

二:商業智能(BI) 

三:OLAP 

 3.1 什麼是OLAP

 3.2 OLAP分類介紹

 3.3 次元和度量

一:資料倉庫

1.1 概述

資料倉庫(Data Warehouse)簡稱數倉(DW),是一種資訊系統的資料儲存理論 ,此理論強調的是利用某些特殊資料存儲方式,讓所包含的資料有利于分析處理,進而産生有價值的資訊并以此做出決策。

簡單來講,資料倉庫就是一個各種資料的中心存儲系統,在數倉的基礎上可以進行資料挖掘,資料分析等操作。後續講到的BI也必須建立在數倉的基礎上。

1.2 次元模組化

次元模組化是資料倉庫建設中的一種資料模組化方法,用于決策制定,側重于業務如何表示和了解資料。基本的次元模型由次元和度量兩類對象組成。次元模組化設計就是為了簡化資料和加快查詢。

資料模型是資料倉庫的核心,資料挖掘中常見的資料模型有 星型模型(Star Schema),雪花模型(Snowflake Schema)和事實星座模型(Fact Constellation)等。

1.2.1 星型模型 

星型模型中有一個事實表,以及零個或多個次元表,事實表與次元表通過主鍵外鍵相關聯,次元表之間沒有關聯,就像很多星星(次元表)圍繞在一個恒星(事實表)周圍,故名為星型模型。星形模型是最簡單,也是最常用的模型。由于星形模型隻有一張大表,是以它相比于其他模型更适合于大資料處理。其他模型可以通過一定的轉換,變為星形模型。

淺談資料倉庫、BI與OLAP一:資料倉庫二:商業智能(BI) 三:OLAP 

星型架構是一種非正規化的結構,多元資料集的每一個次元都直接與事實表相連接配接,不存在漸變次元,是以資料有一定的備援,如在地域次元表中,存在國家 A 省 B 的城市 C 以及國家 A 省 B 的城市 D 兩條記錄,那麼國家 A 和省 B 的資訊分别存儲了兩次,即存在備援。 

1.2.2 雪花模型 

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

淺談資料倉庫、BI與OLAP一:資料倉庫二:商業智能(BI) 三:OLAP 

1.2.3 事實星座模型

事實星座模型是更為複雜的模型,其中包含多個事實表,而維表是公共的,可以共享,這種模式可以看做星型模式的彙集,因而稱作星系模型或者事實星座模型。此圖不好畫,就拿百度百科的圖了。

淺談資料倉庫、BI與OLAP一:資料倉庫二:商業智能(BI) 三:OLAP 

1.2.4 三種模型對比 

首先模型的選擇跟資料和需求有關系,跟設計沒關系。

星型還是雪花,取決于性能優先,還是避免備援、靈活更優先,星型因為資料的備援是以很多統計查詢不需要做外部的連接配接,是以一般情況下效率比雪花型模型要高,但雪花模型備援較小。

資料倉庫大多數時候是比較适合使用星型模型建構底層資料Hive表,通過大量的備援來提升查詢效率,星型模型對OLAP的分析引擎支援比較友好,這一點在Kylin中比較能展現。而雪花模型在關系型資料庫中如MySQL,Oracle中非常常見,尤其像電商的資料庫表。在資料倉庫中雪花模型的應用場景比較少,但也不是沒有,是以在具體設計的時候,可以考慮是不是能結合兩者的優點參與設計,以此達到設計的最優化目的。實際企業開發中,一般不會隻選擇一種,需要根據情況靈活組合,甚至并存(一層次元和多層次元都儲存)。整體來看,更傾向于次元更少的星型模型。尤其是大型資料倉庫項目,減少表連接配接的次數,可以顯著提升查詢效率。

1.3 事實表和次元表

事實表(Fact Table)是指存儲事實記錄的表,如系統日志、銷售記錄等,并且是次元模型的主表,代表着連結次元表的鍵和度量的集合。事實表的記錄會斷的動态增長,是以他的體積通常遠大于其他表,通常事實表要占據資料倉庫中90%或者更多的空間。

次元表(Dimension Table),也成維表或查找表(Lookup Table),是與事實表相對應的一種表。次元表的目的是将業務含義和上下文添加到資料倉庫中的事實表和度量中。次元表是事實表的入口點,次元表實作了資料倉庫的業務接口。它們基本上是事實表中的鍵引用的查找表。他儲存了次元的屬性值,可以與事實表做關聯,相當于将事實表上經常出現的屬性抽取。規範出來讓一張表進行管理,常見的次元表有:日期表(存儲日期對應的周、月、季度等屬性)、地點表(包含國家、省、城市等屬性)等。使用次元表的好處如下:

  • 減小了事實表的大小;
  • 便于次元的管理和維護,增加、删除和修改次元的屬性時,不必對事實表的大量記錄進行改動;
  • 次元表可以為多個事實表同時使用,減少重複工作。

二:商業智能(BI) 

商業智能(Business Intelligence,簡稱BI)的關鍵是從許多來自不同的企業運作系統的資料中提取出有用的資料并進行清理,以保證資料的正确性,然後經過抽取(Extraction)、轉換(Transformation)和裝載(Load),即ETL過程,合并到一個企業級的資料倉庫裡,進而得到企業資料的一個全局視圖,在此基礎上利用合适的查詢和分析工具、資料挖掘工具、OLAP工具等對其進行分析和處理(這時資訊變為輔助決策的知識),最後将知識呈現給管理者,為管理者的決策過程提供支援。

簡單來說,BI通常被了解為将企業中現有的資料轉化為知識,幫助企業做出明智的業務經營決策的工具。為了将資料轉化為知識,需要利用資料倉庫、聯機分析處理(OLAP)工具和資料挖掘等技術。

三:OLAP 

 3.1 什麼是OLAP

資料處理大緻可以分成兩大類:聯機事務處理OLTP(on-line transaction processing)、聯機分析處理OLAP(On-Line Analytical Processing); OLTP是傳統的關系型資料庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。OLAP是資料倉庫系統的主要應用,支援複雜的分析操作,側重決策支援,并且提供直覺易懂的查詢結果。

 3.2 OLAP分類介紹

OLAP系統按照其存儲器的資料存儲格式可以分為關系OLAP(RelationalOLAP,簡稱ROLAP)、多元OLAP(MultidimensionalOLAP,簡稱MOLAP)和混合型OLAP(HybridOLAP,簡稱HOLAP)三種類型。

  • ROLAP: 使用關系型資料庫或者擴充的關系型資料庫來管理資料倉庫資料,而OLAP中間件支援其餘的功能。ROLAP包含了每個後端關系型資料庫的優化,聚合,次元操作邏輯的實作,附件的工具以及服務等。是以ROLAP比MOLAP有更好的可伸縮性。 比較典型的ROLAP有mondrian, Presto(facebook)。目前阿裡的DRDS也可以看作是ROLAP的架構
  • MOLAP: 通過基于資料立方體的多位存儲引擎,支援資料的多位視圖。即通過将多元視圖直接映射到資料立方體上,使用資料立方體能夠将預計算的彙總資料快速索引。比較典型的MOLAP架構有kylin(apache), Lylin(ebay)、pinot(linkedin)和druid

也就是說MOLAP是空間換時間,即把所有的分析情況都物化為實體表或者視圖,查詢的時候直接從相應的物化表中擷取資料, 而ROLAP則通過按次元分庫,分表等方式,實作單一次元下的快速查詢,通過分布式架構,并行完成分析任務,來實作資料的分析功能。MOLAP 實作較簡單,但當分析的次元很多時,資料量呈指數增長,而ROLAP在技術實作上要求更高,但擴充性也較好。

  • HOLAP: 混合OLAP結合ROLAP和MOLAP,得益于ROLAP較大的可伸縮性和MOLAP的快速查詢。

更多的關于OLAP的知識,推介大家看機械工業出版社出版的《資料挖掘-概念與技術》

 3.3 次元和度量

次元和度量是資料分析中的兩個基本概念。

次元是人們觀察資料的特定角度,是考慮問題的一類屬性。他通常是資料記錄的一個特征,如時間、地點等。同時,次元具有層級概念,可能存在細節程度不同的描述方面,如日期、月份、季度、年等。

在數倉中,可以在數學上求和的事實屬性稱為度量。例如,可以對度量進行總計、平均、以百分比形式使用等。度量是次元模型的核心。通常,在單個查詢中檢索數千個或數百萬個事實行,其中對結果集執行數學方程。

在一個SQL查詢中,Group by的屬性通常就是次元,而所計算的值則是度量。

繼續閱讀