主流OLAP系统对比总结
聯機分析處理OLAP是一種軟件技術,它使分析人員能夠迅速、一致、交互地從各個方面觀察信息,以達到深入理解數據的目的。它具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多維信息的快速分析的特征。
OLTP和OLAP的區別
參考:
從大數據談起1:OLTP和OLAP的設計區別
從大數據談起2:分片和分層-GavinGuo-51CTO博客
聯機事務處理OLTP(On-line Transaction Processing)
聯機分析處理OLAP(On-Line Analytical Processing)
?
多維分析中的常用操作:
下面介紹數據立方體中最常見的五大操作:切片,切塊,旋轉,上卷,下鉆。
?
下鉆(Drill-down):在維的不同層次間的變化,從上層降到下一層,或者說是將匯總數據拆分到更細節的數據,比如通過對2010年第二季度的總銷售數據進行鉆取來查看2010年第二季度4、5、6每個月的消費數據,如上圖;當然也可以鉆取浙江省來查看杭州市、寧波市、溫州市……這些城市的銷售數據。
上卷(Roll-up):鉆取的逆操作,即從細粒度數據向高層的聚合,如將江蘇省、上海市和浙江省的銷售數據進行匯總來查看江浙滬地區的銷售數據,如上圖。
切片(Slice):選擇維中特定的值進行分析,比如只選擇電子產品的銷售數據,或者2010年第二季度的數據。
切塊(Dice):選擇維中特定區間的數據或者某批特定值進行分析,比如選擇2010年第一季度到2010年第二季度的銷售數據,或者是電子產品和日用品的銷售數據。
旋轉(Pivot):即維的位置的互換,就像是二維表的行列轉換,如圖中通過旋轉實現產品維和地域維的互換。
?
在調研了市面上主流的開源OLAP引擎后發現,目前還沒有一個系統能夠滿足各種場景的查詢需求。其本質原因是,沒有一個系統能同時在數據量、性能、和靈活性三個方面做到完美,每個系統在設計時都需要在這三者間做出取舍。
例如:
MPP架構的系統(Presto/Impala/SparkSQL/Drill等)有很好的數據量和靈活性支持,但是對響應時間是沒有保證的。當數據量和計算復雜度增加后,響應時間會變慢,從秒級到分鐘級,甚至小時級都有可能。
MPP即大規模并行處理(Massively Parallel Processor )。 在數據庫非共享集群中,每個節點都有獨立的磁盤存儲系統和內存系統,業務數據根據數據庫模型和應用特點劃分到各個節點上,每臺數據節點通過專用網絡或者商業通用網絡互相連接,彼此協同計算,作為整體提供數據 庫服務。非共享數據庫集群有完全的可伸縮性、高可用、高性能、優秀的性價比、資源共享等優勢。缺點:性能不穩定
搜索引擎架構的系統(Elasticsearch等)相對比MPP系統,在入庫時將數據轉換為倒排索引,采用Scatter-Gather計算模型,犧牲了靈活性換取很好的性能,在搜索類查詢上能做到亞秒級響應。但是對于掃描聚合為主的查詢,隨著處理數據量的增加,響應時間也會退化到分鐘級。
缺點:性能不穩定
預計算系統(Druid/Kylin等)則在入庫時對數據進行預聚合,進一步犧牲靈活性換取性能,以實現對超大數據集的秒級響應。
缺點:不太靈活
MPP和搜索引擎系統無法滿足超大數據集下的性能要求,因此很自然地會考慮預計算系統。而Druid主要面向的是實時Timeseries數據,我們雖然也有類似的場景,但主流的分析還是面向數倉中按天生產的結構化表,因此Kylin的MOLAP Cube方案是最適合作為大數據量時候的引擎。
?
?
下面列舉了三個olap系統
ImPala
?
Druid
Druid是廣告分析公司Metamarkets開發的一個用于大數據實時查詢和分析的分布式實時處理系統,主要用于廣告分析,互聯網廣告系統監控、度量和網絡監控。
特點:
1. 快速的交互式查詢——Druid的低延遲數據攝取架構允許事件在它們創建后毫秒內可被查詢到。
2. 高可用性——Druid的數據在系統更新時依然可用,規模的擴大和縮小都不會造成數據丟失;
3. 可擴展——Druid已實現每天能夠處理數十億事件和TB級數據。
4. 為分析而設計——Druid是為OLAP工作流的探索性分析而構建,它支持各種過濾、聚合和查詢。
應用場景:
1. 需要實時查詢分析時;
2. 具有大量數據時,如每天數億事件的新增、每天數10T數據的增加;
3. 需要一個高可用、高容錯、高性能數據庫時。
4. 需要交互式聚合和快速探究大量數據時
架構圖:
Druid官網?Druid | About Druid
Druid:一個用于大數據實時處理的開源分布式系統
?
Presto
Presto是Facebook開發的分布式大數據SQL查詢引擎,專門進行快速數據分析。
特點:
1. 可以將多個數據源的數據進行合并,可以跨越整個組織進行分析。
2. 直接從HDFS讀取數據,在使用前不需要大量的ETL操作。
查詢原理:
1. 完全基于內存的并行計算
2. 流水線
3. 本地化計算
4. 動態編譯執行計劃
5. 小心使用內存和數據結構
6. 類BlinkDB的近似查詢
7. GC控制
?
?
Kylin
?
?
Apache Kylin最初由eBay開發并貢獻至開源社區的分布式分析引擎,提供
Hadoop之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規模數據。
特點:
1. 用戶為百億以上數據集定義數據模型并構建立方體
2. 亞秒級的查詢速度,同時支持高并發
3. 為Hadoop提供標準SQL支持大部分查詢功能
4. 提供與BI工具,如Tableau的整合能力
5. 友好的web界面以管理,監控和使用立方體
6. 項目及立方體級別的訪問控制安全
總結
以上是生活随笔為你收集整理的主流OLAP系统对比总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的开发工具有哪些,Pytho
- 下一篇: 搜狐账号系统的反人类设计