青训Day18:ClickHouse-你没见过的列存储|青训营笔记

52 阅读2分钟

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

01.

数据解析整理成有序集合

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

数据库的类型:

  • 关系数据库:关系型数据库是把数据以表的形式进行存储,然后再各个表之间建立关系,通过这些表之间的关系来操作不同表之间的数据。
  • 非关系数据库:NoSQL或非关系数据库,支持存储和操作非结构化及半结构化数据。 ————————————
  • 单机数据库:在一台计算机上完成数据的存储和查询的数据库系统。
  • 分布式数据库:分布式数据库由位于不同站点的两个或多个文件组成。 ————————————
  • OLTP数据库:Online transactional processing是一种高速分析数据库
  • OLAP数据库:Online analyticacl processing旨在分析多个数据维度

OLAP数据库

  • 大量数据的读写,PB级别的存储
  • 多维分析,复杂的聚合函数
  • 窗口函数,自定义UDF(User Define Function)
  • 离线/实时分析

SQL

一个简单的SQL查询包含SELECT关键词。
FROM自居制定了选择的数据表。
WHERE子句后接一个比较谓词以限制返回的行。
GROUP BY子句用户将若干相同值的行合并。
ORDER BY

  • 定义数据模型
  • 读写数据库数据

列式存储的优点

重复项越多或者越长,压缩率就会越高
可以在压缩数据上直接计算

数据选择:可以对特定的列做计算而不是读所有列;对聚合计算友好
延迟物化:

  • 缓存友好
  • CPU/内存带宽友好
  • 可以利用到执行计划和算子优化
  • 保留直接在压缩列做计算的机会

向量化:

  • SIMD
  • 数据格式
  • 执行模型

SIMD(single instruction multiple data)

03. ClickHouse存储设计

集群选择
引擎选择
数据按什么方式排序
数据如何在单节点分布