认识存储与数据库 | 青训营笔记

75 阅读4分钟

一、导论

1. 数据的产生

案例:当小明从app输入数据点击登录的时候,数据就产生了,并发送到后端服务器。 分析:数据来源于用户,数据的多少取决于用户群体有多大。

2. 数据的流动

  • 数据从用户端产生,发送到服务器进行处理,期间可能会经过代理服务器,同时后端服务器处理数据的过程中,数据有可能会经过中间件,最终到达数据库进行持久化,但这并没有结束,在数据库中的数据很有可能被其他系统所使用。
  • 大体上的流动分为 前端-->后端服务器-->数据库

3. 数据的持久化

转存失败,建议直接上传图片文件

  • 数据的持久化是最重要的一步,只有将数据存储起来,才能让数据更有价值
  • 数据持久化的过程中,需要注意几个问题,第一个就是要检验数据是否合法,在数据库里面是否已经有该数据了, 第二点就是要频繁地跟内存和磁盘进行交互,因此需要选择合理的数据结构,最后要考虑的就是选择合适的存储介质

4. 潜在的问题

(1) 数据库怎么保证数据不丢失 (2) 数据库怎么处理多人同时修改的问题 (3) 为什么使用数据库,除了数据库还有哪些存储系统 (4) 数据库只能处理结构化数据吗

二、存储系统

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

存储系统的系统特点

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

存储器层级结构

  • 从上到下,存取速度由快到慢,成本由高到低

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

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

RAID技术

  1. 出现背景
    • 单块大容量磁盘价格>多块小容量磁盘
    • 单块写入性能<多块磁盘的并发写入性能
    • 单块磁盘容错能力有限,不够安全
  2. RAID0
    • 多块磁盘简单组合
    • 数据条带化存储,提高磁盘带宽
    • 没有额外容错
    • 简单来说就是全部的块都用来存储数据,而不做数据备份
  3. RAID1
    • 一块磁盘对应一块额外镜像盘
    • 真实空间利用率为50%
    • 容错能力强
    • 每一份数据都有其备份
  4. RAID0+1
    • 结合RAID0 和RAID1
    • 真实空间利用率为50%
    • 容错强,写入带宽好
    • 在相同的组内使用RAID0, 然后对该组进行备份

三、数据库

1、关系型数据库

关系是什么

(1) 关系= 集合 = 任意元素组成的若干有序偶对,反应了事物之间的关系 (2) 关系代数 = 对关系进行运算的抽象查询语言 (3) SQL = 一种DSL = 方便人类阅读的关系代数表达形式

关系型数据库

(1) 关系型数据库是存储系统,但是在存储之外,有发展出其他能力,例如结构数据友好,支持事务,支持复杂查询语言

2、非关系型数据库

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

3. 数据库vs经典存储-结构化数据管理

  • 数据库可以使用表来对数据进行抽象,如果使用经典的存储,就需要与文件、字节进行打交道
  • 数据库支持事务,经典存储不支持事务 事务具有以下特性: A(atomicity): 事务内的操作要么全做,要么不做 C(consistency): 事务执行前后,数据状态一致 I(Isolation): 可以隔离多个并发事务,避免影响 D(Durabilitu) : 事务一旦提交成功,数据保证持久性
  • 数据库支持复杂查询,而经典存储难以支持

总结

本节课首先介绍了数据从产生到持久化的几个主要阶段,从原始的存储系统到关系型数据库,再到非关系型数据库,这是一个循序渐进地过程,最后比较了数据库与经典存储的利弊。其中比较细节的地方就是RAID的介绍以及事务的特性,这些都是值得我们去探索的东西。