什么是olap技術
聯機實時分析(OnlineAnalytical Processing, OLAP (/?o?l?p/))技術是快速響應多維分(Multidimensionalanalysis, MDA)的一種解決方案。
首先,解釋下什么是多維分析:多維分析是一種數據分析過程,在此過程中,將數據分成兩類:維度(dimensions)和度量(metrics/measurements)。維度和度量的概念都出自于圖論(graph theory),維度指能夠描述某個空間中所有點的最少坐標(coordinate)數,即空間基數;度量指的是無向圖中頂點(vertices)間的距離。在多維分析領域,維度一般包括字段值為字符類或者字段基數值較少且作為約束條件的離散數值類型;而度量一般包括基數值較大且可以參與運算的數值類字段,一般也稱為指標。
OLAP技術可以看作是廣義概念上的商業智能(Business Intelligence, BI)的一部分,而傳統的OLAP分析應用通常包含了關系型數據庫(relational database)、商業報告(business reporting)以及數據挖掘(data mining)等方面。
下面介紹OLAP分析中兩個重要的基本概念:OLAP cube和維度模型(Dimensional modeling,DM),這兩個概念也是劃分OLAP類型的重要標識。
1、OLAP cube
OLAP cube在數據庫理論(database theory)中的定義為:RDBMS關系映射的一種抽象描述(An abstract representation of a projection ofan RDBMS relation)。數學描述如下:
OLAP cube可以簡單描述為“多維數據集”。cube,我們可以想象為數據指標根據多維度封裝成的一個立方體結構(以三維空間為例,如果維度數超過3,我們則稱為“Hypercube”),如圖1.1所示,圖中的Time、Products、Cities就是OLAP分析中提取的三個維度,而這個立方體封閉區域所代表的含義就是在這三種維度下,某項指標的度量值,根據上述映射關系可以描述為:
在OLAP分析中,我們通常也會對維度指標進行分層組織(Level),即一系列的parent-child關系(Hierarchy);父類維度可以看作是子類維度的聚合。例如:2016年7月是2016年第三季度這個父類維度的子類維度,同時2016年第三季度又可以看作是2016年這個父類維度的子類維度。
2、維度模型
維度模型的概念出自于數據倉庫領域,是數據倉庫建設中的一種數據建模方法。維度模型主要由事實表和維度表這兩個基本要素構成。
事實表是維度模型的基本表,用于存放大度量值,術語“事實”代表了一個度量值。舉一個例子:查詢某個客戶在某個機構下某個產品合約賬戶的某個幣種的某個時點余額,在各維度值(客戶、產品合約、賬戶、機構、幣種、日期)的交點處就可以得到一個度量值。維度值的列表定義了事實表的粒度,同時又確定了度量值的取值范圍。
事實表的一行對應一個度量值,事實表的所有度量值必須具有相同的粒度。而事實可能是半加性質的,也可能是非加性質的,半加性事實表示度量值可以沿著某些維度由子類維度向父類維度進行聚合;非加性事實則完全不能相加,比如狀態事實,對于這種非加性事實,我們只能采用計數或者求平均值,或者打印出全部事實行的方法進行分析。
所有事實表有兩個或者兩個以上的外關鍵字(如圖1.2中FK符號標記的部分),外關鍵字用于連接到維度表的主關鍵字。例如,事實表中的“產品合約關鍵字”總是匹配產品合約這個維度表的一個特定“產品合約關鍵字”。如果事實表中的所有關鍵字都能分別與對應維度表中的主關鍵字正確匹配,就可以說這些表滿足引用完整性的要求。事實表要通過與之相連的維度表進行存取。
維度表是事實表不可分割的部分。如圖1.3所示,維度表包含有業務的文字描述。在一個設計合理的維度模型中,維度表會包含許多列或者屬性,我們稱之為維度屬性。對于維度表來說,包含50到100個維度屬性的情形并不少見。維度表傾向于將行數做得相當少(通常少于100萬行),而將列數做得特別大。每個維度用單一的主關鍵字(如圖1.2中PK符號標記的部分)進行定義,主關鍵字是確保同一與之相連的任何事實表之間存在引用完整性的基礎。
維度表是進入事實表的入口。豐富的維度屬性給出了豐富的分析切割能力。維度給用戶提供了使用數據倉庫的接口。最好的屬性是文本的和離散的。屬性應該是真正的文字而不應是一些編碼簡寫符號。應該通過用更為詳細的文本屬性取代編碼,力求最大限度地減少編碼在維度表中的使用。
最后簡單說明下維度表和事實表的融合。二者的融合也就是“維度模型”,“維度模型”一般采用“星型模式”或者“雪花模式”,如圖1.4所示為“星型模式”,而“雪花模式”可以看作是“星型模式”的拓展,表現為在維度表中,某個維度屬性可能還存在更細粒度的屬性描述,即維度表的層級關系。
技術特點
OLAP技術非常多的特性,概括起來主要有如下幾點特性:OLAP技術是面向分析人員、管理人員的;OLAP技術對數據訪問通常是只讀的,并且一次訪問大量數據;OLAP技術是面向主題的多維數據分析技術。
OLAP技術是面向分析人員、管理人員的
區別于OLTP面向操作人員,OLAP技術主要面向分析人員、管理人員,他是提供分析人員、管理人員快速又直觀的訪問數據的一種途徑。使分析人員、管理人員能直觀的從海量數據中獲得有用信息以提供決策依據。
OLAP技術對數據訪問通常是只讀的,并且一次訪問大量數據。
OLAP技術主要是針對海量數據的查詢,通常不對數據做修改。這種數據訪問有別于OLTP中不斷的對數據進行增刪改操作。同時這種查詢不是簡單的記錄屬性的檢索,而是為了從海量數據中獲取有用信息的針對大量數據的查詢,通常一次需要查詢會涉及到上百萬條以上數據。
OLAP技術是面向主題的多維數據分析技術。
主題涉及業務流程的方方面面,是分析人員、管理人員進行決策分析所關心的角度。分析人員、管理人員使用OLAP技術,正是為了從多個角度觀察數據,從不同的主題分析數據,最終直觀的得到有效的信息。
主要技術實現方式
OLAP系統按照其存儲器的數據存儲格式可以分為關系OLAP(RelationalOLAP,簡稱ROLAP)、多維OLAP(MultidimensionalOLAP,簡稱MOLAP)和混合型OLAP(HybridOLAP,簡稱HOLAP)三種類型。
ROLAP:ROLAP將分析用的多維數據存儲在關系數據庫中并根據應用的需要有選擇的定義一批實視圖作為表也存儲在關系數據庫中。不必要將每一個SQL查詢都作為實視圖保存,只定義那些應用頻率比較高、計算工作量比較大的查詢作為實視圖。對每個針對OLAP服務器的查詢,優先利用已經計算好的實視圖來生成查詢結果以提高查詢效率。同時用作ROLAP存儲器的RDBMS也針對OLAP作相應的優化,比如并行存儲、并行查詢、并行數據管理、基于成本的查詢優化、位圖索引、SQL的OLAP擴展(cube,rollup)等等。
MOLAP:MOLAP將OLAP分析所用到的多維數據物理上存儲為多維數組的形式,形成“立方體”的結構。維的屬性值被映射成多維數組的下標值或下標的范圍,而總結數據作為多維數組的值存儲在數組的單元中。由于MOLAP采用了新的存儲結構,從物理層實現起,因此又稱為物理OLAP(PhysicalOLAP);而ROLAP主要通過一些軟件工具或中間軟件實現,物理層仍采用關系數據庫的存儲結構,因此稱為虛擬OLAP(VirtualOLAP)。
HOLAP:由于MOLAP和ROLAP有著各自的優點和缺點(如下表所示),且它們的結構迥然不同,給分析人員設計OLAP結構提出了難題。為此一個新的OLAP結構——混合型OLAP(HOLAP)被提出,它能把MOLAP和ROLAP兩種結構的優點結合起來。迄今為止,對HOLAP還沒有一個正式的定義。但很明顯,HOLAP結構不應該是MOLAP與ROLAP結構的簡單組合,而是這兩種結構技術優點的有機結合,能滿足用戶各種復雜的分析請求。
評論
查看更多