这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记,下面是笔记内容,如有错误,请同学批评指正。
带你认识存储 & 数据库
1 经典案例
一条数据从产生,到数据流动,最后持久化的全生命周期
2 存储&数据库介绍
什么是存储系统,什么是数据库系统
首先回答第一个小问题:存储系统是一个提供读写、控制类接口,能够安全有效地将数据持久化的软件。
主要的特点是:性能敏感,存储系统的软件架构容易受到硬件影响,代码既简单又复杂。
2.1 RAID(redundant array of inexpensive disks) 技术
容错能力强,写入带宽好
2.2 关系型数据库是存储系统
提供了结构化数据友好、支持事务ACID、支持复杂查询语言
相比之下非关系性数据库也是存储系统,仅支持半结构化数据友好、可能支持事务ACID、可能支持复杂查询语言
数据库的使用这里就不赘述,相信大家都已经熟练掌握了。
3 主流产品剖析
3.1 单机存储
Linux文件系统的两大数据结构 Index Node & Directory Entry
3.2 分布式存储
在单机基础上实现了分布式协议,涉及大量的网络交互,分为两部分:分布式文件系统、分布式对象存储。
HDFS核心特点:
- 支持海量数据存储
- 高容错性
- 弱POSIX语义
- 使用x86服务器,性价比高
分布式数据库解决容量问题
提出了存储节点池化,实现动态扩缩容
4 新技术演进
在AI领域在原本行存和列存的基础上,实现行列混存。
大部分的性能提升还是从硬件出发
-
RDMA网络
- 是kernel bypass流派,不需要经过传统的网络协议栈,将用户态虚拟内存映射到网卡,减少拷贝和cpu开销。
-
Persistent Memory
-
可编程交换机
-
CPU/GPU/DPU
总结
分布式架构 数据分布策略:决定了数据怎么分布到集群里的多个物理节点,是否均匀,是否能做到高性能 数据复制协议:影响IO路径的性能、机器故障场景的处理方式 分布式事务算法:多个数据库节点协同保障一个事务的ACID特性的算法,通常基于2pc的思想设计