ClickHouse|青训营笔记

52 阅读2分钟

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

数据库概念

数据库类型
  • 关系型数据库

关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,同时也是一个被组织成一组拥有正式描述性的表格,该形式的表格作用的实质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存取或重新召集而不需要重新组织数据库表格。

  • 非关系型数据库

NoSQL最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。NoSQL是一项全新的数据库革命性运动,其拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

  • OLTP数据库:高速分析数据库,专为多个用户执行大量事务而设计
  • OLAP数据库:同时分析多个维度,帮助团队更好地理解其数据中的复杂瓜西
OLAP数据库
  • 大量数据读写
  • 多维分析
  • 窗口函数
  • 离线/实时分析

列式存储

数据压缩
  • 可以使读的数据量更少,在I/O密集型计算中获得更大性能优势
  • 相同类型压缩效率更高
  • 排序之后压缩效率更高
  • 可针对不同类型使用不同压缩算法

image-20230219105528787

uTools_1676775348928

uTools_1676775365906

数据选择
  • 可以针对特定的列做计算
  • 对聚合计算友好
延迟物化

物化: 将列数据转化为可以被计算或者输出的行数据或内存数据结果的过程,物化后的数据通常可以用例做数据过滤,聚合计算,Join

延迟物化: 尽可能推迟物化

  • 缓存友好
  • CPU/带宽友好
  • 可以利用到执行计划和算子的优化
  • 保留直接在压缩做计算的机会
数据格式要求
  • 需要处理多个数据,数据需要是连续内存
  • 需要明确数据类型

执行模型要求

  • 数据需要按批读取
  • 函数调用需要明确数据类型
行存VS列存

uTools_1676775682000