亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現ClickHouse與 Elasticsearch聚合性能對比測試

發布時間:2021-12-16 17:32:22 來源:億速云 閱讀:487 作者:柒染 欄目:大數據

本篇文章為大家展示了如何實現ClickHouse與 Elasticsearch聚合性能對比測試,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Elasticsearch以其優秀的分布式架構與全文搜索引擎等特點在機器數據的存儲、分析領域廣為使用,但隨著數據量的增長,其聚合分析性能已無法滿足業務需求。而ClickHouse作為一個高性能的OLAP列式數據庫管理系統有望解決這一痛點。

本文是對ClickHouse與Elasticsearch聚合性能的簡單對比測試。主要關注查詢語句的響應時間,暫不考慮資源占用情況。

組件版本CPU內存
ClickHouse7.9.04C8G
Elasticsearch20.11.4.134C8G

使用ClickHouse官方提供的測試數據集,共67G,約6億行。

如何實現ClickHouse與 Elasticsearch聚合性能對比測試

其中,ClickHouse使用LO_ORDERDATE字段作為分區鍵,使用LO_ORDERDATE, LO_ORDERKEY作為排序鍵。


某字段出現次數TOP 10

 
# ClickHouse
SELECT LO_SHIPMODE,COUNT() FROM lineorder GROUP BY LO_SHIPMODE ORDER BY COUNT() DESC LIMIT 10

# Elasticsearch
GET lineorder/_search
{
 "aggs": {
   "1": {
     "terms": {
       "field": "LO_SHIPMODE.keyword",
       "order": {
         "_count": "desc"
       },
       "size": 10
     }
   }
 },
 "size": 0
}
     

某字段按年進行計數

 

# ClickHouse
SELECT toYear(LO_ORDERDATE),COUNT() FROM lineorder GROUP BY toYear(LO_ORDERDATE) FORMAT PrettyCompactMonoBlock

# Elasticsearch
GET lineorder/_search
{
 "aggs": {
   "2": {
     "date_histogram": {
       "field": "LO_ORDERDATE",
       "calendar_interval":"1y",
       "format":"yyyy-MM-dd"
     }
   }
 },
 "size": 0
}
     

多個字段按年進行統計


# ClickHouse
SELECT LO_ORDERDATE,LO_ORDERKEY,LO_SHIPMODE,LO_ORDERPRIORITY,LO_COMMITDATE FROM lineorder WHERE LO_ORDERDATE >= '1992-01-01' AND LO_ORDERDATE < '1993-01-01' ORDER BY LO_ORDERDATE  LIMIT 500

# Elasticsearch
GET lineorder/_search
{
 "size": 500,
 "sort": [
   {
     "timestamp": {
       "order": "desc",
       "unmapped_type": "boolean"
     }
   }
 ],
 "query": {
   "bool": {
     "must": [],
     "filter": [
       {
         "match_all": {}
       },
       {
         "match_all": {}
       },
       {
         "range": {
           "LO_ORDERDATE": {
             "gte": "1992-01-01",
             "lte": "1993-01-01",
             "format": "strict_date_optional_time"
           }
         }
       }
     ],
     "should": [],
     "must_not": []
   }
 }
}
     

基于時間的多字段聚合


# ClickHouse
SELECT toYear(LO_ORDERDATE),LO_SHIPMODE,COUNT() FROM lineorder GROUP BY toYear(LO_ORDERDATE),LO_SHIPMODE ORDER BY toYear(LO_ORDERDATE) FORMAT PrettyCompactMonoBlock

# Elasticsearch
GET lineorder/_search
{
 "aggs": {
   "3": {
     "terms": {
       "field": "LO_SHIPMODE.keyword",
       "order": {
         "_count": "desc"
       },
       "size": 10
     },
     "aggs": {
       "2": {
         "date_histogram": {
           "field": "LO_ORDERDATE",
           "calendar_interval": "1y",
           "time_zone": "Asia/Shanghai",
           "min_doc_count": 1
         }
       }
     }
   }
 },
 "size": 0
}
     

基于時間的多字段聚合


# ClickHouse
SELECT toYear(LO_ORDERDATE),LO_SHIPMODE,COUNT() FROM lineorder GROUP BY toYear(LO_ORDERDATE),LO_SHIPMODE ORDER BY toYear(LO_ORDERDATE) FORMAT PrettyCompactMonoBlock

# Elasticsearch
GET lineorder/_search
{
 "aggs": {
   "3": {
     "terms": {
       "field": "LO_SHIPMODE.keyword",
       "order": {
         "_count": "desc"
       },
       "size": 10
     },
     "aggs": {
       "2": {
         "date_histogram": {
           "field": "LO_ORDERDATE",
           "calendar_interval": "1y",
           "time_zone": "Asia/Shanghai",
           "min_doc_count": 1
         }
       }
     }
   }
 },
 "size": 0
}
     

聚合嵌套(非時間字段)


# ClickHouse
SELECT LO_SHIPMODE,COUNT(LO_SHIPMODE),LO_ORDERPRIORITY,COUNT(LO_ORDERPRIORITY) FROM lineorder GROUP BY LO_SHIPMODE,LO_ORDERPRIORITY ORDER BY COUNT(LO_SHIPMODE),COUNT(LO_ORDERPRIORITY) LIMIT 5 BY LO_SHIPMODE,LO_ORDERPRIORITY

# Elasticsearch
GET lineorder/_search
{
 "aggs": {
   "2": {
     "terms": {
       "field": "LO_SHIPMODE.keyword",
       "order": {
         "_count": "desc"
       },
       "size": 5
     },
     "aggs": {
       "3": {
         "terms": {
           "field": "LO_ORDERPRIORITY.keyword",
           "order": {
             "_count": "desc"
           },
           "size": 5
         }
       }
     }
   }
 },
 "size": 0
}
 

 
聚合場景ck(ms)es(ms)性能對比
基于時間的多字段聚合550615599近3倍
多個字段按年進行計數(數據表)381626716倍多
某字段出現次數 TOP 10(餅圖)40487317近2倍
某字段按年進行計數(時間趨勢圖)9012325725倍多
聚合嵌套(非時間字段)6937157672倍多

相同數據量下,ClickHouse的聚合性能都要優于Elasticsearch,且如果基于排序鍵進行聚合,性能更好,是ES的數倍。
此外,ClickHouse的SummaryMergeTree、AggregatingMergeTree表引擎支持后臺自動聚合數據,所以在某些場景下其聚合分析性能會更優。

上述內容就是如何實現ClickHouse與 Elasticsearch聚合性能對比測試,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浦城县| 利川市| 汾阳市| 新巴尔虎左旗| 玉山县| 中卫市| 鹿邑县| 富锦市| 阳江市| 泽库县| 阿坝县| 德钦县| 滦平县| 台中市| 秀山| 通辽市| 凤台县| 古丈县| 新化县| 隆安县| 永登县| 扎赉特旗| 厦门市| 当涂县| 房山区| 汉中市| 来凤县| 镇江市| 迭部县| 玉山县| 南和县| 晴隆县| 方正县| 三穗县| 晋州市| 冷水江市| 青田县| 刚察县| 汉沽区| 宜春市| 兰考县|