这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记
0.概要
本文记录了课程「带你认识存储 & 数据库」中的部分知识点,以便于后续回顾。
1.存储系统
什么是存储系统
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
-
特点
-
- 作为后端软件底座,性能敏感
- 存储系统软件架构,容易受硬件影响
- 存储系统代码,既“简单”又“复杂”
-
存储器层级结构
-
-
- 顶层访问效率高,但容量小;底层访问效率低,但容量高
-
数据怎么从应用到存储介质?
- 关键点
-
- 缓存很重要,贯穿整个存储体系
- 拷贝很昂贵,应尽量减少
- 硬件设备五花八门,需要有抽象统一的接入层
RAID技术(Redundant Array of Inexpensive Disks)
简要描述:单机存储系统如何做到高性能/高性价比/高可靠性
-
出现的背景
-
- 单块大容量磁盘的价格 > 多块小容量磁盘
- 单块磁盘的写入性能 < 多块磁盘的并发写入性能
- 单块磁盘的存储能力有限,不够安全
-
RAID 0
-
- 多块磁盘简单组合
- 数据条带化存储,提高磁盘带宽
- 没有额外的容错设计
-
RAID 1
-
- 一块磁盘对应一块额外镜像盘
- 真实空间利用率仅50%
- 容错能力强
-
RAID 0+1
-
- 结合了RAID 0 和 RAID 1
- 真实空间利用率仅50%
- 容错能力强,写入带宽好
2. 数据库
-
关系(Relation)是什么
- 关系=集合=任意元素组成的若干有序偶对
- 关系代数=对关系作运算的抽象查询语言
- SQL=一种方便人类阅读的关系代数表达形式
-
关系型数据库
- 关系型数据库是存储系统,但在存储之外又发展出其他能力
-
特点- 结构化数据友好- 支持事务(ACID)- 支持复杂查询语言
-
非关系型数据库
- 非关系型数据库也是存储系统,但一般不要求严格的结构化
-
特点- 半结构化数据友好- 可能支持事务(ACID)- 可能支持复杂查询语言
-
3. 数据库vs经典存储
-
-
数据库的优势
-
结构化存储
-
事务能力
- 事务特点:
- 原子化 Atomicity:事务内的操作要么全做,要么不做
- 一致性 Consistency:事务执行前后,数据状态是一致的
- 独立性 Isolation:可以隔离多个并发事务,避免影响
- 持久性 Durability:事务一旦提交成功,数据保证持久性
-
复杂查询能力
-
3.总结
存储系统与数据库直接影响着软件的数据访问效率。熟悉存储系统与数据库的一些基本概念对于后端学习来说至关重要。
思维导图: