初识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. 不支持二级索引

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

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章