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

58 阅读2分钟

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

存储 & 数据库

经典案例

  • 数据的流动

    一条用户注册数据->后端服务器->数据库<->其他系统

  • 数据的持久化

    • 检验数据的合法性
    • 修改内存
    • 写入存储介质
  • 潜在的问题

    • 数据库怎么保证数据不丢?
    • 数据库怎么处理多人同时修改的问题?
    • 为什么用数据库,除了数据库还能存到别的存储系统吗?
    • 数据库只能处理结构化数据吗?
    • 有哪些操作数据库的方式,要用什么编程语言?

存储 & 数据库简介

存储系统

  • 存储系统概览

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

  • 存储系统特点

    • 作为后端软件的底座,性能敏感
    • 存储系统软件架构,容易受硬件影响
    • 存储系统代码,既“简单”又“复杂”
  • 数据怎么从应用到存储介质

    Snipaste_2023-02-12_18-43-54.png

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

    Q:单机存储系统怎么做到高性能/高性价比/高可靠性? A:R(edundant)A(rray)of I(nexpensive)D(isks)

    RAID出现的背景:

    • 单块大容量磁盘的价格 > 多块小容量磁盘
    • 单块磁盘的写入性能 < 多块磁盘的并发写入性能
    • 单块磁盘的容错能力有限,不够安全

    RAID 0

    • 多块磁盘简单组合
    • 数据条带化存储,提高磁盘带宽
    • 没有额外的容错设计

    RAID 1

    • 一块磁盘对应一块额外镜像盘
    • 真实空间利用率仅50%
    • 容错能力强

    RAID 0 + 1

    • 结合了RAID 0 和 RAID 1
    • 真实空间利用率仅50%
    • 容错能力强,写入带宽好

数据库

  • 数据库

    • 关系型数据库
    • 非关系型数据库
  • 概览

    • 关系(Relation)是什么

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

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

        交、并、笛卡尔积······

      • SQL = 一种DSL = 方便人类阅读的关系代数表达式

  • 关系型数据库特点

    关系型数据库是存储系统,但是在存储之外又发展出其他能力

    • 结构化数据友好
    • 支持事务(ACID)
    • 支持复杂查询语言
  • 非关系型数据库特点

    非关系型数据库也是存储系统 , 但是一般不要求严格的结构化

    • 半结构化数据友好
    • 可能支持支持事务(ACID)
    • 可能支持支持复杂查询语言

数据库 vs 经典存储

  • 结构化数据管理

    一条用户注册数据

    -> 关系型数据库:以表形式管理

    -> 文件:自行定义,管理结构

  • 事务能力

    凸显出数据库支持 事务 的优越性

    事务具有:

    • A(tomicity),事务内的操作要么全做,要么不做
    • C(onsistency),事务执行前后,数据状态是一致的
    • I(solation),可以隔离多个并发事务,避免影响
    • D(urability),事务一旦提交成功,数据保证持久性
  • 复杂查询能力

    灵活、简洁 vs 僵化、复杂