这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
对课程中学到的重要知识点做了笔记,方便后续的回顾
1. 经典案例
1.1 数据的产生
- 某天,小明同学下载了一个新的APP。因为第一次登陆,所以进入APP后需要注册一个新的账号
- 于是小明同学三下五除二地填好了资料,按下了「注册」按钮
- 就这样,数据就从无到有地产生了,并且在数十/数百亳秒内向APP的后端服务器飞奔而去…….
1.2 数据的流动
1.3 数据的持久化
- 校验数据的合法性 ”小明"是否已存在?
- 修改内存 用高效的数据结构组织数据
- 写入存储介质 以寿命&性能友好的方式写入硬件
1.4 潜在的问题
- 数据库怎么保证数据不丢?
- 数据库怎么处理多人同时修改的问题?
- 为什么用数据库,除了数据库还能存到别的存储系统吗?
- 数据库只能处理结构化数据吗?
- 有哪些操作数据库的方式,要用什么编程语言?
2. 存储 & 数据库简介
2.1 存储系统概览
2.1.1 存储系统特点
Q:什么是存储系统?
A:一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
- 作为后端软件的底座,性能敏感
- 存储系统软件架构,容易受硬件影响
- 存储系统代码,既"简单"又“复杂”
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 关系型数据库特点
关系型数据库是存储系统,但是在存储之外,又发展出其他能力
- 结构化数据友好
- 支持事务(AcID)
- 支持复杂查询语言
2.2.2 非关系型数据库特点
非关系型数据库也是存储系统,但是一般不要求严格的结构化
- 半结构化数据友好
- 可能支持事务(ACID)
- 可能支持复杂查询语言
2.2.3 数据库 vs 经典存储
- 结构化数据管理
- 写入关系型数据库,以表形式管理
- 写入文件,自行定义管理结构
- 事务能力 事务具有:
- A(tomicity),事务内的操作要么全做,要么不做
- C(onsistency),事务执行前后,数据状态是一致的
- l(solation),可以隔离多个并发事务,避免影响
- D(urability),事务—旦提交成功,数据保证持久性
- 复杂查询能力 写入数据之后,想做很复杂的查询怎么办?
2.2.4 数据库使用方式
SQL
课后个人总结
- 了解了为什么要把数据存储起来,怎么样把数据存储起来
- 了解了数据库系统的相关概念