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

60 阅读3分钟

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

1. 本堂课重点内容

  • 经典案例
  • 存储&数据库简介

2. 经典案例

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

2.1 数据的产生

app的注册,登录所填写的信息

2.2 数据的流动

  1. 用户注册的结构化信息
  2. 后端服务器/一组后端服务器
  3. 数据库系统
  4. 其他存储/非存储系统

2.3 数据的持久化

图片.png

2.4 潜在问题

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

3. 存储&数据库简介

3.1 存储系统-系统概览

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

3.2 存储系统-系统特点

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

3.3 存储器的层级结构

图片.png

3.4 数据怎样从应用到存储介质

图片.png

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

3.5 存储系统-RAID技术

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

RAID出现的背景:

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

RAID0

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

RAID1

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

RAID0+1

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

3.6 数据库

3.6.1 关系型数据库

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

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

    • 交、并、笛卡尔积
  • sql = 一种DSL = 方便人类阅读的关系代数表达形式

3.6.1.2 关系型数据库的特点

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

图片.png

3.6.2 非关系数据库

3.6.2.1 特点

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

图片.png

3.7 数据库 vs 存储系统 - 结构化数据管理

  • 数据库: 写入关系型数据库以表形式管理
  • 存储系统:写入文件,自行定义管理结构

3.8数据库 vs 存储系统 - 事物能力

  • 事物的特性(ACID)
    • 原子性
    • 一致性
    • 隔离性
    • 持久性

3.9 数据库 vs 存储系统 - 复杂查询能力

  • 数据库

    • sql 灵活
  • 经典存储

    • 循环判断分组统计 僵化复杂

3.10 数据库使用方式

  • DSL (sql) sql 支持如下操作
  • insert
  • Update
  • Select
  • Delete
  • Where
  • GroupBy
  • OrderBy