这是我参与「第五届青训营」伴学笔记创作活动的第24
数据库基本概念
数据库类型
关系数据库:关系型数据库是把数据以表的形式进行储存,然后再各个表之间建立关系,通过这些表之间的关系来操作不同表之间的数据.非关系数据库: NoSQL或非关系数据库,支持存储和操作非结构化及半结构化数据.相比于关系型数据库,NoSQL没有固定的表结构,且数据之间不存在表与表之间的关系,数据之间可以是独立的.
OLTP数据库: OLTP (Online transactional processing) 数据库是一 种高速分析数据库,专为多个用户执行大量事务而设计。OLAP数据库: OLAP (Online analytical processing)数据库旨在同时分析多个数据维度,帮助团队更好地理解其数据中的复杂关系- 大量数据的读写,PB级别的存储
- 多维分析,复杂的聚合函数
- 窗口函数,自定义UDF
- 离线 / 实时 分析
数据库架构
存储引擎
管理内存数据结构- 索引管理
- 内存数据管理
- 缓存管理
磁盘数据管理- 磁盘数据的文件格式
- 磁盘数据的增删改查
读写算子- 数据的写入逻辑
- 数据的读取逻辑
列式存储
存储方式
-
行式存储:
-
列式存储:
列式存储的优势
数据压缩
相同类型压缩效率更高排序之后压缩效率更高- 可以针对
不同类型使用不同的压缩算法LZ4:重复项越多压缩效率越高- (5,4)代表向前5个byte,重复的内容长度有4byte,即“bcde”是一个重复
Run-length encoding:压缩重复的数据,可以直接在压缩数据上进行计算,计算效率更高Delta encoding:- 将数据存储成连续数据的差值,而不是直接存储数据本身
- 特定算子也能直接在压缩数据上计算
数据选择
- 可以算则
特定的列做计算,而不是读所有的列 - 对
聚合计算友好
延迟物化
物化:把一种数据格式变成另一种数据格式,物化后的数据通常可以用来做:数据过滤、聚合计算,Join等
延迟物化:尽可能推迟物化操作的发生- Cpu、cache节约资源
- 节约内存带宽
- 保留直接在压缩列做计算的机会
向量化
SIMD(single instruction multiple data):一条CPU指令执行多条数据向量化:用SIMD指令完成的代码设计和执行逻辑叫做向量化- 数据格式要求:连续内存、明确的数据类型
- 执行模型要求:数据需要按批读取、函数的调用需要明确数据类型