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

140 阅读3分钟

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

内容源于青训营课堂视频以及一些文档,若有错误欢迎及时指出

1 经典案例

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

用户注册案例

潜在的问题

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

2 存储与数据库介绍

存储系统

定义

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

特点

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

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

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

RAID技术

RAID出现的背景:

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

数据库

  • 关系型数据库

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

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

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

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

3 主流产品剖析

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

3.1 单机存储

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

Linux经典哲学:一切皆文件

文件系统的管理单元:文件

Linux文件系统的两大数据结构:Index Node & Directory Entry

k-v存储

3.2 分布式存储

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

HDFS:大数据时代的基石

核心特点

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

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

核心特点:

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

3.3 单机数据库

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

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

3.4 分布式数据库

  • 解决容量问题

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

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

4 新技术演进

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

SPDK

Bypass OS kernel 已成为趋势

高性能硬件:

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

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