存储系统与数据库(入门级参考)/豆包MarsCode AI刷题

83 阅读4分钟

存储系统

存储系统概念

存储系统是计算机系统中用于保存、管理和检索数据的基础设施,用于提供数据的持久化存储、管理和访问功能。它是计算机的核心组件之一,与处理器、内存和网络一起支持信息的存储和传输。

存储系统的功能

  • 数据持久化:保障数据在断电或系统故障后能够恢复。
  • 数据管理:支持多种存储模型(文件、块、对象)和访问协议。
  • 容量扩展:可以根据需求增加存储容量。
  • 性能优化:如缓存机制、数据分片和负载均衡。
  • 容错机制:提供数据冗余和副本以保障可靠性。

存储技术

RAID

(Redundant Array of Inexpensize Disks)

通过将多个硬盘组合在一起,实现数据的冗余和性能优化

关键目标

  • 性能提升:通过并行读写操作提高磁盘的读写速度。
  • 数据冗余:通过数据复制或奇偶校验提高容错能力。
  • 容量优化:组合多个磁盘的存储容量,提高存储效率。

工作原理

RAID通过以下方式管理磁盘阵列:

  • 条带化(Striping) :将数据分块并分布存储在不同磁盘上,提高读写速度。
  • 镜像(Mirroring) :在多个磁盘上存储相同的数据,以提供冗余。
  • 奇偶校验(Parity) :通过计算校验数据,在发生磁盘故障时重建丢失的数据。

RAID 0

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

RAID 1

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

RAID 0+1

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

关系是什么(Relation)

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

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

  • 交,并,笛卡尔集

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

关系型数据库

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

  • 对结构化数据友好
  • 支持事物(ACID)
  • 支持复杂查询语言(SQL)

非关系型数据库

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

  • 半结构化数据友好
  • 可能支持事务
  • 可能支持复杂查询语言
  • Key-Value 是非关系型数据库的一种存储特性,与其是否是单机存储无直接关联。

事务具有

Atomicity:事务内的操作要么全做,要么不做

Consistency:事务执行前后,数据的状态是一致的

Isolation:可以隔离多个并发事务,避免影响

Durability:事务一旦提交成功,数据保证持久性

主流存储产品

单机存储

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

  • 本地文件系统
  • Redis 单机模式
  • Berkeley DB
分布式存储

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

  • 分布式文件系统

    • HDFS

      • 堪称大数据时代的基石
      • 支持海量的数据存储
      • 高容错
      • 弱POSIX语义
      • 使用普通的X86服务器,性价比高
  • 分布式对象存储

    • Ceph(也是分布式文件系统)

      • 一切皆对象
      • 数据写入采用主备复制模型
      • 数据分布模型采用CRUSH算法
单机关系型数据库
  • MySQL
  • PostgreSQL
通用组件
  • Query Engine
  • Txn Manage
  • Lock Manage
  • Storage Engine
  • Replication
关键内存数据结构
  • B—Tree
关键磁盘数据结构
  • RdoLog
单机非关系型数据库
  • MongoDB
  • Redis(单机模式,它还有集群模式,可以做分布式存储)
  • Elasticsearch
分布式数据库

为什么要分布式架构

  • 单机数据库的局限性

    • 容量限制: 单机数据库存储空间受硬件资源(如磁盘、内存)的限制,无法满足大规模数据存储需求。

    • 性能瓶颈

      单机数据库的处理能力有限,难以应对高并发和大数据量的查询或写入需求。

    • 可靠性不足: 单点故障(SPOF,Single Point of Failure)问题严重,硬件故障可能导致数据库服务中断。

  • 分布式架构的优势

    通过存储池化实现弹性扩展

    • 存储池化:将多个存储节点的资源整合成一个逻辑存储池,动态分配存储和计算资源。
    • 水平扩展(Scale-Out) :通过增加节点来扩展容量和性能,而不是受限于单机硬件升级(垂直扩展,Scale-Up)。
    • 缩容:根据需求移除冗余节点,降低运营成本。

    解决弹性问题

    • 自动扩容:在数据量或并发请求增长时,通过增加节点无缝扩展系统。
    • 自动缩容:当需求下降时,减少资源使用,提升性价比。

    高性价比

    • 使用多台廉价商用服务器(Commodity Hardware)代替昂贵的高端服务器。
    • 减少因单点故障导致的服务停机损失。