RAID技术
高性能 高性价比 高可靠性
RAID 0
多块磁盘简单组合 数据条带化存储,提高磁盘带宽 没有额外的容错设计
RAID 1
容错 一块磁盘对应一块额外镜像盘 真实空间利用率仅50% 容错能力强
RAID 0 + 1
数据库 & 存储系统
关系型数据库
-
关系 relation
-
关系模型 - 1970
-
关系 = 集合 = 任意元素组成的若干有序偶对
-
关系代数 = 对关系做运算的抽象查询语言
-
SQL = 一种DSL = 方便人类阅读的关系代数表达式
-
关系型数据库是存储系统,+其他
-
结构化数据友好
-
支持事物 ACID
-
支持复杂查询语言 SQL
非关系型数据库
- 也是存储系统,但不要求严格的结构化
- 半结构化数据友好
- 不一定支持事务
- 不一定支持复杂查询语言,如SQL
数据库VS经典存储
数据库
- 表形式管理
- 事务能力
- atomicity
- consistency
- isolation
- durability
- 复杂查询能力
经典存储
- 自行定义管理结构
数据库使用方式
DSL - domain specific language
主流产品剖析
单机存储
单个计算机,不涉及网络交互
-
本地文件系统 Linux: 一切皆文件 文件系统接口:Ext2/3/4, sysfs, rootfs, VFS统一抽象接口 Index Node - 文件的全局唯一标识 Directory Entry - 记录文件名、 inode指针,层级关系;内存结构,与inode的关系是N:1 hardlink的实现
-
key-value存储系统 常见使用方式:put & get 常见数据结构: LSM-Tree, somehow牺牲读性能,追求写入性能 RocksDB LevelDB
分布式存储
大量网络交互
-
分布式存储 - HDFS 海量数据存储 高容错性 弱POSIX语义 使用普通X86服务器,性价比高
-
分布式存储 - Ceph 一切皆对象:支持对象接口、块接口、文件接口 主备复制模型 - 数据写入 CRUSH算法 - 数据分布算法 HASH 权重 随机
单机关系型数据库
Oracle MySQL PostgreSQL Query Engine - 解析query,生成查询计划 Txn Manager - 事务并发管理 Lock Manager - 锁相关的策略 Storage Engine - 组织内存/磁盘数据结构 Replication - 主备同步
单机非关系型数据库
MongoDB Redis Elasticsearch
schema灵活 SQL子集、 “事务”
- Elasticsearch
- 面向文档
- 文档可序列化为JSON
- index = 文档的集合
- 存储和构建索引的能力依赖Lucene引擎
- 实现了大量搜索数据结构 & 算法
- RESTFUL API 弱SQL
- mongoDB
- 文档
- JSON / BSON
- collection = 文档的集合
- wiredTiger引擎:C
- 事务 4.0之后
- client/SDK交互,插件
- Redis
- 数据结构丰富
- C语言实现,超高性能
- 基于内存,AOF/RDB持久化
- redis-cli / 多语言SDK交互
分布式数据库
问题:容量;弹性;性价比
- 容量 - 存储节点池化,动态扩缩容
- 弹性 - CPU核扩容,缩容
- 性价比 - 容量不够、CPU利用率低
MORE 单写 / 多写 磁盘弹性 - 内存弹性 分布式事务优化
新技术的演进
架构 / 硬件 /理论 / AI 架构 - Bypass OS kernel AI增强 - 智能存储格式转换 新硬件革命 - 存储介质;计算单元;网络硬件
SPDK
- user space
- 中断 -> 轮询
- 无锁数据结构
AI & Storage
- 数据存储格式的转换:行存、列存、行列混存
高性能硬件
- RDMA网络
- persistent memory
- 可编程交换机
- CPU/GPU/DPU