主頁 > 資料庫 > Elasticsearch與Clickhouse資料存盤對比

Elasticsearch與Clickhouse資料存盤對比

2023-05-25 09:40:45 資料庫

1 背景

京喜達技術部在社區團購場景下采用JDQ+Flink+Elasticsearch架構來打造實時資料報表,隨著業務的發展Elasticsearch開始暴露出一些弊端,不適合大批量的資料查詢,高頻次分頁匯出導致宕機、存盤成本較高,

Elasticsearch的查詢陳述句維護成本較高、在聚合計算場景下出現資料不精確等問題,Clickhouse是列式資料庫,列式型資料庫天然適合OLAP場景,類似SQL語法降低開發和學習成本,采用快速壓縮演算法節省存盤成本,采用向量執行引擎技術大幅縮減計算耗時,所以做此對比,進行Elasticsearch切換至Clickhouse作業,

2 OLAP

OLAP意思是On-Line Analytical Processing 聯機分析處理,Clickhouse就是典型的OLAP聯機分析型資料庫管理系統(DBMS),OLAP主要針對資料進行復雜分析匯總操作,比如我們業務系統每天都對當天所有運輸團單做匯總統計,計算出每個省區的妥投率,這個操作就屬于OLAP類資料處理,與OLAP類似的還有一個OLTP類資料處理,意思是On-Line Transaction Processing 聯機事務處理,在OLTP場景中用戶并發操作量會很大,要求系統實時進行資料操作的回應,需要支持事務,Mysql、Oracle、SQLServer等都是OLTP型資料庫,

2.1 OLTP場景的特征

  • 寬表,即每個表包含著大量的列
  • 對于讀取,從資料庫中提取相當多的行,但只提取列的一小部分,
  • 查詢相對較少(通常每臺服務器每秒查詢數百次或更少)
  • 查詢結果明顯小于源資料,換句話說,資料經過過濾或聚合,因此結果適合于單個服務器的RAM中
  • 絕大多數是讀請求
  • 資料以相當大的批次(> 1000行)更新,而不是單行更新;或者根本沒有更新,
  • 對于簡單查詢,允許延遲大約50毫秒
  • 列中的資料相對較小:數字和短字串(例如,每個URL 60個位元組)
  • 處理單個查詢時需要高吞吐量(每臺服務器每秒可達數十億行)
  • 事務不是必須的
  • 對資料一致性要求低

3 特性

3.1 Elasticsearch

  • 搜索: 適用倒排索引,每個欄位都可被索引且可用于搜索,海量資料下近實時實作秒級的回應,基于Lucene的開源搜索引擎,為全文檢索、高亮、搜索推薦等提供了檢索能力,百度搜索、淘寶商品搜索、日志搜索等
  • 資料分析: Elasticsearch提供了大量資料分析的API和豐富的聚合能力,支持在海量資料的基礎上進行資料分析處理,統計訂單量、爬蟲爬取不同電商的某個商品資料,通過Elasticsearch進行資料分析(各個平臺的歷史價格、購買力等等)

3.2 Clickhouse

  • 列式存盤
  • 壓縮演算法:采用lz4和zstd演算法資料壓縮,高壓縮比降低資料大小,降低磁盤IO,降低CPU使用率,
  • 索引:按照主鍵對資料進行排序,clickhouse能在幾十毫秒內完成在大量資料對特定資料或范圍資料進行查找,
  • 多核心并行處理:ClickHouse會使用服務器上一切可用的資源,來全力完成一次查詢,
  • 支持SQL:一種基于SQL的宣告式查詢語言,在許多情況下與ANSI SQL標準相同,支持group by,order by,from, join,in以及非相關子查詢等,
  • 向量引擎:為了高效的使用CPU,資料不僅僅按列存盤,同時還按向量(列的一部分)進行處理,這樣可以更加高效地使用CPU,
  • 實時的資料更新:資料總是已增量的方式有序的存盤在MergeTree中,資料可以持續不斷高效的寫入到表中,不會進行任何加鎖等操作,寫入流量在50M-200M/s
  • 適合在線查詢:回應速度快延遲極低
  • 豐富的聚合計算函式

4 我們的業務場景

  1. 大寬表,讀大量行少量列進行指標聚合計算查詢,結果集比較小,資料表都是通過Flink加工出來的寬表,列比較多,在對資料進行查詢或者分析時,經常選擇其中的少數幾列作為維度列、對其他少數幾列作為指標列,對全表或者一定范圍內的資料做聚合計算,這個程序會掃描大量的行資料,但是只用了少數幾列,
  2. 大量的串列分頁查詢與匯出
  3. Flink中資料大批量追加寫入,不做更新操作
  4. 有時某個指標計算需要全表掃描做聚合計算
  5. 很少進行全文搜索

結論:資料報表、資料分析場景是典型的OLAP場景,在業務場景上列式存盤資料庫Clickhouse比Elasticsearch更有優勢,Elasticsearch在全文搜索上更占優勢,但是我們這種全文搜索場景較少,

