这是我参与「第五届青训营」伴学笔记创作活动的第 13 天,今天学习的内容是关于认识存储的本质,包括经典案例、存储 & 数据库简介、主流产品剖析和新技术演进四个部分,根据课程内容整理学习笔记如下。
11 带你认识存储的本质 - 状态
11.1 经典案例
通过一个模拟案例,描述了数据是怎么产生,在后端系统里怎么流通,最后怎么写入到存储/数据库系统。
数据的流动
数据的持久化
11.2 存储 & 数据库简介
11.2.1 存储系统概览
概念: 一个提供读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
- 存储系统特点
- 存储器层级结构
-
单机存储栈
- 缓存很重要。贯穿整个存储体系
- 拷贝很昂贵,应该尽量减少
- 硬件设备五花八门,需要有统一的接入层
- RAID(Redundant Array of Inexpensive Disk) 技术
11.2.2 数据库系统概览
- 关系型数据库特点
关系型数据库是存储系统,但在存储之外,又发展出其他能力
- 非关系型数据库特点
非关系型数据库也是存储系统,但一般不要求严格的结构化
- 数据库 vs 经典存储
结构化数据管理
事务能力
复杂查询能力
- 数据库使用方式
11.3 主流产品剖析
11.3.1 单机存储产品
单机存储 = 单个计算机节点上的存储软件系统,一般不涉及网络交互
-
单机文件系统
Linux经典哲学 - 一切皆文件
-
单机key-value存储
世间一切皆key-value - key是身份证,value是内涵
11.3.2 分布式存储产品
分布式存储 = 在单机存储的基础上实现了分布式协议,设计大量网络交互
- HDFS:堪称大数据时代的基石
- Ceph:开源分布式存储系统里的万金油
11.3.3 单机数据库产品
单机数据库 = 单个计算机节点上的数据库系统
事务在单机内执行,也可能通过网络交互实现分布式事务
- 关系型数据库 —— PG、MySQL
- 非关系型数据库 —— ES、MongoDB、Redis
- Elasticsearch使用案例
11.3.4 分布式数据库产品
-
问题与挑战
- 容量
- 弹性
- 性价比
-
解决容量问题
- 解决弹性问题
- 解决性价比问题
- More to Do
11.4 新技术演进
- 概览
- SPDK
- 人工智能
- 新硬件加速
11.5 总结
存储系统
- 块存储:存储软件栈里的底层系统,接口过于朴素
- 文件存储:日常使用最广泛的存储系统,接口十分友好,实现五花八门
- 对象存储:公有云上的王牌产品,immutable语义加持
- key-value存储:形式最灵活,存在大量的开源/黑盒产品
数据库系统
- 关系型数据库:基于关系和关系代数构建的,一般支持事务和SQL访问,使用体验友好的存储产品
- 非关系型数据库:结构灵活,访问方式灵活,针对不同场景有不同的针对性产品
分布式架构
- 数据分布策略:决定了数据怎么分布到集群里的多个物理节点。是否均匀,是否能做到高性能
- 数据复制协议:影响IO路径的性能,机器故障场景的处理方式
- 分布式事务算法:多个数据库节点协同保障一个事务的ACID特性的算法,通常基于2pc的思想设计
在存储&数据库领域,硬件反推软件变革十分常见!