OLAP分類的基本概念
OLAP有多種實現方法,根據存儲數據的方式不同可以分為ROLAP、MOLAP、HOLAP。
ROLAP:表示基于關系數據庫的OLAP實現(Relational OLAP)。以關系數據庫為核心,以關系型結構進行多維數據的表示和存儲。ROLAP將多維數據庫的多維結構劃分為兩類表:一類是事實表,用來存儲數據和維關鍵字;另一類是維表,即對每個維至少使用一個表來存放維的層次、成員類別等維的描述信息。維表和事實表通過主關鍵字和外關鍵字聯系在一起,形成了“星型模式”。對于層次復雜的維,為避免冗余數據占用過大的存儲空間,可以使用多個表來描述,這種星型模式的擴展稱為“雪花模式”。ROLAP的最大好處是可以實時地從源數據中獲得最新數據更新,以保持數據實時性,缺陷在于運算效率比較低,用戶等待響應時間比較長。
MOLAP:表示基于多維數據組織的OLAP實現(Multidimensional OLAP)。以多維數據組織方式為核心,也就是說,MOLAP使用多維數組存儲數據。多維數據在存儲中將形成“數據立方體(Cube)”的結構,此結構在得到高度優化后,可以最大程度地提高查詢性能。隨著源數據的更改,MOLAP 存儲中的對象必須定期處理以合并這些更改。兩次處理之間的時間將構成滯后時間,在此期間,OLAP對象中的數據可能無法與當前源數據相匹配。維護人員可以對 MOLAP 存儲中的對象進行不中斷的增量更新。MOLAP的優勢在于由于經過了數據多維預處理,分析中數據運算效率高,主要的缺陷在于數據更新有一定延滯。
HOLAP:表示基于混合數據組織的OLAP實現(Hybrid OLAP),用戶可以根據自己的業務需求,選擇哪些模型采用ROLAP,哪些采用MOLAP。一般來說,會將非常用或需要靈活定義的分析使用ROLAP方式,而常用、常規模型采用MOLAP實現。
Cubes:是數據立方體。何為數據立方體?這主要是和維度的概念一起理解,我們現實是分三維,x,y,z三個坐標決定的空間。而數據庫,可能會包含很多維度,只是在我們的認知中無法想像超越三維的事物,這只是個概念??梢?,Cube是依賴于維度的。所以在我們建立Cube的時候,需要理解下面的Dimension是什么。
Dimensions:Cube的維度,每個Cube依賴哪些維度來做統計,就需要在這里建。雖然在創建立方的時候會自動幫我們創建維度,但是有時候他創建的維度并不能達到我們的目的。所以,我們先建Dimension,再建Cube。
Mining structures:數據挖掘用的東西,咱這里就不說了,因為我還沒用過,只是看了下Webcast的視頻,里面介紹了集成了大量的現有挖掘算法,很方便的可以做出相應的分析趨勢。 還是看似厲啊。
OLAP的基本操作
我們已經知道OLAP的操作是以查詢——也就是數據庫的SELECT操作為主,但是查詢可以很復雜,比如基于關系數據庫的查詢可以多表關聯,可以使用COUNT、SUM、AVG等聚合函數。OLAP正是基于多維模型定義了一些常見的面向分析的操作類型是這些操作顯得更加直觀。
OLAP的多維分析操作包括:鉆?。―rill-down)、上卷(Roll-up)、切片(Slice)、切塊(Dice)以及旋轉(Pivot),下面還是以上面的數據立方體為例來逐一解釋下:
鉆?。―rill-down):在維的不同層次間的變化,從上層降到下一層,或者說是將匯總數據拆分到更細節的數據,比如通過對2010年第二季度的總銷售數據進行鉆取來查看2010年第二季度4、5、6每個月的消費數據,如上圖;當然也可以鉆取浙江省來查看杭州市、寧波市、溫州市……這些城市的銷售數據。
基本分析操作
OLAP允許用戶從多種角度分析多維數據,主要包括以下五種基本操作:上卷(consolidation/roll-up)、下鉆(drill-down)、切片(slice)、切塊(dice)和旋轉(pivot)。
上卷(consolidation/Roll-up)
上卷表示沿著某一維度按照一定的規則(rule)對數據進行聚合(aggregation)操作,沿著某一維度,即按照層級關系從子類維度向父類維度作聚合。
下鉆(Drill-down)
下鉆和上卷正好相反,允許用戶從已聚合的數據集中提取出所關注的細節。下圖表示了從“Outdoor-Schutzausrüstung”這個父類維度中抽取出三個子類維度的下鉆過程。
切片(Slice)
切片表示通過選擇某個維度的單一值(value),從OLAP cube中抽取出一個分片的過程。下圖表示了從原始OLAP cube中抽取出time = 2004分片的過程。
切塊(Dice)
切塊表示通過選擇多個維度的某些值(或者區間),從OLAP cube中抽取出子cube的過程。下圖表示了從原始OLAP cube中抽取某個維度中多值對應的子cube的過程。
旋轉(pivot)
旋轉操作允許用戶通過旋轉(rotate)OLAP cube,重新選擇目標分析維度,通常表現為交換坐標軸操作。在下圖中,原始的OLAP cube的X軸是產品名稱,Y軸是地區名稱,Z軸是年份;經過旋轉操作后cube表示了每個產品在不同年份、不同地區的統計情況。
OLAP技術路線分類
常見的OLAP系統可以分為以下三類:關系型聯機實時分析系統(Relational-OLAP,ROLAP),多維聯機實時分析系統(Multidimensional-OLAP,MOLAP),混合型聯機實時分析系統(Hybrid-OLAP,HOLAP)。
1.5.1 關系型聯機實時分析(ROLAP)
ROLAP的核心依賴于關系型數據庫,允許用戶使用維度模型進行數據分析,將維度值存儲在維度表中,將度量值存儲在事實表中,通過關系型數據庫訪問數據,使用SQL進行查詢分析。ROLAP的一般使用模式概括如下:根據用戶的需求,對不同維度進行分析后,將分析數據導入到另一張數據庫表中。
ROLAP的優勢:
?。?)處理高基數列具有更好的擴展性;
?。?)擅長處理非聚合類的原始數據,生態圈內用于原始數據入庫的ETL工具眾多,同時比MOLAP入庫速率更高;
?。?)由于數據存儲在關系型數據庫中,所以支持標準SQL接口,查詢便捷;
ROLAP的劣勢:
?。?)根據OLAP survey(http://www.olapreport.com/survey.htm)在2001-2006年連續6年的調研顯示,工業界普遍認為ROLAP的性能要低于MOLAP。但也有人提出質疑,爭議包含兩方面:ROLAP的用戶數是MOLAP的7倍多,那么抱怨產品性能差的比例自然更高;其他因素的影響,上述調研報告并沒有將ROLAP產品和MOLAP產品放在同一個維度模型上進行比較,所以該報告結論并不具有權威性;
?。?)處理已聚合的數據,需要使用定制的ETL工具,開發量大且不具有通用性;如果采用原始數據入庫,將非常影響查詢性能,如果想要提升查詢性能,需要將已入庫的原始數據重新聚合后再導入到新的表中進行查詢分析;
(3)ROLAP的性能很大程度上依賴于使用的關系型數據庫的查詢與緩存性能;同時對于所有分析操作,都依賴于SQL語句,對于重計算類的分析模型,轉換后的SQL就會變得復雜,對分析者的SQL語句的調優要求較高,而在某些無法使用SQL的場景下,ROLAP類產品則變得無能為力。
1.5.2 多維聯機實時分析(MOLAP)
MOLAP是OLAP的經典使用模式,所以經常用MOLAP來指代OLAP。MOLAP和ROLAP具有一定的相似性,二者都可以使用維度模型進行數據分析,但是MOLAP并不將數據存儲在維度表或者事實表中,而是對原始數據進行預計算(比如聚合操作),將計算結果存儲在OLAP cube中。
MOLAP的優勢:
?。?)由于MOLAP不采用關系型數據庫進行數據存儲,所以必須采用特殊的存儲手段,例如:壓縮存儲、索引(例如位圖索引)以及緩存技術等,查詢速率更快;
MOLAP的劣勢:
?。?)數據導入較慢,需要使用定制的ETL入庫工具;
(2)由于沒有維度表和事實表,所以對于更新操作以及明細查詢,效率要比ROLAP低很多。
1.5.3 混合型聯機實時分析(HOLAP)
HOLAP充分利用了ROLAP與MOLAP的各自優勢,從縱向角度,既允許用戶將部分數據(比如聚合類數據)使用MOLAP進行存儲,從而獲得更快的查詢性能;又允許部分數據(比如原始數據)使用ROLAP進行存儲,使用戶能夠查看細粒度數據。從橫向角度,使用MOLAP存儲最近較熱的數據,從而提升查詢性能;而使用ROLAP存儲歷史較冷的數據。
目前,商業類的OLAP產品更偏向于HOLAP,因為大廠既不想丟棄一直使用的關系型數據庫,又想在數據分析能力上獲得進一步提升,所以HOLAP類產品近幾年也是百花齊放。
評論