OLAP簡介
摘要
druid對于做大數據的同學們來說,并不陌生。我之前也研究過很多OLAP的框架,最近研究了一下最新版的druid(0.9.1.1), 想和大家在此分享一下,和大家一起學習進步。對于沒有接觸過BI和數據分析的同學,先給大家簡單介紹一下OLAP,作為入門。
什么是OLAP(聯機分析處理)
這個是和數據處理非常相關的一個概念。接觸過BI(商務智能的同學一定清楚。數據處理大致可以分成兩大類:聯機事務處理OLTP(on-line transaction processing)、聯機分析處理OLAP(On-Line Analytical Processing); OLTP是傳統的關系型數據庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。通俗的講,就是對數據的增刪改查等操作。 OLAP是數據倉庫系統的主要應用,支持復雜的分析操作,側重決策支持,并且提供直觀易懂的查詢結果。通俗的講,就是對數據按不同維度的聚合,維度的上鉆,下卷等。
OLAP可以分為ROLAP,MOLAP和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的知識,推介大家看機械工業出版社出版的《數據挖掘-概念與技術》