这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记。
简介
什么是存储系统
提供了读写、控制类接口,能够安全有效地把数据持久化的软件
特点
- 性能敏感
- 易受硬件影响
- 代码兼具简单与复杂
RAID技术
R(edundant) A(rray) of I(nexpensive) D(isks)
关系型数据库
关系型数据库是存储系统,但是在存储之外,又发展出其他能力
- 结构化数据友好
- 支持事务(ACID)
- 支持复杂查询语言
非关系型数据库
非关系型数据库也是存储系统,但是一般不要求严格的结构化
- 半结构化数据友好
- 可能支持事务(ACID)
- 可能支持复杂查询语言
主流产品
单机存储
单个计算机节点上的存储软件系统,一般不涉及网络交互
本地文件系统
- 管理单元:文件
- 接口:Ext2/3/4,sysfs,rootfs等,遵循VFS的统一抽象接口
- Linux文件系统的两大数据结构:Index Node & Directory Entry
key-value存储
- 常见使用方式:put(k, v) & get(k)
- 常见数据结构:LSM-Tree,某种程度上牺牲读性能,追求写入性能
- RocksDB
分布式存储
在单机存储基础上实现了分布式协议,涉及大量网络交互
HDFS特点: -支持海量数据存储
- 高容错性
- 弱POSIX语义
- 使用普通x86服务器,性价比高
新技术
Bypass OS kernel已成为一种趋势
- Kernel Space -> User Space
- 中断 -> 轮询
- 无锁数据结构
RDMA网络
- 传统的网络协议栈,需要基于多层网络协议处理数据包,存在用户态 & 内核态的切换
- RDMA不经过传统的网络协议栈,可以把用户态虚拟内存映射给网卡
可编程交换机
- P4 Switch,配有编译器、计算单元、DRAM,可以在交换机层对网络包做计算逻辑。
- 在数据库场景下,可以实现缓存一致性协议等