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

116 阅读7分钟

存储与数据库

01. 经典案例

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

小明同学下载了新APP,注册一个账号

image-20230604180225773

当他按下**[注册]**按钮后,数据从无到有地产生了,并且在 数十/数百 毫秒内向APP的后端服务器飞奔而去。

数据的流动

image-20230604180658395

数据的持久化

image-20230604180746505

不要忽略了硬件的寿命

潜在的问题

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

这些问题都会在后面的讲解中 进行回答

02. 存储&数据库简介

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

系统概览

什么是存储系统?

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

包含 用户介质

image-20230604181542184

要提供给用户使用,要把数据最终持久化到存储介质中。

为了设计性能高效,操作方便 还需要和内存打交道

为了开发非单机的系统,还需要和网络编程打交道

系统特点

  • 作为后端软件的底座,==性能敏感==

    很多架构都是有状态,涉及大量的、频繁的、并发的

  • 存储系统==代码,即‘简单’又‘复杂’==

    简:在IO路径上的 读写 不能太复杂,不能有很多分支,导致系统性能低下。

    杂:要考虑到多种异常情况,应对软件、硬件可能出现的故障。

  • 存储系统软件架构,==容易受硬件影响==

    存储系统往下就是 与硬件打交道的,如果硬件出现变革,软件也必须出现相应的变革。

存储器层级结构

如下金字塔结构 硬件方面

image-20230604183411059

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

image-20230604183523982

硬件的写入很极端的话(一次只能写1Byte),就需要引入软件层面的缓存。

从用户态到内核态再到持久化 介质上,很有可能会经过多次数据的拷贝,拷贝是需要消耗CPU性能的。

RAID 技术

Q:单机存储系统怎么做到 ==高性能 / 高性价比 / 高可靠性== ?

A:R(edundant) A(rray) of l(nexpensive) D(isks)

出现的背景 来源于人类 对性价比的极端追求

单块大容量磁盘的==价格== > 多块小容量磁盘

单块磁盘的写入==性能== < 多块磁盘的并发写入性能

单块磁盘的==容错能力==有限,不够安全

RAID0

多块磁盘的 简单组合,数据在多块磁盘上 条带化存储。==没有额外的容错设计==

写入性能极高,但没有容错

RAID0 一时爽,数据火葬场

RAID1

一块磁盘对应一块额外的镜像盘

50%的空间利用率

容错能力强

RAID0 + 1

结合了RAID0 和 RAID1

空间利用率50%

容错能力强,写入带宽大

假如有四块磁盘,先两两组成RAID0,再把两组用RAID1组合。

或者 反转也行

----以上为 2.1 存储系统

image-20230211155117020

----以下为 2.2 数据库

概览

==关系==(Relation) 是什么

Edgar.F.Codd于1970年提出==「关系模型」==

关系代数 = 对关系作==运算的抽象查询语言==

交、并、笛卡尔积……

关系 = ==集合== = 任意元素组成的若干有序偶对反应了事物间的关系

SQL = —种DSL = ==方便人类阅读==的关系代数表达形式

关系型数据库特点

是存储系统,但又发展出==其他能力==

image-20230604185147733

非关系型数据库特点

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

image-20230604185241471

数据库 vs 经典存储

结构化数据管理

image-20230604185610356

事务能力

image-20230604185739530

复杂查询能力

image-20230604193037833

sql 很强哦

03. 主流产品剖析

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

这是一个很大的章节,本章会讲大量的存储产品、数据库产品,==千万不要==把他们搞混,也千万不要把存储与数据库的特点搞混。

3.1 单机存储

概览

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

image-20230604215222179

本地文件系统

Linux经典哲学:==一切皆文件==

image-20230604215806911

key-value 存储

世间一切皆key-value

------- key是你身份证,value是你的内涵 :)

常见使用方式: put(k, v) & get(k)

常见数据结构: LSM-Tree,某种程度上牺牲 读性能,追求写入性能

数据结构分为两部分 :内存部分 与 磁盘部分

image-20230604220326567

不管是内存还是磁盘 都遵循顺序操作,当内存MemTable满了后,就变为灰色的Immutable MemTable,过一段时间,或者是一定条件触发将会顺序写入到磁盘上的SSTable(SortedStringTable),当Level0满后下刷到Level1,不断向下刷。

如果要读一个最新版本的数据,要读多层。

3.2 分布式存储

概览

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

涉及到了 大量的网络交互,所以重点关注网络交互的有效性与网络交互的性能

image-20230604220844241

分布式存储 - HDFS

HDFS : 堪称大数据时代的==基石==

提出是基于Google的一篇开源的paper

时代背景:专用的高级硬件==很贵==,同时数据存量==很大==,要求超高==吞吐==

核心特点:

  • 支撑==海量数据存储==

    以文件的形式提供给用户进行读写

  • ==高容错性==

    使用的硬件是一些比较便宜的、通用的,且故障率比专用的硬件高一两个数量级

  • 弱==POSIX==语义

  • 使用普通x86服务器,==性能比高==

image-20230604221533887

分布式存储 - Ceph

开源分布式存储系统里的 ==[万金油]==

核心特点

  • 一套系统支持对象接口、快接口、文件接口,但是==一切皆对象==

  • 数据写入采用==主备复制模型==

  • 数据分布模型采用==CRUSH==算法 ==(HASH + 权重 + 随机抽签)==

    为了保证数据的可靠性会产生3个副本,在伍莉服务器上做存储,比如有100台服务器,这3个副本要放在哪3台上。

image-20230604222657093

3.3 单机数据库

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

image-20230604222759804

关系型数据库

image-20230604223106732

image-20230604223358200

非关系型数据库

MongoDB、Redis、Elasticsearch 三足鼎立

image-20230604223634922

image-20230604224012455

Elasticsearch使用案例

==天然支持== 模糊搜索

image-20230604224225624

3.5 从单机到分布式数据库

image-20230604224427183

解决容量问题

单点容量有限,受硬件限制

-------------》

存储结点池化,动态扩缩容

diao!

image-20230604224913825

动态扩缩容 database无感知哦

解决弹性问题

image-20230604225000805

在业务发展后,对资源的需求增加

灵活应对资源需求变化

解决性价比问题

image-20230604225416192

存储池 动态扩容,database不用担心。

More to Do

image-20230604225516856

04. 新技术演进

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

新架构? | 新硬件? | 新理论? | 人工智能?

概览

image-20230604225859858

我们的软件架构需要一定的变更,现在的架构已经很多年没有大的变革。

近年来出现了很多新的技术,值得我们重点探索。

AI在存储数据库 领域还相对受限,在学术界和工业界暂时还没有特别惊艳的。

硬件变更很重要。

SPDK

Bypass OS kernel已经成为一种趋势

image-20230604230321664

AI & Storage

image-20230604230727039

高性能硬件

image-20230604231008333

总结

很到位,很好。

image-20230604231100129

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

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

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

课后作业

image-20230604231252696

可期

ppt 参考资料

[1]en.wikipedia.org/wiki/Memomy…

[2]《The Linux Programming Interface》 Chapter 13 FILE VO BUFFERING

[3]www.supportsages.com/ceph-part-3…

[4]db-engines.com/en/ranking

[5]spdk.io

image-20230604231429452