带你认识存储的本质 - 状态|青训营笔记

110 阅读4分钟

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

经典案例

数据的产生

  • 登录APP注册账号,数据产生

数据的流动

  • 数据产生,进入后端服务器,然后存入数据库中

数据的持久化

  • 检验数据的合法性 -> 修改内存(用高效数据结构组织数据) -> 以寿命&性能友好的方式写入存储介质

存储 & 数据库简介

2.1 存储系统

软件系统:一个提供读写、控制类接口,能够安全有效地把数据持久化的软件

存储系统特点:

  • 性能敏感
  • 存储系统软件架构,容易受硬件影响
  • 存储系统代码,既“简单”又“复杂”

存储系统层级:

image.png tape:磁带

  • 缓存很重要,贯穿整个存储体系
  • 拷贝很昂贵,应该尽量减少、
  • 硬件设备五花八门,需要有抽象统一的接入层

RAID技术

image.png

2.2 数据库系统

关系 = 集合 = 任意元素组成的若干有序偶对反应了事物间的关系

关系代数= 对关系作运算的抽象查询语言

SQL = 一种DSL(领域专业语言) = 方便人类阅读的关系代数表达形式

关系型数据库特点:

  • 关系型数据库是存储系统
  • 结构化数据友好
  • 支持事务(ACID)
  • 支持复杂查询语言

非关系型数据库特点:

  • 非关系型数据库是存储系统,但是一般不要求严格的结构化
  • 半结构化数据友好
  • 可能支持事务(ACID)
  • 可能支持复杂查询语言

数据库 VS 经典存储

  • 结构化数据管理,表形式方便管理
  • 事务能力
  • 复杂查询能力

Everything is D(omain)S(pecific)L(anguage)=> maybe SQL

主流产品剖析

3.1 单机存储

单机存储 = 单个计算机节点上的存储软件系统,一般不涉及网络交换

3.1.1 本地文件系统

Linux经典哲学:一切皆文件

  • 文件系统的管理单元:文件
  • 文件系统接口:文件系统繁多,如Ext2/3/4,sysfs,rootfs等,但都遵循VFS的统一抽象接口
  • Linux数据结构: Index Node 和 Directory Entry

image.png

3.3.2 key-value存储

世间一切皆key-value

  • 常见使用方式:put(k,v) & get(k)
  • 常见数据结构:LSM-Tree,某种程度上牺牲读性能,追求写入性能
  • 拳头产品:RocksDB(源码推荐看LeveDB)

image.png

3.2 分布式存储

分布式存储 = 在单机存储基础上实现分布式协议,涉及大量网络交互

3.2.1 分布式存储-HDFS

大数据时代的基石

  • 核心特点:
    • 支持海量数据存储
    • 高容错性
    • 弱POSIX语义
    • 使用普通廉价服务器,性价比高

image.png

3.2.2 分布式存储-Ceph

开源分布式存储系统里的万金油

  • 一套系统支持对象接口、块接口、文件接口,但是一切皆对象
  • 数据写入采用主备复制模型
  • 数据分布模型采用CRUSH算法(HASH + 权重 + 随机抽签

image.png

3.3 单机数据库

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

事务在单机内执行,也可能通过网络交互实现分布式事务

3.3.1 单机关系型数据库

  • 商业:Oracle , 开源产品: MySQL&PostgreSQL

  • 通用组件:

    • Query Engine —— 负责解析query,生成查询计划
    • Txn Manager —— 负责事务并发管理
    • Lock Manager —— 负责锁相关的策略
    • Stora Engine —— 负责组织内存/磁盘数据结构
    • Replication —— 负责主备同步
  • 关键内存数据结构:B- Tree, B+-Tree,LRU List等

  • 关键磁盘数据结构:WriteAheadLog(RedoLog)、Page

image.png

3.3.2 单机非关系型数据库

  • ES、MongoDB、Redis
  • 关系型数据库 VS 非关系型数据库
    • 关系型数据库直接使用SQL交互,非关系型数据库交互方式各不相同
    • 非关系型数据库的数据结构千奇百怪,没有关系约束后,schema相对灵活
    • 都在尝试支持SQL子集和事务

image.png

  • 与RDBMS相比,ES天然能做模糊搜索,还能自动计算关联度

3.4分布式数据库

单机数据库遇到的问题: 容量弹性性价比 (存储节点池化、动态扩缩容)

More to Do

  • 从单写到多写
  • 从磁盘弹性到内存弹性
  • 分布式事务优化

4 新技术演进

4.1 软件架构变更

bypass os kernel (内核旁路):绕开Linux的技术

image.png

4.2 AI增强

智能存储格式转换,行列缓存

4.3 新硬件革命

存储介质计算单元网络硬件 image.png

课后作业

image.png

参考

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

【后端专场 学习资料六】第五届字节跳动青训营 - 掘金 (juejin.cn)