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

72 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
对课程中学到的重要知识点做了笔记,方便后续的回顾

1. 经典案例

1.1 数据的产生

  • 某天,小明同学下载了一个新的APP。因为第一次登陆,所以进入APP后需要注册一个新的账号
  • 于是小明同学三下五除二地填好了资料,按下了「注册」按钮
  • 就这样,数据就从无到有地产生了,并且在数十/数百亳秒内向APP的后端服务器飞奔而去…….

1.2 数据的流动

1.3 数据的持久化

  1. 校验数据的合法性 ”小明"是否已存在?
  2. 修改内存 用高效的数据结构组织数据
  3. 写入存储介质 以寿命&性能友好的方式写入硬件

1.4 潜在的问题

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

2. 存储 & 数据库简介

2.1 存储系统概览

2.1.1 存储系统特点

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

  1. 作为后端软件的底座,性能敏感
  2. 存储系统软件架构,容易受硬件影响
  3. 存储系统代码,既"简单"又“复杂”

2.1.2 存储器层级结构

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

2.1.3 单机存储栈

2.1.4 RAID技术

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

RAID出现的背景:

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

RAID0

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

RAID1

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

RAID0+1

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

2.2 数据库系统概览

2.2.1 关系型数据库特点

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

  1. 结构化数据友好
  2. 支持事务(AcID)
  3. 支持复杂查询语言

2.2.2 非关系型数据库特点

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

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

2.2.3 数据库 vs 经典存储

  1. 结构化数据管理
    1. 写入关系型数据库,以表形式管理
    2. 写入文件,自行定义管理结构
  2. 事务能力 事务具有:
  3. A(tomicity),事务内的操作要么全做,要么不做
  4. C(onsistency),事务执行前后,数据状态是一致的
  5. l(solation),可以隔离多个并发事务,避免影响
  6. D(urability),事务—旦提交成功,数据保证持久性
  7. 复杂查询能力 写入数据之后,想做很复杂的查询怎么办?

2.2.4 数据库使用方式

SQL

课后个人总结

  1. 了解了为什么要把数据存储起来,怎么样把数据存储起来
  2. 了解了数据库系统的相关概念

参考资料

带你认识存储的本质