ClickHouse基础概念 | 青训营笔记

43 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的第24

数据库基本概念

数据库类型

  1. 关系数据库:关系型数据库是把数据以表的形式进行储存,然后再各个表之间建立关系,通过这些表之间的关系来操作不同表之间的数据.
  2. 非关系数据库: NoSQL或非关系数据库,支持存储和操作非结构化及半结构化数据.相比于关系型数据库,NoSQL没有固定的表结构,且数据之间不存在表与表之间的关系,数据之间可以是独立的.
  1. OLTP数据库: OLTP (Online transactional processing) 数据库是一 种高速分析数据库,专为多个用户执行大量事务而设计。
  2. OLAP数据库: OLAP (Online analytical processing)数据库旨在同时分析多个数据维度,帮助团队更好地理解其数据中的复杂关系
    1. 大量数据的读写,PB级别的存储
    2. 多维分析,复杂的聚合函数
    3. 窗口函数,自定义UDF
    4. 离线 / 实时 分析

数据库架构

image.png

存储引擎

  1. 管理内存数据结构
    1. 索引管理
    2. 内存数据管理
    3. 缓存管理
  2. 磁盘数据管理
    1. 磁盘数据的文件格式
    2. 磁盘数据的增删改查
  3. 读写算子
    1. 数据的写入逻辑
    2. 数据的读取逻辑

列式存储

image.png

存储方式

  1. 行式存储: image.png

  2. 列式存储:

image.png

列式存储的优势

数据压缩

  1. 相同类型压缩效率更高
  2. 排序之后压缩效率更高
  3. 可以针对不同类型使用不同的压缩算法
    1. LZ4:重复项越多压缩效率越高
      1. (5,4)代表向前5个byte,重复的内容长度有4byte,即“bcde”是一个重复
    2. Run-length encoding压缩重复的数据,可以直接在压缩数据上进行计算,计算效率更高
    3. Delta encoding
      1. 将数据存储成连续数据的差值,而不是直接存储数据本身
      2. 特定算子也能直接在压缩数据上计算
image.png

数据选择

  1. 可以算则特定的列做计算,而不是读所有的列
  2. 聚合计算友好
image.png

延迟物化

  1. 物化把一种数据格式变成另一种数据格式,物化后的数据通常可以用来做:数据过滤、聚合计算,Join
image.png
  1. 延迟物化:尽可能推迟物化操作的发生
    1. Cpu、cache节约资源
    2. 节约内存带宽
    3. 保留直接在压缩列做计算的机会

向量化

  1. SIMD (single instruction multiple data):一条CPU指令执行多条数据
  2. 向量化:用SIMD指令完成的代码设计执行逻辑叫做向量化
    1. 数据格式要求:连续内存、明确的数据类型
    2. 执行模型要求:数据需要按批读取、函数的调用需要明确数据类型

image.png