[ 存储与数据库 | 青训营笔记]

120 阅读4分钟

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

存储系统

什么是存储系统

一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统。

存储系统特点

  1. 作为后端软件的底座,性能敏感
  2. 存储系统软件架构,容易受硬件影响
  3. 存储系统代码,在操作IO时尽量简单,异常处理时尽量全面

RAID技术

  1. RAID 0
    • 多块磁盘简单组合
    • 数据分块存储,提高带宽
    • 无容错机制
  2. RAID 1
    • 每块磁盘都对应一块镜像磁盘
    • 磁盘空间利用率为50%
    • 具备容错能力
  3. RAID 0+1
    • 结合了RAID 0 和RAID 1
    • 空间利用率仍然为50%
    • 具备容错能力和较高带宽

数据库

关系=集合=任意元素组成的若干有序集

关系型数据库

  1. 关系型数据库是一种存储系统,在经典存储系统的基础上,更适配结构化数据的存储
  2. 特点
    • 对结构化数据友好
    • 支持事务
    • 支持复杂的查询语句SQL

非关系型数据库

  1. 关系型数据库是一种存储系统,在经典存储系统的基础上,更适配非结构化数据的存储
  2. 特点
    • 半结构化数据友好
    • 可能支持事务
    • 可能支持复杂的查询语句

主流存储产品介绍

单机存储

  • 单个计算机节点.上的存储软件系统,一般不涉及网络交互
  • 本地文件系统
  • RocksDB

分布式存储

  • 在单机存储基础上实现了分布式协议,涉及大量网络交互
  • 实践
    1. HDFS 是一种分布式文件系统,用于处理在商业硬件上运行的大型数据集
    2. Ceph也是一种分布式存储系统,系统中一切皆为对象

单机关系型数据库

单机数据库 = 单个计算机节点上的数据库系统 事务在单机内执行,也可能通过网络交互实现分布式事务

  • Oracle:商业之王
  • MySQL:开源免费
  • PostgreSQL:开源免费

单机非关系型数据库

  • MongoDB:面向文档存储,支持事务
  • Redis:数据结构丰富,基于内存存储,超高性能
  • Elasticsearch:面向文档存储,实现海量搜索,模糊匹配

分布式数据库

  • 通过存储节点池化,解决单机数据库容量问题
  • 通过弹性计算,合理分配存储资源
  • 通过共享存储池,提高系统性价比

存储新技术展望

  1. 软件架构变更

    SPDK:Bypass OS kernel

  2. AI增强

    AI决策行列混存

  3. 新硬件革命

    • RDMA网络
    • Persistent Memory:性能介于主存和SSD之间
    • 可编程交换机
    • CPU、GPU、DPU

RDBMS(关系型数据库)

发展历史

  1. 网状DBMS
    • 多对多的关系
    • 直接描述现实情况
    • 存取效率高
    • 复杂不易使用
  2. 层次DBMS
    • 一对多
    • 结构简单,查询效率高
    • 插入删除复杂
    • 无法表示多对多的关系
  3. 关系DBMS
    • 实体用过表格表示
    • 方便表示多对多
    • 查询效率不高
    • 关系必须规范化

关键技术

  1. SQL执行流程概述

    • 查询解析:SQL 语言接近自然语言,入门容易。但是各种关键字、操作符组合起来,可以表达丰富的语意。因此想要处理SQL命令 ,首先将文本解析成结构化数据,也就是抽象语法树(AST)
    • 查询优化:SQL 是一个表意的语言,只是说“要做什么”,而不说“怎么做”。所以需要一些复杂的逻辑选择“如何拿数据”, 也就是选择一个好的查询计划。 优化器的作用根据AST优化产生最优执行计划(Plan Tree)
    • 查询执行:根据查询计划,完成数据读取、处理、写入等操作。
    • 事务引擎:处理事务一致性、 并发、读写隔离等
    • 存储引擎:内存中的数据缓存区、数据文件、日志文件
  2. SQL引擎

    Parser(分析器):词法分析,语法分析,语义分析

    Optimizer(优化器):SQL执行方式有很多种,需要根据需求选择最优的执行方式

    Executor(执行器):

    • 火山模型
    • 向量化:一批数据返回,提高缓存命中率
    • 编译执行:动态编译技术
  3. 存储引擎--以InnoDB为例

    • 数据行

      image-20230228171053952.png

    • page

      image-20230228171111953.png

    • 索引--B+树

  4. 事务引擎

    • 原子性:由undo Log支持
    • 隔离性:由锁机制和MVCC机制支持 ,MVCC的实现依靠undo Log
    • 持久性:由Redo Log支持
    • 一致性:由前面三个性质保证

参考资料

RDBMS 基本情况介绍 - 掘金 (juejin.cn)

‌⁡⁢⁤⁣⁣⁤⁡⁣‬‌⁤‍‬⁣⁢⁡‍‬⁤‬⁤‌‌‬⁢‍‬‌⁣⁢⁣⁤⁡⁣⁤⁡带你认识存储 & 数据库 .pptx - 飞书云文档 (feishu.cn)

‌⁡‍‌⁢⁡⁤⁣⁢⁡‍‍‬⁣⁡⁡⁤⁤⁤⁣⁡⁡‍⁡‌⁤⁤⁤‌⁤‌‌‬⁢⁣⁤深入理解RDBMS.pptx - 飞书云文档 (feishu.cn)

github.com/thuyy/ByteY…

‍‌‍‌⁢⁢⁡⁣⁣⁣‍⁤‌⁤‬‬⁤‬⁡‬⁡‌⁢⁢‬‍‍⁢⁣‬⁤⁤‌‬⁡‬⁢⁣⁣字节内部课 - 实操项目(ByteYoungDB) - 飞书云文档 (feishu.cn)