这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记
一、存储系统
-
概述
- 一个提供读写、控制类接口,能安全有效地把数据持久化的软件(与用户、介质、内存、网络编程有联系)
- 计算机中由存放程序和数据的各种存储设备、控制部件及管理信息调度的设备(硬件)和算法(软件)所组成的系统
-
特点
- 性能敏感 <- 做到超高性能
- 代码简单(简洁)又复杂(考虑到的问题比较多)
- 容易受硬件影响
-
层级结构
-
RAID技术
- RAID 0
- 多块磁盘简单组合
- 数据条带化存储,提高磁盘带宽
- 没有额外的容错设计
- RAID 1
- 一块磁盘对应一块额外镜像盘
- 真实空间利用率50%
- 容错能力强
- RAID 0+1
- 结合 RAID0 和 RAID1
- 真实空间利用率50%
- 容错能力强。写入带宽好
- RAID 0
二、数据库
-
认识
包括关系型数据库和非关系型数据库
- 关系型数据库(存储系统)
- 关系 = 集合
- 反应事物间的关系
- 关系代数 = 对关系作运算的抽象查询语言(交、并、笛卡尔积...)
- 结构化数据友好、支持事物、支持复杂查询语言
- 非关系型数据库(存储系统)
- 半结构化数据友好
- 可能支持事物
- 可能支持复杂查询语言
- 关系型数据库(存储系统)
-
事务
- Atomicity 原子性
- Consistency 一致性
- Isolation 隔离性
- Durability 持久性
三、单机存储(不涉及网络交互)
-
本地文件系统
- 管理单元:文件
- 遵循VFS的统一抽象接口
- Linux文件系统两大数据结构:
- Index Node
- Directory Entry
-
key-value存储
- 常用方式:put(k,v)、get(k)
- 数据结构:
- LSM-Tree
四、分布式存储(涉及网络交互)
-
分布式文件系统 HDFS(Hadoop Distributed File System)
- 海量数据存储
- 高容错性
- 弱POSIX语义
- 性价比高
-
分布式对象存储Ceph
- 一套系统支持对象接口、块接口、文件接口
- 数据写入采用主备复制模型
- 数据分布模型采用CRUSH算法(HASH +权重 + 随机抽签)
五、单机数据库
- 单机关系型数据库
- MySQL
- PostgreSQL
- 单机非关系型数据库
- MongoDB
- Redis
- Elasticsearch
六、分布式数据库
- 解决容量问题-->存储节点池化,动态扩缩
- 解决弹性问题-->基于动态扩缩,无需感知database的容量空间
- 解决性价比问题-->基于存储池的实现,有效解决扩容时CPU的利用率低的问题
资料