Clickhouse的核心特性
列式存储和数据压缩
- clickhouse是列式存储,列式存储跟行式存储相比,可以减少一些不必要列的扫描,因为我们都是大数据量查询,数据分析有时候只需要使用到一些列的数据,所以行式存储对于我们来说并不适用,因为每次扫描数据都需要一行一行的扫描,多列的记录会造成不必要的资源浪费。
- clickhouse也是支持数据压缩,行式存储相比于列式存储更加不适合压缩,所以这就是为什么clickhouse更加快速的原因
向量化执行引擎
- 简单来说就是,本来是通过单条指令操纵多条数据,通过数据并行以提高性能的一种实现方式,原理是通过CPU寄存器层面实现数据的并行操作。
关系模型与SQL查询
- clickhouse沿用了关系模型描述数据并且提供了传统的数据库,表,视图和函数等,最主要的是延用最传统的sql查询,值得注意的是clickhouse是有大小写的分别的
多样化的表引擎
- 针对不同的需求,click house有不同的表引擎,到目前为止一共有20多种表引擎
多线程与分布式
- clickhouse支持分布式,将利用多台服务器的资源协同处理。
- 为了实现这个目标首先要在数据层面完成分布式,因为在分布式中,计算传输比数据传输消耗的更少,所以相比于移动数据,更好的方法是将数据事先划分好,分不到不同的服务器上,查询的时候将数据推到下面的服务器上
- clickhouse支持分区也支持分片
多主架构
- 跟寻常的分布式系统相比,click house是多主框架,以往的是主从框架,有一个leader但是clickhouse不是,click house是每个点都可以是主控点,每个节点的功能都一样,所以避免了单点故障的问题。
数据分片与分布式查询
Clickhouse架构设计
Column与Field
- Column 是内存中的一列数据的基本对象,有接口和实现两个部分,各种关系运算都跟她有关
- Field 是代表一个单值
DataType
Block与Block流
Table
Parser与Inter preter
Functions与Aggregate Functions
Cluster与Replication
|