这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
存储系统
- 存储系统特点
- 存储器层级结构
- 单机存储栈
- RAID技术
什么是存储系统?
存储系统是提供了读写接口的,能把数据安全有效的持久化的软件。
存储系统特点:
性能敏感、容易受硬件影响
RAID技术
存储系统通过 RAID磁盘阵列 实现 高性能 / 高性价比 / 高可靠性
RAID的背景:
- 单块大磁盘价格 > 多块小磁盘价格
- 单块大磁盘写入性能 < 多块小磁盘写入性能
- 单块磁盘有错有限
数据库系统
- 关系型数据库特点
- 非关系型数据库特点
- 数据库 vs 经典存储
- 数据库使用方式
数据库和经典存储的对比
- 结构化数据管理 - 自行定义管理结构
- 具有支持事务的优越性 - 深度代码实现
- 支持SQL复杂查询语言
主流分析
- 单机存储
- 分布式存储
- 单机数据库
- 分布式数据库产品
单机存储
单机文件系统,单个计算机节点的存储软件系统,不涉及网络交互
本地文件系统
- 管理单元:文件
- 文件系统接口:统一遵循VFS的统一抽象接口
- Linux文件系统两大数据结构:Index Node & Directory Entry
- Index Node:记录文件的元数据,文件的唯一标识
- Directory Entry:记录文件名、inode指针、层级关系
K-V存储
- 使用方式:put & get
- 常见数据结构:LSM-Tree,牺牲读性能,追求写入性能
- 产品:RocksDB
分布式存储
-
产品:HDFS - 大数据时代基石 核心特点:廉价硬件-支持海量数据存储、高容错性
-
产品:Ceph - 开源分布式文件存储 核心特点:基于对象接口、主备复制模型、CRUSH算法
单机数据库
关系型数据库 Oracle、MySQL、PostgreSQL
通用组件:
- Query Engine 解析query,生成查询
- Txn Manager 负责事务并发管理
- Lock Manager 负责锁相关的策略
- Storage Engine 负责组织内存/磁盘数据结构
- Replication 负责主备同步
内存数据结构:B-Tree、B+Tree、LRU List 磁盘数据结构:RedoLog、Page
非关系型数据库 MongoDB、Redis、Elasticsearch
交互方式各不相同,没有关系约束 schema 灵活,尝试支持SQL和事务
Elasticsearch
index = 文档的集合
面向文档存储,序列化JSON,支持嵌套,依赖Lucene引擎,实现大量搜索数据结构,支持RESTFUL API,弱SQL
MongoDB
collection = 文档的集合
面向文档存储,序列化JSON,支持嵌套,依赖wiredTiger引擎,4.0后支持事务,支持弱SQL
Redis
高性能,基于内存、支持持久化
分布式数据库
单机数据库的问题:
- 容量问题 - 单点容量有限,受硬件限制
- 弹性问题
- 性价比问题
解决方案:存储节点池化,同态扩缩容
新问题
- 多个同时写入
- 内存弹性
- 分布式事务优化
新技术
- SPDK
- 人工智能
- 新硬件加速