存储和数据库
存储系统
什么是存储系统
存储系统是一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件。
系统特点
- 作为后端软件的底座,性能敏感
- 存储系统代码,既“简单”又“复杂”
- 存储系统软件架构、容易受硬件影响
存储器层级结构
- 第一层:通用寄存器堆
- 第二层:指令与数据缓冲栈
- 第三层:高速缓冲存储器
- 第四层:主储存器(DRAM)
- 第五层:联机外部储存器(硬磁盘机)
- 第六层:脱机外部储存器(磁带、光盘存储器等)
这就是存储器的层次结构~~~ 主要体现在访问速度~~~
RAID技术
RAID全称RedundanArrayofInexpensiveDisk(磁盘阵列技术)
出现背景
-
单块大容量磁盘的价格 > 多块小容量磁盘
RAID 0
1.多块磁盘简单组合
2.数据条带化存储,提高磁盘带宽
3.没有额外的容错设计
-
单块磁盘的写入性能 < 多块磁盘的并发写入性能
RAID 1
1.一块磁盘对应一块额外镜像盘
2.真实空间利用率仅50%
3.容错能力强
-
单块磁盘的容错能力有限,不够安全
RAID 0 + 1
1.结合了RAID 0和RAID 1
2.真实空间利用率仅50%
3.容错能力强,写入带宽好
数据库
数据库分为关系型数据库和非关系型数据库
关系型数据库特点
关系型数据库是存储系统,但在存储之外,又发展出其他能力
- 结构化数据友好
- 支持事务
- 支持复杂查询语言
非关系型数据库特点
非关系型数据库也是存储系统,但是一般不要求严格的结构化
- 半结构化数据友好
- 可能支持事务
- 可能支持复杂查询语言
数据库 VS 经典存储
结构化数据管理
一条用户注册数据
数据库:写入关系型数据库,以表的形式管理
经典存储:写入文件,自行定义管理结构
事务
凸显出数据库支持 事务 的优越性
事务具有:
- A(tomicity),事务内的操作要么做全,要么不做
- C(onsistency),事务执行前后,数据状态是一致的
- I(solation),可以隔离多个并发事务,避免影响
- D(urability),事务一旦提交成功,数据保证持久性
复杂查询能力
数据库:灵活简洁
经典存储:僵化复杂
总结
存储系统
- 块存储:存储软件栈里面的底层系统,接口过于朴素
- 文件存储:日常使用最广泛的存储系统,接口十分友好,实现五花八门
- 对象存储:公有云上的王牌产品,immutable语义加持
- key-value存储:形式最灵活,存在大量的开源/黑盒产品
数据库系统
- 关系型数据库:基于关系和关系代数构建的,一般支持事务和SQL访问,使用体验友好的产品
- 非关系型数据库:结构灵活,访问方式灵活,针对不同场景有不同的针对产品