存储与数据库|青训营

2023年 8月 15日 35.5k 0

1.数据的生命周期

1.1 数据的产生

​ 以注册为例,注册时填写了用户名和密码等数据,然后点击了注册按钮,数据就向服务器发送过去,这样,数据就从无到有地产生了

1.2 数据的流动

​ 产生的数据被打包为一条用户注册数据,通过网络发送到后端服务器,到达服务器后经过处理再被发送到数据库中,形成持久化数据;

​ 在数据库系统后,还可能存在更多的存储系统,数据会继续流动到这些系统中

1.3 数据的持久化

​ 数据到达数据库后,数据库首先检验数据是否合法,通过检验后,数据在内存中,通过高效的数据结构经过计算,形成可以被持久化的数据结构,最好以寿命和性能友好的方式写入存储介质(硬件),形成持久化数据.

2.存储和数据库

2.1 存储系统

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

​ 系统特点:性能敏感,容易受硬件影响

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

2.2 RAID技术

​ RAID技术是为了使单机存储系统做到高性能,高性价比和高可靠性

​ 出现的背景:

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

2.2.1 RAID 0

  • 多块磁盘简单组合
  • 数据条带化存储,提高磁盘带宽
  • 没有额外的容错设计

2.2.2 RAID 1

  • 一块磁盘对应一块额外的镜像磁盘
  • 空间利用率仅有50%
  • 容错能力强

2.2.3 RAID 0+1

​ RAID 0和 RAID 1是两个极端,通过组合来组成适合的方案

  • 结合了 0 和 1,根据需求组成不同方案

2.3 数据库

数据库和存储系统不一样吗?

2.3.1 关系型数据库

​ 关系反映了事物(实体)间的关系,以关系代数作为运算的抽象查询语言

​ SQL是一种方便人们阅读的关系代数的表达方式

​ 关系型数据库是存储系统,但相较于存储系统,它结构化数据友好,支持事物并支持复杂查询语言(SQL等)

2.3.2 非关系型数据库

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

​ 半结构化数据友好,可能支持事物,可能支持复杂查询语言

2.3.3 数据库优点

  • 数据库与经典存储的区别是结构化管理系统,数据写入关系型数据库时,以表的形式管理(自动),而经典存储需要自信定义结构,是分复杂

  • 数据库支持事物,具有很大的优越性

  • 数据库支持复杂查询能力

3. 主流产品刨析

3.1 单机存储

​ 单机存储不涉及网络交互

​ 单机存储系统有:本地文件系统和key-value存储

3.1.1 本地文件系统

​ Linux的经典哲学:一切皆文件

  • 文件系统管理单元:文件
  • 文件系统接口︰文件系统繁多,如Ext2/3/4,sysfs,rootfs等,但都遵循VFS的统一抽象接口Linux文件系统的
  • 两大数据结构:Index Node & Directory Entry
    • lndex Node:记录文件元数据,如id、大小、权限、磁盘位置等,inode是一个文件的唯一标识,会被存储到磁盘上,inode的总数在格式化文件系统时就固定了
    • Directory Entry:记录文件名、inode指针,层级关系(parent)等,与inode的关系是N:1(hardlink实现)

3.1.2 Key-value 存储

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

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

3.2 分布式存储

​ 分布式存储:在单机存储基础上实现了分布式协议,设计大量网络交互

3.2.1 分布式文件系统

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

核心特点:

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

3.2.2 分布式对象存储

​ Ceph: 开源分布式系统里的万金油

核心特点:

  • 支持对象接口,块接口,文件接口,但一切皆对象
  • 数据写入采用主备复制模型
  • 数据分布模型采用CRUSH算法,核心思想是HASH+权重+随机抽签确定存储服务器

3.3 单机关系型数据库

​ 不涉及网络交互的数据库系统,但事务可以在单机内执行,也可能通过网络交互实现分布式事务

​ 在商业中,Oracle称王,开源产品MySQL和PostgreSQL称霸

​ 关键内存数据结构:B-Tree,B+ -Tree和LRU List等

​ 关键磁盘数据结构:RedoLog,Page等

3.4 单机非关系型数据库

​ MongoDB,Redis,Elasticsearch三足鼎立

​ 关系型数据库一般直接使用SQL交互,而非关系型数据库交互方式各不相同,没有约束关系后数据结构千奇百怪,schema相对灵活,非关系型数据库也在尝试支持SQL和事务

3.5 分布式数据库

​ 单机数据库遇到的问题有:容量问题,弹性问题和性价比问题,因此引入了分布式数据库

  • 单点容量有限,受硬件限制,使用池化技术,将存储节点池化,动态扩缩容量,与网络交互
  • 可以换速更改硬件设备,将数据迁移到性能更好的(或更差的)硬件上,弹性好
  • 同样,使用共享存储池,提高性价比

​ 分布式数据库面临的问题:

  • 单写而不是多写
  • 从磁盘弹性到内存弹性
  • 分布式事务优化

4.新技术

  • SPDK---Bypass OS kernel

  • AI相关技术,如AI根据情况决策,使用行存,列存还是行列混存,动态决策

  • 高性能硬件

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论