一、认识存储与数据库
01、经典案例
-
数据的流动:一条用户注册的数据 -> 后端服务器 -> 数据库
-
数据的持久化:校验数据的合法性、修改内存、写入存储介质
02、存储&数据库简介
2.1 存储系统
-
系统概述:一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
-
系统特点:1、性能敏感 2、代码既简单又复杂 3、容易受到硬件影响
-
存储器层级结构:
-
数据怎么从应用到存储介质:
缓存很重要,贯穿整个存储体系
拷贝应当减少
需要有抽象统一的接入层
-
RAID技术:RAID(冗余阵列独立磁盘)是一种数据存储技术,通过将多个物理磁盘组合在一起,以提供更高的性能、容错能力和可用性。RAID技术将多个磁盘驱动器组合成一个逻辑驱动器,使其看起来像是单个驱动器。
以下是几种常见的RAID级别:
- RAID 0:也称为条带化,数据被分成块,并分散地存储在多个磁盘上。它提供了优秀的读写性能,但没有冗余备份,如果其中一个磁盘故障,所有数据都会丢失。
- RAID 1:也称为镜像,数据同时写入两个磁盘,提供了冗余备份。如果一个磁盘故障,数据可以从另一个磁盘恢复。RAID 1的缺点是使用了两倍的存储空间。
- RAID 0+1:RAID 0+1的实现方式是首先将磁盘分成多个组,并在每个组内使用RAID 0条带化技术。然后,将这些RAID 0组再次镜像(RAID 1)来实现冗余备份。
2.2 数据库
-
关系型数据库:
关系型数据库是存储系统,但是又在存储之外发展出其他能力:1、结构化数据友好2、支持事务3、支持复杂查询语言
-
非关系型数据库:
非关系型数据库也是存储系统,但是一般不要求严格的结构化
2.3 数据库 vs 经典存储
- 结构化数据管理
-
事务能力:
ACID:原子性、一致性、隔离性和持久性
-
复杂查询能力
关系型数据库对于复杂查询相比于经典存储更为灵活简洁
2.4 数据库使用方式
Everything is DSL -> SQL
03、主流产品剖析
3.1 单机存储
-
概念:单个计算机节点上的存储系统,一般不涉及网络交互,例如本地文件系统、key-value存储
-
本地文件系统:
Linux哲学:一切皆文件
文件系统繁多,但是都遵循VFS的统一抽象接口
Linux文件系统的两大数据结构:Index Node & Directory Entry
-
key-value存储
put(k, v) get(k)
某种程度上牺牲读性能,追求写入性能
3.2 分布式存储
-
概览:在单机存储基础上实现了分布式协议,涉及大量网络交互
分布式文件系统、分布式对象存储
-
HDFS-大数据时代的基石
核心特点:1、支持海量数据存储 2、高容错性 3、弱POSIX语义 4、性价比高
-
Ceph-开源分布式存储系统里的万金油
核心特点:1、一切对象 2、主备复制模型 3、CRUSH算法
3.3 单机关系型数据库
商业产品Oracle称王、开源产品MySQL&PostgreSQL称霸
3.4 单机非关系型数据库
MongoDB、Redis、Elasticsearch三足鼎立
- Elasticsearch面向文档存储、支持可序列化成JSON、支持嵌套、实现大量搜索数据结构&算法、支持RESTFUL API,也支持SQL交互
- MongoDB面向文档存储、支持可序列化成JSON、支持嵌套、4.0开始支持事务、常用client/SDK交互,可通过插件转义支持SQL
- Redis数据结构丰富、性能高、主要基于内存
3.5 分布式数据库
- 解决容量问题:存储节点池化,动态扩缩容
- 解决弹性问题:用户需要扩缩容,池化后用户不再需要关注容量问题
- 解决性价比问题
04、新技术演进
4.1 概览
三个方向:1、软件架构变更 2、AI增强 3、新硬件革命
4.2 SPDK
1、内核态->用户态 2、中断 -> 轮询 3、无锁数据结构
4.3 AI & Storage
AI决策行列混存
4.4 高性能硬件
1、RDMA网络 2、Persistent Memory 3、可编程交换机 4、CUP/GUP/DPU