5 成本

  • 學習成本:Clickhouse是SQL語法比Elasticsearch的DSL更簡單,幾乎所有后端研發都有Mysql開發經驗,比較相通學習成本更低,
  • 開發、測驗、維護成本:Clickhouse是SQL語法,與Mysql開發模式相似,更好寫單元測驗,Elasticsearch是使用Java API拼接查詢陳述句,復雜度較高,不易讀不易維護,
  • 運維成本:未知,互聯網上在日志場景下Clickhouse比Elasticsearch成本更低,
  • 服務器成本:
  • Clickhouse的資料壓縮比要高于Elasticsearch,相同業務資料占用的磁盤空間ES占用磁盤空間是Clickhouse的3-10倍,平均在6倍, 見圖1
  • Clickhouse比ES占用更少的CPU和記憶體

結論:同等資料量情況下,Elasticsearch使用的存盤空間是Clickhouse的3-10倍,平均在6倍,綜合學習、開發、測驗、維護方面,Clickhouse比Elasticsearch更友好

6 測驗

6.1服務器配置

以下均基于下圖配置進行測驗

6.2 寫入壓測

以下基于wms_order_sku表,通過Flink在業務平穩情況下雙寫Elasticsearch和Clickhouse1000W+資料進行測驗得到的結果

  • 占用CPU情況:Elasticsearch CPU一直占用很高,Clickhouse占用很少CPU,見 圖2

  • 占用記憶體情況:Elasticsearch 記憶體升高頻繁GC,Clickhouse占用記憶體較低,比較平穩,見 圖3

  • 寫入吞吐量:CH單機寫入速度大約為50~200MB/s,如果寫入的資料每行為1kb,寫入速度為5-20W/s,圖 4(寫入吞吐量)為互聯網上Elasticsearch與Clickhouse寫入資料的對比圖,同等資料樣本的情況下CH寫入性能是Elasticsearch的5倍,由于我們目前Flink任務為雙寫,考慮到會互相影響,后續補充壓測結果,

結論:批量寫入資料時Elasticsearch比Clickhouse更吃記憶體和CPU,Elasticsearch消耗的記憶體是Clickhouse的5.3倍,消耗的CPU是Clickhouse的27.5倍,吞吐量是Elasticsearch的5倍

6.3 查詢性能(單并發測驗)

以下場景是我們資料報表以及資料分析中出現的高頻場景,所以基于此進行查詢性能測驗

資料對比情況

  • Clickhouse自身在集群配置差一倍的情況下查詢性能差異不是很大,CH2(48C 182GB)比CH1(80C 320GB)平均慢14%,見圖 5

  • Elasticsearch在集群配置差一倍的情況下查詢性能受影響較大,ES2(46C 320GB)比ES1(78C 576GB)平均慢40%,見圖 6

  • ES2(46C 320GB)與CH2(48C 182GB)相比,ES2與CH2 CPU核數相近,ES2記憶體是CH2 1.75倍的情況下,CH2的回應速度是ES2的回應速度的的12.7倍,見圖 7

結論:查詢資料時Elasticsearch比Clickhouse慢,在配置相近的情況下Clickhouse的回應速度是Elasticsearch的12.7倍,特別是基于時間的多欄位進行聚合查詢是Clickhouse比Elasticsearch快32倍,Clickhouse的查詢回應素速度受集群配置大小的影響較小,

6.4 查詢壓測(高并發測驗,資料來源于互聯網)

由于準備高并發測驗比較復雜耗時多,后續會基于我們的業務資料以及業務場景進行查詢壓力測驗,以下資料來源于互聯網在用戶畫像場景(資料量262933269)下進行的測驗,與我們的場景非常類似,

結論:Clickhouse對于高并發支持的不夠,官方建議最大QPS為100,高并發情況下吞吐量不如Elasticsearch更友好

7 總結

Clickhouse與Elasticsearch對比Clickhouse的優缺點,

優點:

  • 硬體資源成本更低,同等場景下,Clickhouse占用的資源更小,
  • 人力成本更低,新人學習、開發單測以及測驗方面都更加友好,更容易介入,
  • OLAP場景下Clickhouse比Elasticsearch更適合,聚合計算比Elasticsearch更精缺、更快,更節省服務器計算資源,
  • 寫入性能更高,同等情況下是Elasticsearch的5倍,寫入時消耗的服務器資源更小,
  • Elasticsearch在大量匯出情況下頻繁GC,嚴重可能導致宕機,不如Clickhouse穩定,
  • 查詢性能平均是Elasticsearch的12.7倍,Clickhouse的查詢性能受服務器配置影響較小
  • 月服務器消費相同情況Clickhouse能夠得到更好的性能,

缺點:

  • 在全文搜索上不如Elasticsearch支持的更好,在高并發查詢上支持的不如Elasticsearch支持的更好

作者:京東物流 馬紅巖

內容來源:京東云開發者社區

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/553361.html

標籤:其他

上一篇:【資料庫】時區及JDBC的時區設定

下一篇:返回列表

