这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天
数据持久化
- 数据流动:用户注册数据→后端服务器→数据库(数据的持久化)↔其他系统(如一些非存储系统)
- 如何持久化:校验数据的合法性(如验证数据是否存在)→修改内存(用高效的数据结构组织数据)→写入存储介质(以寿命和性能友好的方式写入硬件)
存储系统概览
-
存储系统
一个提供读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
-
存储系统特点
- 作为后端软件的底座,性能比较敏感
- 存储系统软件架构,容易受硬件影响→会根据存储硬件对存储系统进行改进
- 存储系统代码,既“简单”又“复杂”
-
存储器层级结构
-
单机存储栈
缓存很重要,贯穿整个存储体系;
拷贝很昂贵,应该尽量减少;
硬件设备五花八门,需要有抽象统一的接入层。
-
RAID技术
-
Redundant Array of Inexpensive Disks
-
出现背景:
- 单块大容量磁盘的价格 > 多块小容量磁盘
- 单块磁盘的写入性能 < 多块磁盘的并发写入性能
- 单块磁盘的容错能力有限,不够安全
-
RAID0:追求性能,没有额外的容错设计
-
RAID1:追求容错,空间利用率仅50%
-
RAID0+RAID1:结合RAID0,RAID1,空间利用率50%,但结合了RAID0的并发,提高了性能
-
数据库系统概览
-
关系=集合=任意元素组成的若干有序偶对,即反映事物间的关联
-
关系型数据库
-
特点
- 是存储系统
- 结构化数据友好
- 支持事务(ACID),Atomicity(原子性)、Consistensy(一致性)、Isolation(隔离性)、Durability(持久性)
- Atomicity(原子性)是指操作必须是一个不可分割的整体,或者在操作完成之前,不能被任何外部因素打断。这就意味着,当数据库正在执行某个操作时,不可能出现状态不一致的情况。Consistensy(一致性)指的是在一个数据库事务完成后,数据库中的所有数据都处于一致的状态,即使发生了故障,系统也能保持一致性。Isolation(隔离性)指的是在一个事务执行过程中,它的操作不会被其他事务的操作所影响,这就意味着多个事务可以同时进行,而不会互相影响。最后,Durability(持久性)指的是一个事务完成后,它所做的更改对系统来说是持久的,即使发生故障也不会丢失它所做的更改。
- 支持复杂查询语言(如SQL)
-
-
非关系型数据库
-
特点
- 不要求严格的结构化
- 半结构化数据友好
- 可能支持事务(ACID)
- 可能支持复杂查询语言
-
-
数据库vs经典存储
- 写入关系型数据库,以表形式管理 vs 写入文件自行定义管理结构
- 支持事务(ACID) vs 不支持事务
- 复杂查询灵活简洁 vs 复杂查询僵化复杂
-
数据库使用方式
- Everything is Domain Specific Language → maybe SQL?