存储系统
简介
提供了读写、控制类接口,能安全有效的将数据持久化的软件
- 作为后端软件的底座,性能敏感
- 存储系统代码,既简单又复杂
- 存储系统软件架构,容易受硬件影响
数据从应用层到存储介质
- 缓存很重要,贯穿整个存储体系
- 拷贝很昂贵,应该尽量减少
- 硬件设备五花八门,应该抽象统一的接口
RAID技术
R(edundant) A(rray) of I(nexpensive) D(isks)
将一个个单独的磁盘以不同方式形成一个逻辑硬盘,从而提高磁盘读取的性能与数据安全
数据库
关系型
- 关系:任意元素组成的若干有序偶对
- 关系型数据库:就是存储系统,但在存储之外,又有其他能力
- 结构化数据友好
- 支持事务ACID
- Atomicity
- Consistency
- Isolation
- Durability
- 支持复杂查询语言SQL
非关系型
- 非关系数据库:也是存储系统,但一般不要求严格结构化
- 半结构化数据友好
- 可能支持的事务ACID
- 可能支持复杂的查询语言SQL
- MongoDB、Redis、Elasticsearch三足鼎立
- Elasticsearch面向文档存储,文档可以序列化为json,支持嵌套,存储和构建索引能力依赖于Lucene引擎
- mongoDB面向文档存储,文档可序列化为json/bson,支持嵌套,存在collection,依赖于wiredTiger引擎
- 数据结构丰富,超高性能,主要基于内存,但是支持AOF/RDB持久化
- 非关系型数据库交互方式各不相同,数据结构千奇百怪,schema相对灵活
- 都在尝试支持SQL子集和事务
单机到分布式
单机数据库挑战
- 容量
- 弹性
- 性价比 存储节点池化,动态扩容应对上面的挑战
其他挑战
- 多写
- 从磁盘弹性到内存弹性
- 分布式事务优化
新技术
- 软件架构变更:bypass OS kernel
- SPDK:storage performance development kit
- 避免systemcall带来的性能损耗,直接从用户态访问磁盘
- 磁盘性能提升后,中断次数上升,将终端处理改为轮询,提高性能
- 无锁数据结构
- SPDK:storage performance development kit
- AI增强:智能存储格式的转换(行存/列存/混存)
- 新硬件革命:存储介质变更,计算单元变更,网络硬件变更
简单总结下,数据库这里的三个方向的新技术还是蛮有意思的; 无论从软件架构的角度,针对频繁IO做出相应针对性的调整。还是说从从AI角度,智能调整数据存储的底层格式,又或者是根据新的硬件和存储介质做出相应的设计。
感觉上确实能对数据库性能带来很大的提升,这里的优化能做的改进点也很多,只是出于性价比考虑,会不会有公司做就是另一回事了....