我对这些术语有一些看法: block 级存储 和文件级存储。有人可以解释为什么一个比另一个更好吗?
也许通过示例和算法细化理解它会非常有趣。
比如AWS里面的文章说AWS EBS可以做数据库,但是为什么比File Level好呢?
最佳答案
我喜欢这样想:
- Amazon Elastic Block Store (Amazon EBS) 是 block 存储。它就像插入计算机的 USB 磁盘一样。信息存储在磁盘上的特定 block 中,操作系统的工作是跟踪每个文件使用了哪些 block 。这就是磁盘格式在 Windows 和 Linux 之间有所不同的原因。
- Amazon 弹性文件系统 (Amazon EFS) 是一个文件系统,它是网络附加存储。它就像公司为员工提供的用于在文件服务器上存储数据的
H:
驱动器(或其他)。您将文件系统像驱动器一样安装在您的计算机上,但您的计算机将文件发送到文件服务器,而不是自行管理 block 分配。 - Amazon 简单存储服务 (Amazon S3) 是对象存储。你给它一个文件,它把它存储为一个对象。你要这个东西,它会把它还给你。 Amazon S3 通过 API 访问。它未安装为磁盘。 (有一些实用程序可以将 S3 安装为磁盘,但它们实际上只是将 API 调用发送到后端并使其表现得像磁盘。)
当谈到修改文件时,它们的行为不同:
- block 存储(如 USB 磁盘)上的文件可以由操作系统修改。例如,更改一个字节或将数据添加到文件末尾。
- 可以通过向文件服务器发出请求来修改文件系统(如
H:
驱动器)上的文件,这与 block 存储非常相似。 - 对象存储(如 S3)中的文件不可变且无法修改。您可以上传另一个同名文件,该文件将替换原始文件,但您不能修改文件。 (上传的文件称为对象。)
Amazon S3 具有其他独特的属性,例如通过 Internet 提供对象、为低成本备份提供多个存储类以及创建对象时触发事件/删除。它是应用程序的构建 block ,而不是用于存储数据的简单磁盘。此外,您可以存储的数据量没有限制。
数据库
数据库喜欢以自己的格式存储数据,这样可以快速访问数据。传统数据库是为在普通服务器上运行而构建的,它们希望快速访问,因此它们将数据存储在直接连接的磁盘上,这些磁盘是 block 存储。 Amazon RDS 使用 Amazon EBS 进行 block 存储。
网络附加文件系统会减慢数据库的磁盘访问速度,从而降低性能。然而,有时这种权衡是值得的,因为管理网络附加存储 (SAN) 比不断向每个单独的服务器添加磁盘更容易。
一些现代“数据库”(如果您可以使用该术语)如 Presto 可以直接访问 Amazon S3 中的数据,而无需将数据加载到数据库中。因此,数据库处理层与数据层分离。这使得访问历史存档数据变得更加容易,因为它不需要导入到数据库中。
关于amazon-web-services - block 级与文件级存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61533516/