ClickHouse核心设计

列式存储

如果想查询的更快,最有效的方式就是减少数据的扫描范围和数据传输时的大小。

数据压缩

ClickHouse默认使用LZ4压缩算法,数据总体的压缩比可以达到8:1。

向量化执行引擎

向量化执行可以简单理解成,一项消除程序中循环的优化。比如为了割N田稻子,非向量化执行的方式是用一台割稻机割N次稻子,而向量化执行是用N台割稻机割一次,为了实现向量化执行,需要利用CPU的SIMD指令。

关系模型

ClickHouse使用关系模型描述数据,并提供了数据库、表、视图和函数,在SQL解析方面,大小写敏感的。

表引擎

ClickHouse支持MergeTree、内存、文件等20多种表引擎,但是通常使用MergeTree。

多线程和分布式

分布式领域中,计算移动比数据移动更加划算。ClickHouse在数据存储方面,既支持分区也支持分片。

多主架构

传统的像HBase、ElasticSearch都是基于Master-Slave架构,而ClickHouse则是采用Multi-Master多主架构,集群中各节点是对等的,天然规避了单点故障的问题。

在线查询

SparkSQL和Hive无法保证90%的查询能在1s返回,而商用的Vertica价格太昂贵,ElasticSearch搜索引擎在亿级数据聚合查询时则跟不上。

数据分片和查询

数据分片是将数据横向切分,根据数据Hash到不同的节点存储,ClickHouse提供了本地表和分布式表的概念,一张本地表就是一份数据的分片,分布式表不存储任何数据,只是本地表的访问代理,类似于分库的中间件,借助于分布式表,客户端能够代理访问多个分片,而不需要关心各个本地分片的细节。

优化实现

根据不同的应用场景,使用不同的实现方式,如去重计数函数uniqCombined(),根据不同的数据量选择不同的实现,当数据量小时使用Array存储,当数据量中等时使用HashSet存储,当数据量很大时使用HyperLogLog算法实现。

数据的删除和修改

ClickHouse提供了delete和update操作,这类操作被称为Mutation操作,本质上是Alter的变种,这类操作不是常规意义上的update和delete,mutation操作是一个异步的后台过程,提交之后会立即返回,但是具体逻辑是在后续进行执行的。
ALTER TABLE TEST1 DELETE WHERE ID = “111”

ClickHouse原理解析与应用实践

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值