clickhouse 特性——clickhouse 基础篇(一)

文章目录

列式存储

列式存储的目的有两个,一是缩小数据扫描范围 ,二是减少数据传输大小, 因此列存储和数据压缩通常是伴生的,列存储是数据压缩的前提。列存储的好处简单总结如下:

  • 将I/O限制为实际需要的数据,仅加载需要访问的列。
  • 节省空间,列存储更容易压缩。
  • 便于压缩编码。
  • 适用于向量化执行引擎。

Parquet 目前比较最流行的列式存储,提供了高效的列式存储数据表达能力,目前在大数据存储生态中被各个开源项目广泛使用,下边是 Parquet 文件存储模型图:

各组件功能说明:

clickhouse 的默认存储格式是 Parquet, 并且支持 Parquet 格式的文件操作,包括导入导出 clickhouse。

向量化查询执行引擎

数据库查询执行模型主要有3种:火山模型(Volcano Model)、物化模型(Materializa-tion Model)、向量化模型(Vectoried Model)。
火山模型

  • 缺点:火山模型就是将SQL 转化为一棵语法树,需要一个节点一个节点的解析,每个节点都有一个输入和输出数据,每次只能处理一条数据,效率低,我们常用的 MySQL 就是该模型。
  • 优点: 处理逻辑清晰,每个节点只要关心自己的处理逻辑即可,耦合性低。

物化模型

  • 每个节点一次处理所有的输入,处理完之后将所有结果一次性输出。

向量化模型

  • 每个节点每次处理一批数据,而不是所有数据和一条数据,属于火山模型和物化模型的折中。clickhouse 和 Presto 和许多其他 OLAP 系统就是使用的该模型。
  • 在向量化模型中,每次处理包含多行记录的一批数据,每一批数据中的每一列都会被存储为一个向量(一个原始数据类型的数组),从而极大地减少了执行过程中的方法调用、反序列化和不必要的if-else操作,大大减少了CPU的使用时间,如下图所示:

从上图我们也可以看出要想使用向量化查询,我们就必须使用列式存储。

向量化模型充分利用了现代计算机的向量化计算:
VectorWise的基本思想

  • 将压缩的列数据整理成现代CPU容易处理的数据向量模式,利用现代CPU的SIMD(Single Instruction Multiple Data,单指令多数据流)技术,每次处理一批向量数据,极大地提高了处理效率。
  • 单指令流(Single Instruction)是指同时只能执行一种操作,多数据流(Multiple Data)则是指在一组同构的数据(通常称为数据向量)上进行操作。

clickhouse 领先其他 OLAP 引擎的特性之一

  • 最大限度地提高硬件(尤其是CPU)的性能,实现了向量化查询执行(Vectorized Query Execution)机制(也叫向量化计算(Vectorization)、向量化操作(Vectorized Operation)、向量编程(Vector Programming)等),将多次for循环计算转化为一次并行计算。

数据压缩

数据压缩的本质就是找出数据的规律,将相似的数据以某种计算方式进行压缩,而列式存储恰恰就是将相似的数据放在一起,这就使得数据压缩效率和压缩比更高。

这进而带来了许多好处:

  • 节省大量存储空间,降低存储成本
  • 读取压缩后的数据量小,磁盘读取速度快
  • 压缩算法按需定制,支持多种不同的压缩算法
  • 同样大小的内存,可以存储更多的数据,缓存效果更好

使用磁盘

内存是昂贵和有限的, clickhouse 不仅支持将数据存储在内存和SSD中,还支持将数据存储在磁盘上。

支持SQL

一个好的OLAP 系统必定是支持类似传统 SQL 的使用方式,当然 clickhouse 对 SQL 的支持比较友好,而且还在不断完善中。

实时数据更新

ClickHouse支持在表中定义主键和排序键,以顺序写入的方式写入 MergeTree 中。在进行 where 范围查询时,可以快速的定位对应数据块,加速查询。

相关推荐
risc1234564 天前
【ClickHouse】RollingBitmap
clickhouse
斯特凡今天也很帅4 天前
clickhouse如何查看操作记录,从日志来查看写入是否成功
数据库·clickhouse
袖清暮雨9 天前
ClickHouse讲解
大数据·数据库·数据仓库·clickhouse·oracle
江枫渔火L11 天前
使用clickhouse的ReplacingMergeTree引擎表做活跃玩家信息表
数据库·clickhouse
潇凝子潇13 天前
Doris ClickHouse Greenplum 对比
clickhouse·doris·greenplum
递归尽头是星辰14 天前
ClickHouse核心优势分析与场景实战
大数据·数据仓库·clickhouse·实时分析·实时查询
鲁尼的小宝贝16 天前
基于Flink的数据中台管理平台
java·大数据·clickhouse·flink·yarn
问道飞鱼20 天前
【大数据知识】今天聊聊Clickhouse部署方案
大数据·clickhouse·部署
Fireworkitte22 天前
ClickHouse详解
clickhouse
知其_所以然23 天前
使用docker安装clickhouse集群
clickhouse·docker·容器