这是我参与「第五届青训营 」伴学笔记创作活动的第 18 天
一、本堂课重点内容
- ClickHouse
二、详细知识点介绍
1.数据库基本概念
数据库是结构化信息或数据的有序集合,一般以电子形式存储在计算机系统中。通常由数据库管理系统(DBMS)来控制。在现实中,数据、DBMS及关联应用一起被称为数据库系统,通常简称数据库
- OLAP数据库、OLTP数据库
- SQL
2.列式存储
优点:
- LZ4:重复项越多或者越长,压缩率就会越高
- Run-length encoding:压缩重复的数据,可以再压缩数据上直接计算。
- 数据选择:可以选择特定的列做计算而不是都所有列,对聚合计算友好。
- 延迟物化:将列数据转换为可以被计算或者输出的行数据或者内存数据结果的过程,物化后的数据通常可以用来做数据过滤,聚合计算,Join,对缓存友好,保留直接再压缩列做计算的机会。
- 向量化:SIMD、数据格式、执行模型。
3.ClickHouse存储设计
-
表定义和结构
-
集群架构
-
引擎架构
-
存储架构
-
索引设计:
- Hash Index
- B-Tree
- B+Tree
- SSTables
- 数据查询:需要从最新的segment开始遍历每个kek,也可以为每个segment建立一个索引。
- Compaction(合并)
-
索引实现:
- 数据被划分为granules
- 每行都有这样一个mark文件
-
查询优化
-
数据合并
-
数据查询
3.ClickHouse典型应用场景
-
大宽表存储和查询:查询、动态表结构
-
离线数据分析:数据导入、数据按列导入
-
使用memory table减少parts数量:
- 数据先缓存在内存中
- 到达一定阈值再写到磁盘
- 复杂型查询
三、课后个人总结
今天学习的是ClickHouse是标准的列存结构,是我之前前所未闻的新东西,加原来数据库里的存储可以这么深奥,这也是最后一天学习了,希望自己能保持一颗学习上进的心加油!