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

51 阅读5分钟

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

前言

本次文章我们介绍了存储系统和数据库系统的特点,对主流产品进行解析,对存储和数据库相结合的新技术演进的方向也做了一定的介绍。

经典案例

  • 一条数据从产生,到数据流动,最后持久化的全生命周期

数据的产生

  • 小明注册一个账号,填写好了数据,按下了注册按钮后,数据就从无到有地产生了,并十分快速的向后端服务器飞奔而去。

数据的流动

image-20230212205320348

  • 数据从后端服务器存储到数据库后,就开始了持久化,并且其他系统也能访问到该数据

数据的持久化

image-20230212205449257

  • 真正存储到硬件上,才真正做到数据的持久化

潜在的问题

image.png

存储&数据库简介

存储系统

  • 什么是存储系统

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

    • 作为后端软件的底座,性能必须顶级
    • 存储系统软件架构,容易受硬件影响
    • 存储系统代码,既简单又复杂
  • 存储器层级结构

image.png

  • 数据怎么从应用到存储介质

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

image.png

  • RAID技术
    • RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。 RAID 是一类多磁盘管理技术,其向主机环境提供了成本适中、数据可靠性高的高性能存储。

image.png

数据库

  • 关系(Relation)又是什么?

image.png

  • 关系型数据库特点

    • 关系型数据库是存储系统,但在存储之外,又有其他功能
      • 结构化数据友好
      • 支持事务(ACID)
      • 支持复杂查询语言
  • 非关系型数据库特点

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

数据库vs经典存储

  • 结构化数据管理

image.png

  • 事务能力

    • 原子性(Atomicity):事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。

    • 一致性(Consistency):数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

    • 隔离性(Isolation):多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。

    • 持久性(Durability):在事务完成以后,该事务所对数据库所做的更改便持久的保存在数据库之中,并不会被回滚。

  • 复杂查询能力

image.png

数据库使用方式

image.png

主流产品剖析

单机存储

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

  • 本地文件系统

    • Linux经典哲学:一切皆文件

image.png

  • key-value存储
    • key是你的名字,value是你的内涵

image.png

分布式存储

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

  • HDFS

    • 大数据时代的基石
    • 核心特点
      • 支持海量存储
      • 高容错性
      • 弱POSIX语义
      • 使用普通x86服务器,性价比高
  • Ceph

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

  • 核心特点

  • 一套系统支持对象接口、块接口、文件接口,但是一切皆对象

  • 数据写入采用主备复制模型

  • 数据分布模型采用CRUSH(HASH+权重+随机抽签)算法

单机数据库

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

    • 事务在单机内执行,也可能通过网络交互实现分布式事务
  • 关系型数据库

    • 商业产品Oracle称王,开源产品MySQL&PostgreSQL称霸

image.png

非关系型数据库

  • MongoDB、Redis、Elasticerch三足鼎立
    • 关系型数据库一般直接用SQL交互,而非关系型数据库交互方式互不相同
    • 非关系型数据库的数据结构千奇百怪,没有关系约束后,sheme相对灵活
    • 不管是否关系型数据库,大家都在尝试支持SQL(子集)和“事务”

image.png

分布式数据库

  • 单机数据库有哪些问题,需要我们引入分布式架构来解决?

    • 容量
    • 弹性
    • 性价比
  • 解决容量问题

image.png

  • 解决弹性问题

image.png

  • 解决性价比问题

image.png

  • More to Do

image.png

新技术演进

概览

  • 软件架构
    • Bypass OS kernel
  • AI增强
    • 智能存储格式转换
  • 新硬件革命
    • 存储介质变更
    • 计算单元变更
    • 网络硬件变更

SPDK(Storage Performance Development Kit)

  • Bypass OS kernel已经成为一种趋势
    • Kernel Space -> User Space
      • 避免syscall带来的性能损耗,直接从用户态访问磁盘
    • 中断 -> 轮询
      • 磁盘性能提高后,中断次数随之上升不利于IO性能
      • SPDK poller 可以绑定特定的cpu核不断轮询,减少cs,提高性能
    • 无锁数据结构
      • 使用Lock-free queuem,降低并发时的同步开销

AI& Storage

  • AI领域相关技术,如Machine Learning在很多领域:如推荐、风控、视觉领域证明了有效性
  • 在Storage领域,AI能给我们带来什么改变?
    • 行列混存

高性能硬件

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

引用

  • 字节内部课-存储与数据库