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

2020-06-05 16:07:06 浏览数 (1)

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

0 人点赞