[ 存储的本质 | 青训营笔记 ]

123 阅读3分钟

[ 存储的本质 | 青训营笔记 ]

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

零、前言:

记个笔记顺便(恰青豆还是有很多不完善也有可能对的地方还请大佬们指正

一、本堂课重点内容:

  • 经典案例
  • 存储&数据库简介
  • 主流产品剖析
  • 新技术演进

二、详细知识点介绍:

13.1 经典案例

数据流动:

一条数据 --> 后端服务器 --> 数据库 --> 其他系统

数据持久化:

校验数据合法性 --> 修改内存 --> 写入存储介质

潜在问题:

数据稳定性,多人同时修改,别的存储系统,方式语言

13.2 存储&数据库简介

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

存储系统的特点:对性能敏感,容易受硬件影响,代码既简单也复杂

数据从应用到存储介质:

2023-02-11-23-53-13-image.png

  • [缓存] 贯穿了整个存储体系
  • [拷贝] 很昂贵
  • 硬件五花八门

存储技术:RAID

发现:单块大磁盘价格比多块小磁盘价格高,性能若,容错差

  • RAID 0

    多块磁盘简单组合,数据条带化,没有容错

  • RAID 1

    一块磁盘对应一个镜像,空间利用率只有50%,有容错

  • RAID 1 + 0

    结合,空间利用率也是50%,带宽好有容错

数据库:

关系型数据库,非关系型数据库

关系型数据库支持事务:

A:原子性

C:一致性

I:隔离多个并发事务

D:提交成功保证持久

13.3 主流产品剖析

  • 单机存储

    不涉及网络交互

    linux存储 -- 文件:

    文件系统接口:都支持VFS的统一抽象接口

    linux两大数据结构:Index Node & Directory Entry

2023-02-12-00-17-27-image.png

key-value存储:

数据结构:LSM-Tree 牺牲了读性能,追求写入性能,顺序写入(RocksDB)

  • 分布式存储

    在单机存储上实现分布式协议,设计大量网络交互

    HDFS(大数据):

    支持海量数据存储,高容错,弱POSIX,性价比高

    Ceph:

    一切皆对象,写入采用主备复制模型,数据分布模型采用CRUSH算法

  • 单机数据库

    单个计算机节点的数据库系统

    (关系型数据库)Mysql,Postgresql:

    Query Engine ——负责解析query,生成查询计划

    Txn Manager ——负责事务并发管理

    Lock Manager ——负责锁相关的策略

    Storage Engine——负责组织内存/磁盘数据结构

    Replication ——负责主备同步

    内存结构:b树,b+树

    磁盘数据结构:Redo Log,Page

2023-02-12-00-33-10-image.png

(非关系型数据库)MongoDB,Redis,Elasticsearch

2023-02-12-00-36-34-image.png

  • 分布式数据库

    单机的问题:容量,弹性,性价比

    储存节点池化

    远远不止。。。

13.4 新技术演进

软件架构变更,AI增强,硬件革命

SPDK:Bypass OS kernel

  • 避免syscall 带来的性能损耗,直接从用户态访问磁盘
  • SPDK poller 可以绑定特定的cpu核不断轮询,减少cs,提高性能
  • 使用 Lock-free queue,降低并发时的同步开销

AI &Storge

存储格式的转换,行村列存,行列混存

高性能硬件

  • RDMA 网络
  • Persistent Memory
  • 可编程交换机
  • CPU/GPU/DPU

三、总结:

简单介绍了数据库的发展以及类型