上篇文章講了OLAP與OLTP的區別,今天深入講一下OLAP的兩層含義。
上篇中從功能目的、數據存儲、時效性、使用者等角度說明了OLAP與OLTP的區別,若以此為標準,固定報表系統也屬於OLAP。
報表系統特徵:
關聯大量數據查詢對時效性的要求較業務系統不高企業高層依據報表進行決策
這會出現一個問題,OLAP建立的目標是對數據進行高效且深入的分析,然而傳統報表符合OLAP體系的特徵,但無法滿足既定需求。
報表系統確實是一種OLAP體系,之所以產生此種疑惑,是因為忽略了OLAP的另一層含義 -- MDD(Multi Dimensional Database,多維資料庫)。
上篇中所述的OLAP可以稱為OLAP的廣義概念,而MDD則更為具體,可以視為OLAP的狹義概念。
RDB(Relational Database,關係型資料庫)與MDD的區別:
RDB模型為表和欄位,MDD模型為維度與數據立方體RDB適合存儲業務類數據,MDD則更適合面向業務分析數據RDB使用SQL進行查詢,MDD使用MDX(Multi Dimensional Expressions,多維表達式)進行查詢
各位如果有了解OLAP的,一定聽說過ROLAP、MOLAP和HOLAP(R、M、H代表不同的數據存儲方式)。
Relational -- 數據存儲在RDB的星型或雪花型結構中Multi-Dimensional -- 維度數據存儲在概要文件中,事實數據存儲在由索引和矩陣構成的數據塊中Hybrid -- 結合ROLAP和MOLAP,將數據進行混合存儲
(R、M、H是三種傳統的OLAP存儲方案,目前應用最廣的則是分布式存儲,這個以後文章中會講解,感興趣的話先關注我們唄。)
MDD意義何在呢?
以ROLAP為例,對比兩種數據分析體系方案,方案一直接在RDB上搭建,方案二使用MDD(實際存儲還是RDB,但已被屏蔽,只暴露出多維邏輯模型)。
兩方案數據最終都是存儲在RDB中,但由於方案一直接暴露了RDB的表和欄位結構,並且只能使用SQL查詢,導致的結果是無法真正實現多維數據分析。
方案二中,分析人員完全不用關心底層實現,他們會看到由MDD提供的純粹面向業務的維度模型,可以非常輕鬆的進行多維數據分析。
在一個數據分析體系中,MDD的給力程度直接決定了數據分析的效果。
數據模型是MDD與RDB最主要的區別。
(RDB的表及欄位模型和MDD的維度模型實際上也是對更底層的作業系統文件的邏輯封裝。)
RMD使用SQL進行查詢,MDD使用MDX進行查詢。
由於以下兩點原因:
MDD可以使用RDB作為數據實際存儲方案MDX與SQL在語法結構上的類似
使得在RDB的星型(或雪花型)模型上使用SQL進行查詢被誤認為是可以進行多維分析的,實際上這是非常錯誤的認識,原因在於表及欄位模型和維度及數據立方體模型在本質上的區別。
如果覺得不錯,請轉發或關注我們,會有更多大數據相關文章哦。