这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天
存储系统
什么是存储系统
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统。
存储系统特点
- 作为后端软件的底座,性能敏感
- 存储系统软件架构,容易受硬件影响
- 存储系统代码,在操作IO时尽量简单,异常处理时尽量全面
RAID技术
- RAID 0
- 多块磁盘简单组合
- 数据分块存储,提高带宽
- 无容错机制
- RAID 1
- 每块磁盘都对应一块镜像磁盘
- 磁盘空间利用率为50%
- 具备容错能力
- RAID 0+1
- 结合了RAID 0 和RAID 1
- 空间利用率仍然为50%
- 具备容错能力和较高带宽
数据库
关系=集合=任意元素组成的若干有序集
关系型数据库
- 关系型数据库是一种存储系统,在经典存储系统的基础上,更适配结构化数据的存储
- 特点
- 对结构化数据友好
- 支持事务
- 支持复杂的查询语句SQL
非关系型数据库
- 关系型数据库是一种存储系统,在经典存储系统的基础上,更适配非结构化数据的存储
- 特点
- 半结构化数据友好
- 可能支持事务
- 可能支持复杂的查询语句
主流存储产品介绍
单机存储
- 单个计算机节点.上的存储软件系统,一般不涉及网络交互
- 本地文件系统
- RocksDB
分布式存储
- 在单机存储基础上实现了分布式协议,涉及大量网络交互
- 实践
- HDFS 是一种分布式文件系统,用于处理在商业硬件上运行的大型数据集
- Ceph也是一种分布式存储系统,系统中一切皆为对象
单机关系型数据库
单机数据库 = 单个计算机节点上的数据库系统 事务在单机内执行,也可能通过网络交互实现分布式事务
- Oracle:商业之王
- MySQL:开源免费
- PostgreSQL:开源免费
单机非关系型数据库
- MongoDB:面向文档存储,支持事务
- Redis:数据结构丰富,基于内存存储,超高性能
- Elasticsearch:面向文档存储,实现海量搜索,模糊匹配
分布式数据库
- 通过存储节点池化,解决单机数据库容量问题
- 通过弹性计算,合理分配存储资源
- 通过共享存储池,提高系统性价比
存储新技术展望
-
软件架构变更
SPDK:Bypass OS kernel
-
AI增强
AI决策行列混存
-
新硬件革命
- RDMA网络
- Persistent Memory:性能介于主存和SSD之间
- 可编程交换机
- CPU、GPU、DPU
RDBMS(关系型数据库)
发展历史
- 网状DBMS
- 多对多的关系
- 直接描述现实情况
- 存取效率高
- 复杂不易使用
- 层次DBMS
- 一对多
- 结构简单,查询效率高
- 插入删除复杂
- 无法表示多对多的关系
- 关系DBMS
- 实体用过表格表示
- 方便表示多对多
- 查询效率不高
- 关系必须规范化
关键技术
-
SQL执行流程概述
- 查询解析:SQL 语言接近自然语言,入门容易。但是各种关键字、操作符组合起来,可以表达丰富的语意。因此想要处理SQL命令 ,首先将文本解析成结构化数据,也就是抽象语法树(AST)
- 查询优化:SQL 是一个表意的语言,只是说“要做什么”,而不说“怎么做”。所以需要一些复杂的逻辑选择“如何拿数据”, 也就是选择一个好的查询计划。 优化器的作用根据AST优化产生最优执行计划(Plan Tree)
- 查询执行:根据查询计划,完成数据读取、处理、写入等操作。
- 事务引擎:处理事务一致性、 并发、读写隔离等
- 存储引擎:内存中的数据缓存区、数据文件、日志文件
-
SQL引擎
Parser(分析器):词法分析,语法分析,语义分析
Optimizer(优化器):SQL执行方式有很多种,需要根据需求选择最优的执行方式
Executor(执行器):
- 火山模型
- 向量化:一批数据返回,提高缓存命中率
- 编译执行:动态编译技术
-
存储引擎--以InnoDB为例
-
数据行
-
page
-
索引--B+树
-
-
事务引擎
- 原子性:由undo Log支持
- 隔离性:由锁机制和MVCC机制支持 ,MVCC的实现依靠undo Log
- 持久性:由Redo Log支持
- 一致性:由前面三个性质保证
参考资料
带你认识存储 & 数据库 .pptx - 飞书云文档 (feishu.cn)
深入理解RDBMS.pptx - 飞书云文档 (feishu.cn)
字节内部课 - 实操项目(ByteYoungDB) - 飞书云文档 (feishu.cn)