初识ClickHouse:来自战斗民族的OLAP利器

ClickHouse是一个用于数据分析(OLAP)的列式数据库管理系统(column-oriented DBMS),诞生于“战斗民族”俄罗斯,由搜索巨头Yandex公司开源。目前国内不少大厂在使用,包括腾讯、今日头条、携程、快手等,集群规模多达数千节点,阿里云更是推出了云产品ClickHouse。官方介绍:

ClickHouse is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).

ClickHouse一定是有不可取代或者不可或缺的特点,才能使得它这么受青睐。

ClickHouse特点

ClickHouse从OLAP场景需求出发,定制开发了一套全新的高效列式存储引擎。

列式存储

ClickHouse是一个列式数据库,列式就意味着按列存储与扫描,拥有更小的io操作、更高的压缩比,非常适合于OLAP场景。列式与行式的差异可见下图:

速度快

ClickHouse是一个非常快的数据库系统,数据不仅按列存储、使用高效压缩减少io,同时还支持向量化执行引擎,能够充分使用CPU性能。

ClickHouse不仅查询快,处理单查询高吞吐量每台服务器每秒最多数十亿行;写入速度也非常快,对于大量的数据更新非常适用。

ClickHouse到底有多快?可以参考社区的一个性能测试报表。

另外ClickHouse在单表查询时表现优秀,领跑其他查询引擎,参考:

但是在多表关联查询时,性能表现相对比较差,更多性能测试报告,可以参见:http://www.clickhouse.com.cn/topic/5c453371389ad55f127768ea。

功能丰富

在使用方面,除了速度快,ClickHouse支持大部分的SQL语法,不过目前还有一定限制;ClickHouse支持实时的数据更新,适用于在线查询。ClickHouse具有良好的可扩展性,支持单节点与分布式部署,可以扩展到成百上千个节点,单个节点可容纳万亿行数据或超过100TB数据。此外,ClickHouse还支持主键索引、稀疏索引、数据Sharding、数据Partitioning、TTL、主备复制等特性,参见文末链接的文章。

接下来我们看一看 ClickHouse有哪些应用场景和使用限制。

应用场景与限制

ClickHouse的应用场景:

1.绝大多数请求都是用于读访问的
2.数据需要以大批次(大于1000行)进行更新,而不是单行更新;或者根本没有更新操作
3.数据只是添加到数据库,没有必要修改
4.读取数据时,会从数据库中提取出大量的行,但只用到一小部分列
5.表很“宽”,即表中包含大量的列
6.查询频率相对较低(通常每台服务器每秒查询数百次或更少)
7.对于简单查询,允许大约50毫秒的延迟
8.列的值是比较小的数值和短字符串(例如,每个URL只有60个字节)
9.在处理单个查询时需要高吞吐量(每台服务器每秒高达数十亿行)
10.不需要事务
11.数据一致性要求较低
12.每次查询中只会查询一个大表。除了一个大表,其余都是小表
13.查询结果显著小于数据源。即数据有过滤或聚合。返回结果不超过单个服务器内存大小

相应地,使用ClickHouse也有其本身的限制:

1.不支持真正的删除/更新支持 不支持事务(期待后续版本支持)
2.不支持二级索引(PS:新版本中已经支持)
3.有限的SQL支持,join实现与众不同
4.不支持窗口功能
5.元数据管理需要人工干预维护

ClickHouse因性能卓越,被广泛应用于各种分析场景(特别是单表查询),例如用户行为分析、日志分析等。我们先从这几个方面认识下ClickHouse,对其有一个大概的了解。

参考:

https://clickhouse.tech/docs/en/

https://zhuanlan.zhihu.com/p/98135840

https://zhuanlan.zhihu.com/p/22165241

https://zhuanlan.zhihu.com/p/71014268

往期推荐

1、大数据之数据交换和存储序列化利器 Avro

2、干货 | Kafka 内核知识梳理,附思维导图

3、MapReduce Shuffle 和 Spark Shuffle 结业篇

4、实时数仓 | 你想要的数仓分层设计与技术选型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章