这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天,今天我学习了存储的本质-状态,是偏高级的内容,还需要在实践中慢慢学习。
带你认识存储的本质 - 状态:
经典案例存在的问题:
数据库怎么保证数据不丢?
数据库怎么处理多人同时修改的问题?
为什么用数据库,除了数据库还能存到别的存储系统吗?
数据库只能处理结构化数据吗?
有哪些操作数据库的方式,要用什么编程语言?
存储系统:
存储系统是指一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
存储系统的特点:
作为后端软件的底座,性能敏感
存储系统软件架构,容易受硬件影响
存储系统代码,既“简单"又“复杂”
RAID出现的背景:
单块大容量磁盘的价格>多块小容量磁盘
单块磁盘的写入性能<多块磁盘的并发写入性能
单块磁盘的容错能力有限,不够安全
RAID 0
多块磁盘简单组合
数据条带化存储,提高磁盘带宽
没有额外的容错设计
RAID 1
一块磁盘对应一块额外镜像盘
真实空间利用率仅50%
容错能力强
RAID 0 +1
结合了RAID O和RAID 1
真实空间利用率仅50%
容错能力强,写入带宽好
关系型数据库是存储系统,但是在存储之外,又发展出其他能力:
结构化数据友好
支持事务(ACID)
支持复杂查询语言
非关系型数据库也是存储系统,但是一般不要求严格的结构化:
半结构化数据友好
可能支持事务(ACID)
可能支持复杂查询语言
事务具有:
A(tomicity),事务内的操作要么全做,要么不做
C(onsistency),事务执行前后,数据状态是一致的
l(solation),可以隔离多个并发事务,避免影响
D(urability),事务一旦提交成功,数据保证持久性
以SQL为例,要操作数据时,支持以下操作:
lnsert
Update
Select
Delete
Where子句
GroupBy
OrderBy
要对数据定义做修改时,支持以下操作:
Create user
Create database
Create table
Alter table