什么是olap
01、絕大多數請求都是讀請求
02、數據以相當大的批次(>1000行)更新,而不是單行更新;或者它根本沒有更新
03、數據已添加到數據庫,但不會進行修改
04、對於讀取,每次查詢都從數據庫中讀取大量的行,但是同時又僅需要少量的列
05、表格“寬”,意味着它們包含大量列
06、查詢相對較少(通常每台服務器數百個查詢或每秒更少)
07、對於簡單查詢,允許延遲大約50毫秒
08、列中的數據相對較小:一般來說,都是數字和短字符串(例如,每個URL 60個字節)
09、處理單個查詢時需要高吞吐量(每個服務器每秒最多數十億行)
10、Transactions不是必需的
11、對數據一致性要求低
12、每個查詢有一個大表。所有其他表都很小,除了這個大表
13、查詢結果明顯小於源數據。換句話說,數據被過濾或聚合后能夠被盛放在單台服務器的內存中
mysql: 少量結構化數據的針對單條記錄的增刪改查
hbase: 針對海量數據的key-value增刪改查
redis: 基於內存的針對key-value類型的增刪改查,熱數據的緩存
mongodb: 文檔數據庫 elasticsearch: 針對文件做全文檢索的(倒排索引)
clickhouse: 針對海量數據的大量行少量列的聚合查詢分析的請求
- Druid:由廣告公司 MetaMarkets 開源的實時大數據分析引擎,2011 年創建,並於 2012 年開源。主要用於大規模事件流數據(Event Stream Data)的存儲和分析。Druid 被阿里、小米、網易、優酷、微博等公司廣泛應用。
- Presto:Facebook 2013 年開源的 OLAP 工具。Airbnb 和 Dropbox、京東、有贊、微博等公司使用該工具。
- Clickhouse:第一大搜索引擎 Yandex 開發的列式儲存數據庫。 ClickHouse 比 Vertica 約快5倍,比 Hive 快 279 倍。比 My SQL 快 801 倍。字節跳動、阿里、微博......幾乎所有主流互聯網公司,都會使用到 ClickHouse。
Druid
優點
- Druid 支持實時數據攝入,且可以立即查詢;
- 類似其他 OLAP 工具,攝入數據時先預計算,以節省數據存儲量級;
- 列式存儲。區別傳統行式存儲,每次查詢要加載整個表,列式存儲只需加載指定列數據,大大提升性能。由於列式存儲這個優勢,目前主流 OLAP 都采用列式存儲;
- 水平擴展。可部署到幾十甚至幾百台集群,支持萬億條記錄查詢。
缺點
- 查詢中涉及多個大表之間 join,即:Druid對表關聯操作支持很有限。
- 數據查詢對延時要求不高,但對用戶某具體行為顆粒度的場景分析。因為預計算會損失用戶行為的個性化信息,所以這種情況是不容許進行預計算操作的。
Presto
- 快!Presto 最大的特點是快,它的設計初衷是解決快速查詢大數據問題,期望查詢時間是在幾秒或者幾分鍾,因此速度是 Hive 的 10 倍以上;
- Presto 可以查詢完全基於內存計算的分布式 SQL 查詢引擎。所有查詢、計算都可以在內存中進行;
- Presto 可以接入數據源,包括 Hive、Kafaka、MySQL、Redis 等;
- Presto 為標准 SQL,支持復雜 SQL 查詢。
缺點
- 我們知道 Presto 運算時是將查詢任務拆分到多個 Worker 機器上去分別進行內存運算。其中哪怕一個 Worker 由於各式各樣的原因掛掉(比如內存溢出等),整個 Presto 查詢任務就會失敗。相比較而言,Hive 的容錯性能就要好很多。一台機器掛掉或者被其他計算任務搶占,計算也並不會因此失敗。它會重新向 Master 申請資源,繼續計算。
- Presto 屬於純內存計算,不適合大表之間的多表 join 操作。否則容易引起內存溢出 OOM,造成查詢任務失敗。
- Presto 采用 MPP(Massively Parallel Processing:大規模並行處理)架構,本身 MPP 架構使用場景就是秒級、毫秒級的查詢場景,速度很快。但 MPP 有個明顯缺點,即短板效應。如果一個 Worker 節點計算慢於其他節點,那整個計算任務都會受限於該節點。在實際工作中,Presto 接入的很可能就是 HDFS 數據源,不同節點的數據不一定分布均勻,這使得不同 Worker 干活效率不一樣。而 Hive、Spark 等采用的批處理系統則會避免這一點。
ClickHouse
- 提供極致的查詢性能。比傳統數據處理引擎快 100~1000 倍,數據吞吐能力高達50MB~200MB/s。使用體驗非常好。
- 大數據的極低存儲成本。ClickHouse 針對 OLAP 場景,開發高效列式存儲、數據壓縮算法,可以將原數據壓縮 10 倍,極大提高單機數據存儲和計算能力。可以簡單理解為,原來一台機器存儲 1TB 原始日志,而采用 ClickHouse 可以存儲 10TB 原始日志。
- 支持 SQL 查詢,並同時支持 join 等復雜計算邏輯。ClickHouse 之所以能擁有極致的計算性能,即使簡單的查詢,ClickHouse 也會使用服務器一半的 CPU 去執行,所以其充分利用了機器的計算資源,並實現單機多核並行計算、集群分布式計算、列存儲且列計算等。
缺點
- 不支持事務操作,即數據的刪除、更新。
- 不支持高並發,建議 QPS 為 100。即每秒查詢操作不要超過 100 個。
參考: 奈學教育筆記