块级与文件级存储

Block Level vs File Level Storage

我对这些术语有一些看法:块级存储文件级存储。有人可以解释为什么一个比另一个好吗?

也许通过示例和算法细化理解起来真的很有趣。

比如AWS里面的文章说AWS EBS可以做数据库,但是为什么比File Level好呢?

我喜欢这样想:

  • Amazon Elastic Block Store (Amazon EBS) 是块存储。它就像插入计算机的 USB 磁盘一样。信息存储在磁盘上的特定块中,操作系统的工作是跟踪每个文件使用了哪些块。这就是 Windows 和 Linux 之间磁盘格式不同的原因。
  • Amazon 弹性文件系统 (Amazon EFS) 是一个 文件系统 ,即 网络附加存储 。它就像公司提供给员工用于在文件服务器上存储数据的 H: 驱动器(或其他任何东西)。您 在您的计算机上像驱动器一样装载 文件系统,但是您的计算机将文件发送到文件服务器而不是管理块分配本身。
  • Amazon 简单存储服务 (Amazon S3) 是 对象存储。你给它一个文件,它把它存储为一个对象。你要这个东西,它会把它还给你。通过 API 访问 Amazon S3。它 安装为磁盘。 (有一些实用程序可以将 S3 安装为磁盘,但它们实际上只是向后端发送 API 调用并使其表现得像磁盘。)

当谈到修改文件时,它们的行为不同:

  • 块存储(如 USB 磁盘)上的文件可以由操作系统修改。例如,更改一个字节或将数据添加到文件末尾。
  • 文件系统(如 H: 驱动器)上的文件可以通过向文件服务器发出请求来修改,就像块存储一样。
  • 对象存储(如 S3)中的文件不可变且无法修改。您可以上传另一个同名文件,该文件将替换原始文件,但您不能修改文件。 (上传的文件名为 objects。)

Amazon S3 具有其他独特属性,例如通过 Internet 提供对象、提供多个 存储空间 类 用于低成本备份和 当对象 created/deleted 时触发事件 。它是应用程序的构建块,而不是用于存储数据的简单磁盘。此外,您可以存储的数据量没有限制。

数据库

数据库喜欢以自己的格式存储数据,这样可以快速访问数据。传统数据库在普通服务器上构建 运行,他们希望快速访问,因此他们将数据存储在直连磁盘上,即 块存储 。 Amazon RDS 使用 Amazon EBS 进行块存储。

网络附加文件系统会减慢数据库的磁盘访问速度,从而降低性能。然而,有时这种权衡是值得的,因为管理网络附加存储 (SAN) 比不断向每个单独的服务器添加磁盘更容易。

一些现代的 'databases'(如果您可以使用该术语)如 Presto 可以直接访问 Amazon S3 中的数据,而无需将数据加载到数据库中。因此,数据库处理层与数据层分离。这使得访问历史存档数据变得更加容易,因为它不需要导入到数据库中。