Clickhouse & Elasticsearch 选型对比

Clickhouse&Elasticsearch介绍

Clickhouse是俄罗斯搜索巨头Yandex开发的完全列式存储计算的分析型数据库。ClickHouse在这两年的OLAP领域中一直非常热门,国内互联网大厂都有大规模使用。Elasticsearch是一个近实时的分布式搜索分析引擎,它的底层存储完全构建在Lucene之上。简单来说是通过扩展Lucene的单机搜索能力,使其具有分布式的搜索和分析能力。

今天很多用户在实际的业务场景中,常常面对ClickHouse和Elasticsearch技术选型的难题。本文将通过功能对比和性能测试的手段对比两者的优劣之处并进行选型,同时会附上一份覆盖多场景的测试报作为参考。

Clickhouse vs Elasticsearch

|------|-----------|-----------------------|----------------------------------------|
| 类别 || Elasticsearch | Clickhouse |
| 导入方式 | MQ导入 | 内置支持kafka, 插件插件plusar | 内置支持 kafka, 插件支持plusar |
| 导入方式 | JDBC导入 | 内置支持 | 内置支持 |
| 导入方式 | 用户导入 | Rest API | HTTP接口/JDBC |
| 存储架构 | 数据分区 | 时间分区,字段分区 | 支持多个分区字段 |
| 存储架构 | 数据分桶 | 支持主键Hash分桶 | 支持分片 |
| 存储架构 | 多副本 | 支持多副本设置 | 支持副本表 |
| 存储架构 | 字段类型 | 结构化 半结构化(Array、Map) | 结构化 半结构化(Array、Map) |
| 存储架构 | 压缩 | LZ4,Deflate | LZ4,ZSTD |
| 存储架构 | 存储引擎 | 行/列/倒排索引 | 行存/稀疏索引 |
| 存储架构 | 存储压缩比 | 一般 | 高 |
| 计算能力 | 向量化计算 | 不支持 | 支持 |
| 计算能力 | 并发能力 | < ~100 | < ~100 |
| 计算能力 | 写入性能 | 3000/s | 3.5w/s |
| 计算能力 | 谓词下推 | 弱 | 一般 |
| 计算能力 | JOIN | 不支持 | 支持BroadCast Join 支持预hash的Colocate JOIN |
| 计算能力 | 物化视图(预计算) | 不支持 | 支持 |
| 计算能力 | 自定义函数 | 不支持 | 支持 |
| 计算能力 | 全文搜索 | 支持 | 不支持 |
| 扩展性 | 协议 | JDBC/ODBC/RESTAPI协议 | JDBC/ODBC/HTTP协议 |
| 扩展性 | SQL协议 | DSL为主,SQL兼容性差 | 兼容标准SQL协议 |
| 扩展性 | 动态列 | 支持 | 不支持 |
| 扩展性 | 存储分离 | 不支持 | 不支持 |
| 扩展性 | 数据备份 | 支持快照,定时备份 | 第三方工具开 |
| 扩展性 | 扩缩容 | 需要Reblance数据 | 需要Reblance数据 |

ClickHouse与ES的对比优缺点

优点:

  • ClickHouse写入吞吐量大,单服务器日志写入量在50MB到200MB/s,每秒写入超过60w记录数,是ES的5倍以上。
  • clickhouse的计算框架,支持向量化引擎,以及自低向上的极致算法层面优化,在OLAP场景下可以最大限度的压榨CPU IO等性能,对比ES存在明显优势。
  • clickhouse支持雾化视图和语句算功能,对于固定的统计分析场景可以将耗时从十几秒下降到几十毫秒级别级别
  • ClickHouse比ES服务器成本更低。一方面ClickHouse的数据压缩比比ES高(行列存储索引的存在),相同数据占用的磁盘空间只有ES的1/3~1/30,节省了磁盘空间的同时,也能有效的减少磁盘IO;另一方面ClickHouse比ES占用更少的内存,更高效的利用CPU资源。
  • 相比ES,ClickHouse稳定性更高,运维成本更低。ES中不同的Group负载不均衡,有的Group负载高,会导致写Rejected等问题,需要人工迁移索引;在ClickHouse中通过集群和Shard策略,采用轮询写的方法,可以让数据比较均衡的分布到所有节点。
  • ES中一个大查询可能导致OOM的问题;ClickHouse通过预设的查询限制,会查询失败,不影响整体的稳定性。
  • ClickHouse采用SQL语法,比ES的DSL更加简单,新用户学习成本更低。

缺点:

  • 由于是列式数据库,且只支持稀疏索引(bloom fliter),不具备倒排索引功能,无法像ES一样提供同样的全文检索能力。
  • 无法动态添加字段,需要提前定义好表schema。
相关推荐
奔跑吧邓邓子2 小时前
大数据利器Hadoop:从基础到实战,一篇文章掌握大数据处理精髓!
大数据·hadoop·分布式
说私域3 小时前
基于定制开发与2+1链动模式的商城小程序搭建策略
大数据·小程序
hengzhepa4 小时前
ElasticSearch备考 -- Async search
大数据·学习·elasticsearch·搜索引擎·es
GZ_TOGOGO5 小时前
【2024最新】华为HCIE认证考试流程
大数据·人工智能·网络协议·网络安全·华为
狼头长啸李树身7 小时前
眼儿媚·秋雨绵绵窗暗暗
大数据·网络·服务发现·媒体
Json_181790144808 小时前
商品详情接口使用方法和对接流程如下
大数据·json
Data 3178 小时前
Hive数仓操作(十七)
大数据·数据库·数据仓库·hive·hadoop
bubble小拾12 小时前
ElasticSearch高级功能详解与读写性能调优
大数据·elasticsearch·搜索引擎
ZOHO项目管理软件12 小时前
EDM平台大比拼 用户体验与营销效果双重测评
大数据
不能放弃治疗13 小时前
重生之我们在ES顶端相遇第 18 章 - Script 使用(进阶)
elasticsearch