这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天
存储系统和数据库系统往往是后端服务的最后一环,提供数据存储、查询能力。本课程介绍了存储系统、数据库系统的特点,解析多个主流产品,分享存储和数据库结合新技术演进的方向
1、经典案例
1.1 数据的产生
用户操作使数据从无到有地产生,向后端服务器传输
1.2 数据的流动
设备->后端服务器->数据库->其他系统
1.3 数据的持久化
检验数据的合法性(是否已存在)->修改内存(用高效的数据结构组织数据)->写入存储介质(以寿命&性能友好的方式写入硬件)
1.4 潜在的问题
如何保证数据不丢、多人同时修改问题、可以使用其他存储系统吗、数据库只能处理结构化数据、操作数据库的方式及使用的编程语言
2、存储&数据库简介
2.1 存储系统
2.1.1 系统概览
存储系统:提供读写、控制类接口,能安全有效地把数据持久化的软件
2.1.2 系统特点
性能敏感、容易受硬件影响、代码既“简单”又“复杂”
2.1.3 存储器层级结构
2.1.4 数据从应用到存储介质
缓存、拷贝、硬件设备需要有统一的接入层
2.1.5 RAID技术
RAID(Redundant Array of Inexpensive Disks):单机存储系统做到高性能/高性价比/高可靠性
为什么RAID?
多块小容量磁盘价格低、多块磁盘的并发写入性能高、单块磁盘的容错能力有限
2.2 数据库
关系型数据库、非关系型数据库
2.2.1 概览
关系(Relation)
2.2.2 关系型数据库特点
是存储系统,结构化数据友好、支持事务(ACID)、支持复杂查询语言(SQL)
2.2.3 非关系型数据库特点
是存储系统,半结构化数据友好、可能支持事务、可能支持复杂查询语言
2.3 数据库对于经典存储
2.3.1 结构化数据管理
数据写入关系型数据库以表形式管理、写入文件自行定义管理结构
2.3.2 事务能力
Atomicity:事务内的操作要么全做,要么不做
Consistency:事务执行前后,数据状态是一致的
Isolation:可以隔离多个并发事务,避免影响
Durability:事务一旦提交成功,保证持久性
2.3.3 复杂查询能力
SQL灵活简洁
2.4 数据库使用方式
SQL
3、主流产品剖析
3.1 单机存储
单机存储=单个计算机节点上的存储软件系统,一般不涉及网络交互
3.1.1 本地文件系统
Index Node:记录元数据 Directory Entry:记录文件名
3.1.2 key-value存储
LSM-Tree,追求写入性能
3.2 分布式存储
分布式存储=在单机存储基础上实现分布式协议,涉及大量网络交互
3.2.1 HDFS
Management Node->Storage Node
支持海量数据存储、高容错性、弱POSIX语义、使用普通x86服务器、性价比高
3.2.2 Ceph
一切皆对象、数据写入采用主备复制模型、数据分布模型采用CRUSH算法(权重+HASH+随机抽签)
3.3 单机关系型数据库
Oracle、MySQL、PostgreSQL
Memory->HardDisk Temp data->Redo Log Files & Others
3.4 单机非关系型数据库
MongoDB、Redis、Elasticsearch
交互方式各不相同、没有关系约束schema相对灵活、支持SQL和事务
3.4.1 Elasticsearch使用案例
能做到“模糊搜索”,还能自动算出关联程度
3.5 分布式数据库
存储节点池化,动态扩缩容
3.5.1 解决弹性问题
CPU资源紧张->扩容,访问新数据库->缩容,访问新数据库
3.5.2 解决性价比问题
要写500GB数据,容量不够,但是CPU利用率仅20%->扩容,满足了容量需要,但是CPU浪费更严重->使用共享存储池,不扩CPU
3.5.3 More to Do
单写->多写 从磁盘弹性到内存弹性 分布式事务优化
4、新技术演进
软件架构变更、AI增强、新硬件革命
4.1 SPDK
Bypass OS kernel已经成为一种趋势
SPDK:直接从用户态访问磁盘、SPDK poller可以绑定特定的CPU核不断轮询、无锁数据结构
4.2 AI&Storage
4.3 高性能软件
RDMA网络、Persistent Memory、可编程交换机、CPU/GPU/DPU
课后个人总结
存储系统和数据库系统往往是后端服务的最后一环,提供数据存储、查询能力。通过本课程我了解了存储系统、数据库系统的特点,还有多个主流产品以及存储和数据库结合新技术演进的方向