深入浅出存储丨青训营笔记

115 阅读3分钟

这是我参与「第五届青训营 」笔记创作活动的第15天

什么是存储系统?

老师从开发者的角度回答:一个提供读写、控制类接口,能够安全有效地把数据持久化的软件

ACID

  • 原子性(Atomicity):事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。
  • 一致性(Consistency):数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
  • 隔离性(Isolation):多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
  • 持久性(Durability):在事务完成以后,该事务所对数据库所做的更改便持久的保存在数据库之中,并不会被回滚。

DBMS数据模型

  • 网状模型——网状数据库所基于的网状数据模型建立的数据之间的联系,能反映现实世界中信息的关联,是许多空间对象的自然表达形式,用有向图表示实体和实体之间的联系。
  • 层次模型——使用树形结构来描述实体及其之间关系的数据模型。
  • 关系模型——使用表格表示实体和实体之间关系的数据模型称之为关系数据模型。 image.png

关键技术

  • SQL引擎—— 查询解析,查询优化,查询执行

  • 存储引擎—— 页面组织,B+ Tree,Buffer Pool

  • 事务引擎—— 原子性-Undo Log,隔离性-锁/MVCC,持久化-Redo Log

  • 分类

存储介质分类可看成一个金字塔,越往上容量越小,读写速度越快,价格越昂贵

如磁盘-> 内存-> cache ->寄存器

7aodL8.png

  • 存储系统-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