Azure Block Blob 和 Page Blob 的区别? ?

当我最近开始与 Windows Azure打交道时,我遇到了这样一种情况: 在 Block BlobPage Blob之间选择哪一个。我目前正在上传一些文本,csv 或 dat 文件到一个 blob 存储,然后使用我的 C # 程序为它做一个 MapReduce程序。是的,我已经通过了 文章

但是从他们那里得不到一个清晰的想法。简而言之,Block Blob vs Page Blob。任何帮助都将是感激的。

78719 次浏览

这些差异在 msdn,给你.TL; DR 上有很好的记录:

  • Block blobs 用于离散存储对象,比如 jpg、日志文件等,通常在本地操作系统中将它们视为文件。麦克斯。大小 200GB4.77 TB。常规(非高级)存储。
  • Page blobs 用于随机读/写存储,比如 VHD (实际上,Page blobs 用于 Azure 虚拟机磁盘)。麦克斯。尺寸8TB。普通存储和高级存储都支持。

注意: 高级页面 blobs 有特定的大小(不像普通页面 blobs,它可以是任意大小,最大可达8TB)。

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

根据选择的页块大小(从120 IOPS + 25 MB/s@32 GB 到7500 IOPS + 250 MB/s@2048 GB 和4096 GB) ,高级存储提供有保证的 IOPS 和吞吐量。关于 IOPS + 吞吐量的具体细节记录在 给你文档中。

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

Pageblob 是为随机读写操作而优化的512字节页面的集合。若要创建页 blob,请初始化页 blob 并指定页 blob 将增长的最大大小。若要添加或更新页 blob 的内容,可以通过指定偏移量和对应于512字节页边界的范围来编写一个或多个页。对 page blob 的写操作只能覆盖一个页面、一些页面或者最多4MB 的 page blob。对页 blob 的写操作就地发生,并立即提交到 blob。页 blob 的最大大小为1TB。

档号: https://learn.microsoft.com/en-us/rest/api/storageservices/fileservices/Understanding-Block-Blobs--Append-Blobs--and-Page-Blobs

Davids 的回答 指出了页面和块的区别,但是也有 附加 Blobs。简而言之:

  • Block Blobs : 对于 没有使用随机读写操作的大型对象,例如图片
  • PageBlobs : 优化了随机读写操作,例如 VHD
  • Append Blobs : 为追加操作进行了优化

延伸阅读: 理解块 blob、附加 blob 和页 blob

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

网页污点
页块用于保存大小不超过8TB 的随机访问文件。Pageblob 主要用作 VHD 的后台存储,VHD 用于为 Azure 虚拟机(Azure VM)提供持久的磁盘。它们被命名为 page blobs,因为它们提供对512字节页面的随机读/写访问。

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

参考: Https://learn.microsoft.com/en-us/rest/api/storageservices/fileservices/understanding-block-blobs——append-blobs——and-page-blobs

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

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

何时使用

Azure Files 提供 SMB 接口、客户端库和 REST 接口,该接口允许从任何地方访问存储的文件。您希望将一个应用程序“提升和转移”到已经使用本机文件系统 API 的云中,以便在它和运行在 Azure 中的其他应用程序之间共享数据。

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

Azure 磁盘提供客户端库和 REST 接口,允许数据持久存储和从附加的 VHD格式访问。您希望提取和转移使用本机文件系统 API 向持久磁盘读写数据的应用程序。

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

布洛克 · 布洛普

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

附加 Blob

  • 增加了 Azure 数据湖
  • 可以在单个操作中添加最多4MB 的块
  • 使用显著增加-云日志、物联网数据、分布式系统同步等

呼叫 Blob

  • 为随机读写操作优化的512字节页的集合
  • 页面对齐随机读写 IaaS 磁盘,事件集线器,块级备份