这是我参与「第五届青训营 」笔记创作活动的第15天
什么是存储系统?
老师从开发者的角度回答:一个提供读写、控制类接口,能够安全有效地把数据持久化的软件
ACID
- 原子性(Atomicity):事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。
- 一致性(Consistency):数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
- 隔离性(Isolation):多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
- 持久性(Durability):在事务完成以后,该事务所对数据库所做的更改便持久的保存在数据库之中,并不会被回滚。
DBMS数据模型
- 网状模型——网状数据库所基于的网状数据模型建立的数据之间的联系,能反映现实世界中信息的关联,是许多空间对象的自然表达形式,用有向图表示实体和实体之间的联系。
- 层次模型——使用树形结构来描述实体及其之间关系的数据模型。
- 关系模型——使用表格表示实体和实体之间关系的数据模型称之为关系数据模型。
关键技术
-
SQL引擎—— 查询解析,查询优化,查询执行
-
存储引擎—— 页面组织,B+ Tree,Buffer Pool
-
事务引擎—— 原子性-Undo Log,隔离性-锁/MVCC,持久化-Redo Log
-
分类
存储介质分类可看成一个金字塔,越往上容量越小,读写速度越快,价格越昂贵
如磁盘-> 内存-> cache ->寄存器
- 存储系统-RAID技术
RAID ( Redundant Array of Independent Disks )独立磁盘冗余阵列 / 磁盘阵列,利用多个独立的磁盘组成在一起形成一个大的磁盘组,从而实现比单块磁盘更好的存储性能和更高的可靠性。
如采用多个磁盘并发写从而比在一个大容量磁盘写的速度更快
RAID可以分很多级别,如:
RAID 0:多块磁盘简单组合,数据条带化存储,提高磁盘带宽,没有额外的容错设计
RAID 1:一块磁盘对应一块额外镜像盘,真实空间利用率50%
RAID 0+1:结合了RAID 0 和 RAID 1
数据库
数据库可分为关系型数据库和非关系型数据库
关系(Relation)是什么?
关系 = 集合 = 任意元素组成的若干有序偶对反映了事物间的关系
SQL = 一种DSL,方便人类阅读的关系代数表达形式
关系型数据库是存储系统,对结构化数据友好,支持事务,满足ACID,支持复杂的查询语言SQL。
非关系型数据库也是存储系统,但一般不要求严格的格式化
主流产品剖析
单机存储
- 本地文件系统
在Linux系统中有一句名言:一切皆文件
- key-value存储
分布式存储
在单机存储基础上实现了分布式协议,涉及大量网络交互
- HDFS
HDFS堪称大数据时代的基石
核心特点:支持海量数据存储,高容错性,弱POSIX语义
- Ceph
核心特点:一套系统支持对象接口,块接口,文件接口,但一切皆对象,数据写入采用主备复制模型 ,数据分布模型采用CRUSH算法(HASH+权重+随机标签)
关系型数据库代表: : MySQL,Oracle,PostgreSQL
非关系型数据库代表:Redis,MongoDB,Elasticsearch
新技术演进
- 软件架构变更
ByPass OS Kernal
- AI增强
- 新硬件革命
RDMA网络
Persistent Memory
可编程交换机
CPU/GPU/DPU