课程学习之认识存储 | 豆包MarsCode AI刷题

78 阅读3分钟

存储系统-系统概览

什么是存储系统?

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

涉及到的对象

首先,这个存储系统是要让用户(User)使用的,同时,系统最终的目的是要把数据持久化写到存储介质(Medium)上。我们还可能和内存(Memory)打交道,要去设计很多性能高效的、操作方便的内存数据结构,帮助存储系统达到更好的性能。开发一个存储系统时,还要去关注网络编程(Network),如果只是开发单机应用软件,它的应用场景就非常有限,应对不了需要超大、海量存储的场景,也应对不了带有一些计算逻辑的应用场景,毕竟单个节点单机上的CPU和它的存储硬件总是有限的。所以,很多时候需要去通过网络把原有单机系统发展成分布式系统,满足不同场景的需求。

系统特点

作为后端软件的底座,性能敏感,对性能要求高;代码必须是简单的,对IO分支的处理上,需要考虑各种异常;软件架构容易受硬件影响。

存储器层级结构

image.png 在中间层,能不能有一种兼顾持久化介质、内存介质特点的存储器呢?答案是有的,就是Persistent Memory。

RAID技术

RAID技术通过将多个磁盘组合并采用不同的数据分布策略,实现了存储系统性能的提升、成本效益的增加以及容错能力的增强,从而为单机存储提供了高性能、高性价比和高度可靠的数据存储解决方案。

数据库

关系是什么?

  1. Edgar F. Codd于1970年提出“关系模型”。
  2. 关系 = 集合 = 由任意元素组成的若干有序偶对,反映了事物间的关系。
  3. 关系代数是对关系作运算的抽象查询语言,包括交、并、笛卡尔积等。
  4. SQL是一种DSL(领域特定语言),是便于人类阅读的关系代数表达形式。

数据库与经典存储的区别、差异

左侧:关系型数据库管理

  • 数据以表格形式组织,每个字段(如id, user_name, password, password_hint)都有固定的大小。

  • 例如,第一个条目为:

    • id: 0
    • user_name: xiaoming (占用8字节)
    • password: helloworld (占用10字节)
    • password_hint: coding (占用4字节)

右侧:自定义文件管理结构

  • 数据按实际长度存储,不限制大小。

  • 第一个条目的格式为:

    • Length:36 (表示整个条目的总长度)
    • Length:8 (user_name的长度)
    • xiaoming (用户名)
    • Length:10 (password的长度)
    • helloworld (密码)
    • … (其他字段以此类推)

这两种方法各有优缺点,关系型数据库适合结构化数据的管理,而自定义文件结构则更灵活,适用于非结构化或可变长度的数据。 经典存储系统无时不刻都要做byte级别的运算,读写非常麻烦。