ClickHouse | 青训营笔记

84 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天。今日学习了ClickHouse相关知识,更一步加深了对数据库的了解。它是俄罗斯的 Yandex 于 2016 年开源的用于在线分析处理查询(OLAP :Online Analytical Processing)MPP架构列式存储数据库

数据库基本概念

结构化的信息解析整理成有序集合。

可以通过查询语言获取想要的信息。

数据库分类

关系数据库:数据以表的形式进行存储,然后再各个表之间建立关系 非关系数据库:数据可非结构,没有明确的表,表和表之间没明确关系。

单机数据库: 分布式数据库:

OLTP:数据使用 OLAP:数据分析

clickhouse:关系,分布式,AP数据库

大量数据读写,PB级存储;多维分析,复杂的聚合函数;窗口函数,自定义UDF;离线(数据出,处理,录回)/实时(实时生成)分析

一条SQL展示多个分组维度

SQL

标准化 高度非过程化 终端,和嵌入

数据库架构

client->server(parser、optimize、analyzer:解析,excutor:执行)

parser:词法分析,语法分析,生成AST树

Analyzer:变量绑定,类型推荐,语义检查,安全、权限检查,完整性检查

Optimizer:优化器,为查询生成性能最优的(将AST翻译成代码能执行的算子())执行计划

executor:将执行计划翻译成可执行的物理计划并驱动其执行。

存储引擎: 1\管理内存数据结构 2\管理存储 3\管理算子

存储数据如何?:是否可以并发处理,数据格式? 是否可以构建索引,数据格式,如何?行存列存?

读写:读多写少,写多读少,点查,分析,

clickhouse

列式存储

数据压缩:好处,算法(LZ4,Run-length encoding,Delta encoding连续数据差)

数据选择:可以选择特定的列做计算而不是所有列,对聚合计算友好

延迟物化:尽可能把数据转化(变成可编程数据,拼成数据块)的时间延迟。优点:缓存友好;CPU/内存带宽友好;可以利用到执行计划和算子的优化,例如filter;保留直接在压缩列做计算的机会

向量化:SIMD,单直连多数据。带宽位数,执行多条。数据格式要求:需要处理多条数据,因此必须连续内存,需要明确数据类型。执行模型:数据需要按批读取,函数的调用需要明确数据类型。列存数据库适合设计这样的执行模型,从而向量化,(按列,每列结构类型同,每列设计执行模型)

42:28行列存储差异,优缺点。