带你认识存储&数据库 | 青训营笔记

49 阅读5分钟

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

1、经典案例

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

1.1、数据的产生

某天,小明同学下载了一个新的APP。因为第一次登陆,所以进入APP后需要注册一个新的账号

用户名:小明

密码: helloworld

密码提示问题: coding

于是小明同学三下五除二地填好了资料,按下了「注册」按钮

就这样,数据就从无到有地产生了,并且在数十/数百亳秒内向APP的后端服务器飞奔而去……

1.2、数据的流动

image-20230218102531637

1.3、数据的持久化

image-20230218102718379

1.4、潜在的问题

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

2、存储&数据库简介

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

2.1、存储系统

系统概览

Q:什么是存储系统?

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

image-20230218102944870

系统特点

image-20230218103045978

存储器层级结构

image-20230218103112915

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

image-20230218103146979

  • 「缓存」很重要,贯穿整个存储体系
  • 「拷贝」很昂贵,应该尽量减少
  • 硬件设备五花八门,需要有抽象统一的接入层

RAID技术

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

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

RAID出现的背景:

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

RAID0

  • 多块磁盘简单组合

  • 数据条带化存储.捉高磁盘带宽

  • 没有额外的容错设计

RAID1

  • —块磁盘对应一块额外镜像盘
  • 真实空间利用率仅5O%
  • 容错能力强

RAID0+1

  • 结合了RAIDo和 RAID 1
  • 真实空间利用率仅50%
  • 容错能力强,写入带宽好

2.2、数据库

概览

关系(Relation)又是什么?

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

关系代数=对关系作运算的抽象查询语言交、并、笛卡尔积……

关系=集合=任意元素组成的若干有序偶对

SQL=一种DSL=方便人类阅读的关系代数表达形式,反应了事物间的关系

关系型数据库特点

关系型数据库是存储系统,但是在存储之外,又发展出其他能力

image-20230218104140783

非关系型数据库特点

非关系型数据库也是存储系统,但是一般不要求严格的结构化

image-20230218104230125

2.3、数据库vs经典存储

结构化数据管理

image-20230218104507413

事务能力

image-20230218104535587

复杂查询能力

Q:写入数据之后,想做很复杂的查询怎么办?

Example:请查询出名字以xiao开头,且密码提示问题小于10个字的人,并按性别分组统计人数

image-20230218104713000

2.4、数据库使用方式

image-20230218104747923

3、主流产品剖析

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

3.1、单机存储

概览

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

本地文件系统

Linux经典哲学:一切皆文件

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

文件系统接口:文件系统繁多,如Ext2/3/4,sysfs,rootfs等,但都遵循VFS的统一抽象接口

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

image-20230218105243597

key-value存储

世间一切皆key-value—— key是你身份证,value是你的内涵: )

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

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

拳头产品:RocksDB

image-20230218105414344

3.2、分布式存储

概览

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

分布式文件系统

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

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

HDFS核心特点:

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

image-20230218105706880

分布式对象存储

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

Ceph的核心特点:

  • 一套系统支持对象接口、块接口、文件接口,但是一切皆对象
  • 数据写入采用主备复制模型
  • 数据分布模型采用CRUSH算法(HASH+权重+随机抽签)

image-20230218105859899

3.3、单机关系型数据库

概览

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

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

关系型数据库

商业产品Oracle称王,开源产品MySQL & PostgreSQL称霸

image-20230218110148488

3.4、单机非关系型数据库

非关系型数据库

MongoDB、Redis、Elasticsearch三足鼎立

image-20230218114559688

image-20230218114723866

3.5、分布式数据库

image-20230218114841554

解决容量问题

image-20230218114907244

解决弹性问题

image-20230218114934664

解决性价比问题

image-20230218114956441

More to Do

image-20230218115016596

4、新技术演进

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

4.1、新架构?

image-20230218115457068

4.2、新硬件?

image-20230218115436692

4.3、新理论?

image-20230218115451823

4.4、人工智能?

image-20230218115444399

总结

image-20230218115516724