存储和数据库基础 | 青训营笔记

90 阅读3分钟

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

  • 数据产生:用户输入,产生数据,传输到服务器

  • 为什么要持久化数据?存在内存里是没有记忆能力的,需要把必要的带有记忆的数据存在数据库

  • 数据持久化流程:

    • 校验数据合法性。注册操作,检查注册用户是否存在
    • 修改内存。数据库作为软件,数据处理在内存中,用高效的数据结构组织数据,处理数据,形成准备持久化的数据
    • 写入存储介质。以寿命和性能友好的方式写入硬件。
  • 存储系统

    • 定义:一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,涉及用户、存储介质、内存、网络等部分

    • 系统特点:

      • 作为后端软件的底座,性能敏感;
      • 存储系统代码,IO读写代码逻辑简单,错误处理要复杂;
      • 存储系统软件架构,容易受硬件影响;
    • 硬件,存储器层级结构:

      • 金字塔结构,塔尖代表特定的存储设备,容量极小,支持高性能访问;底层,容量大,性能慢

      • 中间层兼顾持久化介质和内存介质特点的存储器,persistent memory

    • 软件,数据从应用到存储介质的读写特点

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

      • 背景:单块大容量磁盘的价格 > 多块小容量磁盘;单块磁盘的写入性能< 多块磁盘的并发写入性能;单块磁盘的容错能力有限,不够安全
      • RAID 0:数据切割,分别并发写入多块磁盘,磁盘简单组合,数据条带化存储,提高磁盘带宽。但是没有额外的容错设计,数据写入只有一份
      • RAID 1:一块磁盘对应一块额外镜像盘,真实空间利用率仅50%,容错能力强
      • RAID 0+1:结合了RAID O 和RAID 1,真实空间利用率仅50%,容错能力强,写入带宽好
  • 数据库

    • 关系模型:

      • 关系:集合,任意元素组成的若干有序偶对,反应了事务间的关系
      • 关系代数:对关系做运算的抽象查询语言,交、并、笛卡尔积等
      • SQL:一种DSL,方便人类阅读的关系代数表达式
    • 事务:

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

      • 是存储系统,对结构化数据友好,支持事务,支持复杂查询语言
    • 非关系数据库

      • 是存储系统,一般不要求严格的结构化,半结构化数据友好,可能支持事务,可能支持复杂查询语言
    • 数据库VS经典存储

      • 结构化数据管理:适合使用关系型数据库存储;经典存储需要自行定义数据结构
      • 事务能力:关系型数据库支持事务;经典存储需要开发者实现深度的代码逻辑才能支持事务特性
      • 复杂查询能力:关系型数据库灵活、简洁;经典存储僵化、复杂
  • 总结

    学习了数据持久化流程,存储系统的定义和特点,数据库的关系模型和事务的ACID特性。