ClickHouse是什么

置顶 精帖
0 0
大海无量
大海无量 博主 2020-11-18 21:53

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。由号称“俄罗斯 Google”的Yandex开发而来,在2016年开源,在计算引擎里算是一个后起之秀,在内存数据库领域号称是最快的。由于它有几倍于GreenPlum等引擎的性能优势,所以不少人都选择将其安装云服务器中使用。

ClickHouse是一个列导向数据库,是原生的向量化执行引擎。它在大数据领域没有走Hadoop生态,而是采用Local attached storage作为存储,这样整个IO可能就没有Hadoop那一套的局限。它的系统在生产环境中可以应用到比较大的规模,因为它的线性扩展能力和可靠性保障能够原生支持shard+replication这种解决方案。它还提供了一些SQL直接接口,有比较丰富的原生client。

以下是ClickHouse作为分析型数据库的特点:

一. 速度快

ClickHouse性能超过了市面上大部分的列式存储数据库,相比传统的数据ClickHouse要快100-1000倍,ClickHouse还是有非常大的优势。

100Million 数据集:

ClickHouse比Vertica约快5倍,比Hive快279倍,比MySQL快801倍。

1Billion 数据集:

ClickHouse比Vertica约快5倍,MySQL和Hive已经无法完成任务了。

二. 功能多

ClickHouse支持数据统计分析各种场景:

1.支持类SQL查询;

2.支持繁多库函数(例如IP转化,URL分析等,预估计算/HyperLoglog等);

3.支持数组(Array)和嵌套数据结构(Nested Data Structure);

4.支持数据库异地复制部署。

三. 文艺范

不理睬Hadoop生态,走自己的路。目前任何具有x86_64,AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Mac OS X上运行。

ClickHouse的缺点

1.不支持Transaction:想快就别想Transaction;

2.聚合结果必须小于一台机器的内存大小:不是大问题;

3.缺少完整的Update/Delete操作;

4.支持有限操作系统。


ClickHouse是一款用于大数据实时分析的列式数据库管理系统,而非数据库。通过向量化执行以及对CPU底层指令集(SIMD)的使用,它可以对海量数据进行并行处理,从而加快数据的处理速度。

主要优点有:

  • 为了高效的使用CPU,数据不仅仅按列存储,同时还按向量进行处理;
  • 数据压缩空间大,减少IO;处理单查询高吞吐量每台服务器每秒最多数十亿行;
  • 索引非B树结构,不需要满足最左原则;只要过滤条件在索引列中包含即可;即使在使用的数据不在索引中,由于各种并行处理机制ClickHouse全表扫描的速度也很快;
  • 写入速度非常快,50-200M/s,对于大量的数据更新非常适用。

ClickHouse并非万能的,正因为ClickHouse处理速度快,所以也是需要为“快”付出代价。选择ClickHouse需要有下面注意以下几点:

  • 不支持事务,不支持真正的删除/更新;
  • 不支持高并发,官方建议qps为100,可以通过修改配置文件增加连接数,但是在服务器足够好的情况下;
  • SQL满足日常使用80%以上的语法,join写法比较特殊;最新版已支持类似SQL的join,但性能不好;
  • 尽量做1000条以上批量的写入,避免逐行insert或小批量的insert,update,delete操作,因为ClickHouse底层会不断的做异步的数据合并,会影响查询性能,这个在做实时数据写入的时候要尽量避开;
  • Clickhouse快是因为采用了并行处理机制,即使一个查询,也会用服务器一半的CPU去执行,所以ClickHouse不能支持高并发的使用场景,默认单查询使用CPU核数为服务器核数的一半,安装时会自动识别服务器核数,可以通过配置文件修改该参数。

回帖
  • 消灭零回复