ClickHouse-1(简介)

ClickHouse是什么

ClickHouse是俄罗斯Yandex开发的一款基于列式存储的开源OLAP查询数据库,基于C++语言开发的。ClickHouse在 2016 年开源,在计算引擎里算是一个后起之秀,在内存数据库领域号称是最快的。
另外需要注意的是,ClickHouse并不是基于Hadoop生态的,而是采用 Local attached storage 作为存储,这样整个 IO 可能就没有 Hadoop 那一套的局限。

ClickHouse的特点

  1. 列式存储
    ClickHouse底层数据存储是列式存储的,即同一列的数据放到一块存储,区别于常见的行式存储,列式存储有以下特点
    ※ 由于一列的数据都是同一数据类型的,因此数据格式更加相近,因此应用数据压缩算法的效果会更好
    ※ 对某列数据进行聚合计算更加方便
    ※ 数据写入速度较慢(每条数据都要单独寻找写入位置),因此ClickHouse更推荐批量的写入,避免多次小批量的写入数据
  2. 表引擎
    ClickHouse 和 MySQL 类似, 把表级的存储引擎插件化, 根据表的不同需求可以设定不同的存储引擎。目前包括合并树、日志、接口和其他四大类 20 多种引擎。ClickHouse的表引擎是很重要的一项机制,会影响到数据的存储方式和位置,进而对查询性能和效率有影响
  3. 高吞吐
    ClickHouse 采用类 LSM Tree 的结构,数据写入后定期在后台 Compaction。通过类 LSM tree的结构, ClickHouse 在数据导入时全部是顺序 append 写,写入后数据段不可更改,在后台compaction 时也是多个段 merge sort 后顺序写回磁盘。顺序写的特性,充分利用了磁盘的吞吐能力,即便在 HDD 上也有着优异的写入性能。
  4. 线程级并行
      ClickHouse将数据划分为多个分区(partition,类似于Hive的分区),每个分区再进一步划分为多个索引段(index ganularity)。把分区里面的数据划分成细粒度的好处是可以多核并行处理。
      执行一条查询SQL时可以利用多线程,把SQL提交到每个分区查询,每个CPU现成管理一个分区的数据查询,最后合并结果。这种极致的并行处理能力极大的降低了查询的延迟。但是因为查询是多线程的,所以非常消耗CPU,每条SQL都是并行的,这样的话带来的问题就是并行查询很多SQL的时候就会并发非常高,核数不够的话CPU就会不停的在线程之间来回切换。CPU在大量线程里面轮转本事就要消耗CPU,所以开销更大。
      ClickHouse对一条SQL就已经是高并发,并行处理了,如果提交的SQL还是高并发就不适合使用ClickHouse。ClickHouse适合查询数据量比较大,SQL比较复杂的查询,他的单一SQL处理能力非常强,因为是并行的,如即席查询,或者像大屏这种低频的查询。

ClickHouse的适用场景

由于列式存储的特点,ClickHouse更适合用于OLAP数据查询,数据定期批量插入,多次查询。
同时由于ClickHouse的关联性能不够优秀,因此更适合存储数据关联后得出的结果,用作数仓的DWS/ADS层,支撑即席查询或大屏的数据服务。
官方文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值