三. 存储数据库
3.1 认识存储与数据库
3.1.1 初识
案例:数据产生(用户注册输入的信息)-> 后端服务器 -> 数据库
持久化过程:检验数据合法性 -> 修改内存 -> 写入存储介质
什么是存储系统:提供读写、控制类接口,能够安全有效地把数据持久化的软件,称为存储系统
系统特点:性能敏感、易受硬件影响、代码既简单又复杂(IO代码简洁,错误处理复杂)
缓存 很重要,贯穿整个存储体系。拷贝 很昂贵,要尽量减少。
3.1.2 RAID技术
单机存储系统如何:高性能?高性价比?高可靠性?
Redundant Array of Inexpensive Disks(廉价磁盘冗余阵列)
RAID0:多块磁盘简单组合,提高磁盘带宽,没有额外容错设计
RAID1:一块磁盘对应一块额外镜像盘,真实利用率50%
也可以RAID0+RAID1,结合各种方式的优点
3.1.3 数据库
关系型数据库、非关系型数据库
关系:反应了事物间的关系
SQL:DSL,方便人类阅读的关系代数表达式
ACID特性:原子性、一致性、隔离性、持久性
3.1.4 主流产品剖析
-
单机存储
单个计算机节点上的存储软件系统,不涉及网络交互。
例如Linux中一切皆文件,两大数据结构Index Node & Directory Entry
-
key-value
常见使用方式:put(k, v) & get(k)
常见数据结构:LSM-Tree,牺牲读性能,追求写入性能
-
分布式存储
在单机存储基础上实现了分布式协议,涉及大量网络交互
HDFS(一切皆文件)、Ceph(一切皆对象)
-
单机数据库-关系型数据库
MySQL & PostgreSQL
-
非关系型数据库
MongoDB、Redis、ElasticSearch
-
分布式数据库解决问题1:容量问题
单点容量有限,受硬件限制。将存储节点池化,动态扩缩容。
-
分布式数据库解决问题2:弹性问题
-
分布式数据库解决问题3:性价比问题
3.1.5 存储与数据库的新技术演进
概述:
- 软件架构变更:Bypass OS kernel
- AI增强:智能存储格式转换
- 硬件革命:存储介质、计算单元、网络硬件变更
详细来说:
-
SPDK
避免syscall带来性能损耗,用户态访问磁盘
轮询代替中断,提高性能
使用无锁数据结构
-
AI & Storage
行存、列存、行列混存(AI决策)
-
高性能硬件
RDMA网络、介于SSD和Memory间的Persistent Memory、可编程交换机、CPU/GPU/DPU