Elasticsearch大家都不陌生,是一个近实时的分布式搜索分析引擎,以ELK套件而闻名,在日志系统领域热度很高,而ClickHouse是一个用于联机分析OLAP的列式数据库管理系统DBMS,近些年发展也是非常不错,目前在github上有24.9K star,在大数据处理领域应用越来越广泛,并且各大云厂商都有相关的云产品。
最近关于一个日志处理的场景与小伙伴们一起讨论,几个小伙伴提出来ClickHouse相对于Elasticsearch更加优秀,在某些场景下可以替换Elasticsearch。于是做了一下调研:
ClickHouse相对于Elasticsearch的优势有:
1、由于存储架构的差异,Elasticsearch是近实时的,写入的数据会先进入缓存,在适当的时机才刷入磁盘,并且在多副本的同步上,Elasticsearch要求实时同步,写入的请求需要写入多个副本以后才返回,而ClickHouse采用的是直接写磁盘的方式,客户端可以批量写入,并且在副本同步上,ClickHouse是依赖异步的磁盘文件同步,所以整体的写入的吞吐量高于Elasticsearch;
2、ClickHouse在大量数据的的聚合查询分心上面,对于机器资源的利用优于Elasticsearch;
3、硬件资源成本更低,同等场景下,Clickhouse占用的资源更小;
4、Clickhouse的数据压缩比要高于Elasticsearch,相同业务数据占用的磁盘空间ES占用磁盘空间是Clickhouse的3-10倍,平均在6倍;
5、ClickHouse的SQL语法比Elasticsearch的DSL语法更加简单,对于编程和运维人员更加友好。
Elasticsearch相对于ClickHouse的优势有:
1、在全文搜索的场景下表现更好,多种内置模块方便实现搜索的功能,如高亮等;
2、有完善的组件体系,从其他数据源导入到Elasticsearch非常方便;
3、有Kibana和Logstash等组件组成完善的日志系统解决方案,在这种场景下省事、好用、易维护;
4、在高并发查询的情况下,Elasticsearch的性能表现优于ClickHouse;
你在选型时做过两者的比对吗?你是如何考虑的?
网友评论