存储与数据库 | 青训营笔记

59 阅读3分钟

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

通过一个模拟案例,描述数据是怎么产生,在后端系统里怎么流通,最后怎么写入到存储/数据库系统。

1 经典案例

一条数据从产生,到数据流动,最后持久化的全生命周期

1.1 数据的流动

用户注册案例:

image.png

image.png

1.2 数据的持久化

image.png

1.3 潜在的问题

  • 数据库怎么保证数据不丢?
  • 数据库怎么处理多人同时修改的问题?
  • 为什么用数据库,除了数据库还能存到别的存储系统吗?
  • 数据库只能处理结构化数据吗?
  • 有哪些操作数据库的方式,要用什么编程语言?

2 存储&数据库简介

数据库和存储系统背景知识,它们是什么,有哪些特点

2.1 存储系统

定义

存储系统是一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件

image.png

特点

  • 性能敏感
  • 存储系统软件架构,易受硬件影响
  • 存储系统代码,既“简单”又“复杂”

存储器层级结构:

image.png

数据怎么从应用到存储介质:

image.png

  • 缓存很重要,贯穿整个存储体系
  • 拷贝很昂贵,尽量减少
  • 设备多样需要有抽象统一的接口

RAID技术

RAID出现的背景:

  • 单块大容量磁盘的价格>多块小容量磁盘
  • 单块磁盘的写入性能<多块磁盘的并发写入性能
  • 单块磁盘的容错能力有限,不够安全

image.png

image.png

image.png

2.2 数据库

  • 关系型数据库

    是存储系统,但在存储之外又发展出其他能力

    • 结构化数据友好
    • 支持事务
    • 支持复杂查询语言
  • 非关系型数据库

    也是存储系统,但是一般不要求严格的结构化

    • 半结构化数据友好
    • 可能支持事务
    • 可能支持复杂查询语言

3 主流产品剖析

主流的存储 & 数据库系统架构,经典产品剖析

  • 单机存储
  • 分布式存储
  • 单机关系型数据库
  • 单机非关系型数据库
  • 分布式数据库

3.1 单机存储

单机存储:单个计算机节点上的存储软件系统,一般不涉及网络交互。

Linux经典哲学:一切皆文件

  • 文件系统的管理单元:文件
  • 文件系统接口:文件系统繁多,但都遵循VFS的统一抽象接口
  • Linux文件系统的两大数据结构:Index Node & Directory Entry image.png

k-v存储

image.png

3.2 分布式存储

在单机存储基础上实现了分布式协议,涉及大量网络交互

HDFS:大数据时代的基石

核心特点

  • 支持海量数据存储
  • 高容错性
  • 弱POSIX语义
  • 使用普通x86服务器,性价比高

Ceph:开源分布式存储系统的万金油

核心特点:

  • 一套系统支持对象接口、块接口、文件接口。但一切皆对象
  • 数据写入采用主备复制模型
  • 数据分布模型采用CRUSH算法

3.3 单机数据库

单个计算机节点上的数据库系统

事务在单机内执行,也可能通过网络交互实现分布式事务

3.4 分布式数据库

  • 解决容量问题

​ 存储节点池化,动态扩缩容

  • 解决弹性问题
  • 解决性价比问题

4 新技术演进

老系统结合新技术,如何持续演进走向新生

  • 软甲架构变更
  • AI增强
  • 新硬件革命

SPDK

Bypass OS kernel 已成为趋势

高性能硬件:

  • RDMA网络
  • Persistent Memory
  • 可编程交换机
  • CPU/GPU/DPU

在存储数据库领域,硬件反推软件变革十分常见