这是我参与「第五届青训营」伴学笔记创作活动的第 11 天
存储系统
什么是存储系统:
- 一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
同时存储系统有以下特点:
- 性能敏感
- 存储系统代码,既简单又复杂。在io路径上代码尽可能简单提高性能,但在错误处理方面要多方面考虑
- 软件架构容易受硬件影响
数据怎么储存
- 应用层的缓存很重要,贯穿整个存储体系
- 拷贝很昂贵,应尽量减少,在关键路径上减少拷贝
- 硬件设备五花八门,需要有抽象统一的接口
RAID技术
R(edundant) A(rray) of l(nexpensive) D(isks)
Raid出现的背景:
- 单块大容量磁盘的价格>多块小容量磁盘
- 单块磁盘的写入性能<多块磁盘的并发写入性能
- 单块磁盘的容错能力有限,不够安全
而RAID也出现了多种技术方案:
RAID0:(只做了性能优化,没有考虑容错)
- 多块磁盘简单组合
- 数据条带化组合,提高磁盘带宽
- 没有额外容错设计
RAID1:(只做了容错设计,没有性能提升方面的考量)
- 一块磁盘对应额外的镜像磁盘
- 真实空间利用率50%
- 容错能力强
RAID 0+1:
- 结合了以上两种方案
- 真实空间利用率50%
- 容错能力强,写入带宽好
数据库
关系型数据库
关系型数据库是存储系统,但是在存储之外,又发展出其他能力
- 结构化数据友好
- 支持事务(ACID)
- 支持复杂查询语言
非关系型数据库
非关系型数据库也是存储系统,但是一般不要求严格的结构化
- 半结构(非结构)化数据友好
- 可能支持事务
- 可能支持复杂查询语言