標籤雲
其他(159662) Python(38169) JavaScript(25450) Java(18123) C(15231) 區塊鏈(8268) C#(7972) AI(7469) 爪哇(7425) MySQL(7211) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4576) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1976) 功能(1967) Web開發(1951) HtmlCss(1944) C++(1922) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1861) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • Elasticsearch與Clickhouse資料存盤對比

    Elasticsearch的查詢陳述句維護成本較高、在聚合計算場景下出現資料不精確等問題。Clickhouse是列式資料庫,列式型資料庫天然適合OLAP場景,類似SQL語法降低開發和學習成本,采用快速壓縮演算法節省存盤成本,采用向量執行引擎技術大幅縮減計算耗時。所以做此對比,進行Elasticsearc... ......

    uj5u.com 2023-05-25 09:40:45 more
  • 【資料庫】時區及JDBC的時區設定

    JDBC連接時有個TimeZone配置,這玩意到底有用嗎?我是使用Postgresql和Mysql兩個資料庫驗證的。結果如下: 資料庫 部署方式 版本 JDBC連接TimeZone引數 JDBC連接serverTimezone引數 總結 Mysql docker 8.0 沒用 有用,會使用客戶端時區 ......

    uj5u.com 2023-05-25 09:30:15 more
  • es筆記六之聚合操作之指標聚合

    > 本文首發于公眾號:Hunter后端 > 原文鏈接:[es筆記六之聚合操作之指標聚合](https://mp.weixin.qq.com/s/UyiZ2bzFxi7zCGmL1Xf3CQ) 聚合操作,在 es 中的聚合可以分為大概四種聚合: * bucketing(桶聚合) * mertic(指標 ......

    uj5u.com 2023-05-25 09:23:32 more
  • Elasticsearch與Clickhouse資料存盤對比

    Elasticsearch的查詢陳述句維護成本較高、在聚合計算場景下出現資料不精確等問題。Clickhouse是列式資料庫,列式型資料庫天然適合OLAP場景,類似SQL語法降低開發和學習成本,采用快速壓縮演算法節省存盤成本,采用向量執行引擎技術大幅縮減計算耗時。所以做此對比,進行Elasticsearc... ......

    uj5u.com 2023-05-25 09:23:21 more
  • 與世界分享我剛編的mysql http隧道工具-hersql原理與使用

    原文地址:[https://blog.fanscore.cn/a/53/](https://blog.fanscore.cn/a/53/) # 1. 前言 本文是[與世界分享我剛編的轉發ntunnel_mysql.php的工具](https://blog.fanscore.cn/a/47/)的后續, ......

    uj5u.com 2023-05-25 09:22:35 more
  • 01_MySQL基礎架構

    01_MySQL基礎架構 MySQL 45 講Note: 課程專欄名稱:《MySQL實戰45講》課程 筆記參考:MYSQL45 講 01_基礎架構:一條SQL查詢陳述句是如何執行的? 一條SQL查詢是如何執行的 先看一下下面這個圖 ?? 我們首先理解一下 Mysql 的基礎架構,理解如果執行一條簡單的 ......

    uj5u.com 2023-05-25 09:22:24 more
  • 【資料庫】時區及JDBC的時區設定

    JDBC連接時有個TimeZone配置,這玩意到底有用嗎?我是使用Postgresql和Mysql兩個資料庫驗證的。結果如下: 資料庫 部署方式 版本 JDBC連接TimeZone引數 JDBC連接serverTimezone引數 總結 Mysql docker 8.0 沒用 有用,會使用客戶端時區 ......

    uj5u.com 2023-05-25 09:22:15 more
  • 150萬學術名詞中英對照字典ACCESS資料庫

    今天這個資料是一款字典的型別的軟體,專門用來查詢一些學術上面的名詞的中英對照,超過180個學科分類,150多萬條記錄,伴隨您悠游于學海之中,是您做學問、寫論文的好幫手。 主要科目有:電子計算機名詞(107213)、電機工程名詞(100395)、電力工程(68379)、外國地名譯名(64487)、機械 ......

    uj5u.com 2023-05-25 09:21:56 more
  • Apache Hudi 在袋鼠云資料湖平臺的設計與實踐

    在大資料處理中,[實時資料分析](https://www.dtstack.com/dtengine/easylake?src=https://www.cnblogs.com/DTinsight/p/szsm)是一個重要的需求。隨著資料量的不斷增長,對于實時分析的挑戰也在不斷加大,傳統的批處理方式已經不能滿足[實時資料處理](https://www.dtstack.com ......

    uj5u.com 2023-05-25 09:21:46 more
  • mycat實作mysql基于GITD實作雙主雙從讀寫分離master節點高可用

    架構說明 10.0.0.18 master節點和10.0.0.22節點互為主 10.0.0.19 10.0.0.18的slave節點 10.0.0.22 master節點和10.0.0.19節點互為主 10.0.0.24 10.0.0.22的slave節點 10.0.0.23 mycat節點 mys ......

    uj5u.com 2023-05-24 09:34:55 more