[ 存储的本质 | 青训营笔记 ]
这是我参与「第五届青训营」伴学笔记创作活动的第 13 天
零、前言:
记个笔记顺便(恰青豆还是有很多不完善也有可能对的地方还请大佬们指正
一、本堂课重点内容:
- 经典案例
- 存储&数据库简介
- 主流产品剖析
- 新技术演进
二、详细知识点介绍:
13.1 经典案例
数据流动:
一条数据 --> 后端服务器 --> 数据库 --> 其他系统
数据持久化:
校验数据合法性 --> 修改内存 --> 写入存储介质
潜在问题:
数据稳定性,多人同时修改,别的存储系统,方式语言
13.2 存储&数据库简介
存储系统:一个提供读写、控制类接口,能够安全有效的把数据持久化的软件,就可以成为存储系统
存储系统的特点:对性能敏感,容易受硬件影响,代码既简单也复杂
数据从应用到存储介质:
- [缓存] 贯穿了整个存储体系
- [拷贝] 很昂贵
- 硬件五花八门
存储技术:RAID
发现:单块大磁盘价格比多块小磁盘价格高,性能若,容错差
-
RAID 0
多块磁盘简单组合,数据条带化,没有容错
-
RAID 1
一块磁盘对应一个镜像,空间利用率只有50%,有容错
-
RAID 1 + 0
结合,空间利用率也是50%,带宽好有容错
数据库:
关系型数据库,非关系型数据库
关系型数据库支持事务:
A:原子性
C:一致性
I:隔离多个并发事务
D:提交成功保证持久
13.3 主流产品剖析
-
单机存储
不涉及网络交互
linux存储 -- 文件:
文件系统接口:都支持VFS的统一抽象接口
linux两大数据结构:Index Node & Directory Entry
key-value存储:
数据结构:LSM-Tree 牺牲了读性能,追求写入性能,顺序写入(RocksDB)
-
分布式存储
在单机存储上实现分布式协议,设计大量网络交互
HDFS(大数据):
支持海量数据存储,高容错,弱POSIX,性价比高
Ceph:
一切皆对象,写入采用主备复制模型,数据分布模型采用CRUSH算法
-
单机数据库
单个计算机节点的数据库系统
(关系型数据库)Mysql,Postgresql:
Query Engine ——负责解析query,生成查询计划
Txn Manager ——负责事务并发管理
Lock Manager ——负责锁相关的策略
Storage Engine——负责组织内存/磁盘数据结构
Replication ——负责主备同步
内存结构:b树,b+树
磁盘数据结构:Redo Log,Page
(非关系型数据库)MongoDB,Redis,Elasticsearch
-
分布式数据库
单机的问题:容量,弹性,性价比
储存节点池化
远远不止。。。
13.4 新技术演进
软件架构变更,AI增强,硬件革命
SPDK:Bypass OS kernel
- 避免syscall 带来的性能损耗,直接从用户态访问磁盘
- SPDK poller 可以绑定特定的cpu核不断轮询,减少cs,提高性能
- 使用 Lock-free queue,降低并发时的同步开销
AI &Storge
存储格式的转换,行村列存,行列混存
高性能硬件
- RDMA 网络
- Persistent Memory
- 可编程交换机
- CPU/GPU/DPU
三、总结:
简单介绍了数据库的发展以及类型