Azure Block Blob 和 Page Blob 之间的区别?

Differences between Azure Block Blob and Page Blob?

当我最近开始与 Windows Azure 混在一起时,我遇到了一种情况,在 Block BlobPage Blob 之间选择哪个。我目前正在将一些文本、csv 或 dat 文件上传到 blob 存储,然后使用我的 C# 程序为其执行 MapReduce 程序。是的,我经历了 article.

但无法从他们那里得到明确的想法。简而言之,Block Blob vs Page Blob。任何帮助将不胜感激。

差异在 msdn 上有很好的记录,here。长话短说:

  • Block blob 用于离散存储对象,如 jpg、日志文件等,您通常将其视为本地 OS 中的文件。最大限度。大小 200GB 4.77TB。仅限常规(非高级)存储。
  • Page blob 用于随机 read/write 存储,例如 VHD(实际上,页面 blob 用于 Azure 虚拟机磁盘)。最大限度。大小 8TB。常规和高级存储均支持。

注意:高级页面 blob 具有特定的大小(不同于常规页面 blob,它可以是任何大小,最高可达 8TB)。

  • 32GB
  • 64GB
  • 128GB
  • 512GB
  • 1024GB
  • 2048GB
  • 4096GB

高级存储提供有保证的 IOPS 和吞吐量,具体取决于所选的页面 blob 大小(从 120 IOPS+25MB/s @ 32GB 到 7500 IOPS+250MB/s @ 2048GB 和 4096GB)。有关 IOPS 的特定详细信息+吞吐量详细信息已记录 here

块 blob 让您可以高效地上传大型 blob。块 blob 由块组成,每个块都由块 ID 标识。您可以通过编写一组块并通过块 ID 提交它们来创建或修改块 blob。每个块可以有不同的大小,最大为 100 MB(使用 2016-05-31 之前的 REST 版本的请求为 4 MB),一个块 blob 最多可以包含 50,000 个块。因此,块 blob 的最大大小略大于 4.75 TB(100 MB X 50,000 块)。对于 2016-05-31 之前的 REST 版本,块 blob 的最大大小略大于 195 GB(4 MB X 50,000 块)。

页面 blob 是针对随机读写操作优化的 512 字节页面的集合。要创建页 blob,您需要初始化页 blob 并指定页 blob 将增长的最大大小。要添加或更新页面 blob 的内容,您可以通过指定偏移量和与 512 字节页面边界对齐的范围来写入一个或多个页面。对页面 blob 的写入可以仅覆盖一个页面、一些页面或最多 4 MB 的页面 blob。对页 blob 的写入就地发生并立即提交给 blob。页 blob 的最大大小为 1 TB。

参考:https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/Understanding-Block-Blobs--Append-Blobs--and-Page-Blobs

指出页和块 blob 之间的区别。然而,也有 Append Blobs。简而言之:

  • Block Blob:对于使用随机读写操作的大型对象。 e. G。图片
  • Page Blob:针对随机读写操作进行了优化。 e. G。 VHD
  • 附加 Blob:针对附加操作进行了优化。 e. G。日志

进一步阅读:Understanding block blobs, append blobs, and page blobs

块 blob 块 blob 用于保存大小不超过 ~5 TB(50,000 个 100 MB 的块)的文本或二进制文件。块 blob 的主要用例是存储从头到尾读取的文件,例如网站的媒体文件或图像文件。它们被命名为 block blobs 因为大于 100 MB 的文件必须作为小块上传,然后合并(或提交)到最终的 blob 中。

页面 blob
页 blob 用于保存最大 8 TB 的随机访问文件。页 blob 主要用作 VHD 的后备存储,用于为 Azure 虚拟机 (Azure VM) 提供持久磁盘。它们被命名为 page blobs,因为它们提供对 512 字节页面的随机 read/write 访问。

附加 blob
追加 blob 由类似块 blob 的块组成,但它们针对追加操作进行了优化。这些经常用于将来自一个或多个源的信息记录到同一个 blob 中。例如,您可以将所有跟踪日志记录写入多个 VM 上应用程序 运行 的同一个附加 blob。单个追加 blob 最大可达 195 GB

参考: https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/Understanding-Block-Blobs--Append-Blobs--and-Page-Blobs

https://docs.microsoft.com/en-us/learn/modules/connect-an-app-to-azure-storage/2-explore-azure-storage

来自微软 块 blob 包含可帮助您通过网络管理大型文件的功能。使用块 blob,您可以并行上传多个块以减少上传时间。每个块都可以包含一个 MD5 哈希来验证传输,因此您可以跟踪上传进度并根据需要重新发送块。

何时使用

Azure 文件提供 SMB 接口、客户端库和 REST 接口,允许从任何地方访问存储的文件。您想要 "lift and shift" 一个已经使用本机文件系统 API 与 Azure 中的其他应用程序 运行 共享数据的云应用程序。

Azure Blobs 提供客户端库和 REST 接口,允许在块 blob 中大规模存储和访问非结构化数据。

Azure 磁盘提供客户端库和 REST 接口,允许从连接的虚拟硬盘持久存储和访问数据。您想提升和转移使用本机文件系统 API 来读取数据和将数据写入永久性磁盘的应用程序。

从我的角度来看,另一个答案是,

块块

  • 由块列表定义
  • 主要用于存储“对象”
  • 50K 个块,每个最大 100 MB = 4.75 TB
  • 大部分对象存储场景文档、图片、视频等

追加 Blob

  • 已为 Azure 数据湖添加
  • 一次操作最多可以添加 4 MB 的块
  • 使用量显着增加——云日志、物联网数据、分布式系统同步等

页面 Blob

  • 针对随机读写操作优化的 512 字节页面集合
  • 页面对齐随机读写 IaaS 磁盘、事件中心、块级备份