导出 (0) 打印
全部展开
此主题尚未评级 - 评价此主题

将数据迁移到 Windows Azure Blob 存储区

注:本页面内容可能不完全适用中国大陆地区运营的 Windows Azure服务。如要了解不同地区 Windows Azure 服务的差异, 请参考本网站.

Windows Azure Blob 服务使应用程序能够存储大量非结构化的文本或二进制数据,如视频、音频和图像文件。Blob 存储区包含零个或更多 blob 容器,一个容器包含零个或更多 blob。Blob 是由二进制数据组成的任意单一实体,如文件或图像。

Blob

存储服务提供两种类型的 blob:块 Blob 和页 Blob。

  • 块 Blob 由块组成,其中每个块由块 ID 标识。您可以按以下方式创建或修改块 blob:编写一组块(或块的列表)并按块 ID 提交它们。每个块的大小可以不同,最大为 4 MB。块 blob 的最大大小为 200 GB,并且块 blob 最多只能包含 50,000 个块。块 Blob 允许您插入、删除和重新排列 blob 中的块,还允许同时上载 blob 的多个块。它的设计目标是高效上载和下载大型 blob。如果应用程序存储由多个读取器并发访问的大文件,请考虑使用块 blob。

  • 页 blob 是已针对随机读写操作进行优化的 512 字节的页的集合。页 blob 中的每一页都是使用距 blob 开头的偏移量引用的。要添加或更新页 blob 的内容,您需要通过指定偏移量和对齐 512 字节页边界的范围来写入一个或多个页。对页 blob 的写操作可以只覆盖一页、某些页或覆盖达到 4 MB 限制的页 blob。对页 blob 的写操作就地进行并立即提交给 blob。blob 的最大大小为 1 TB,且 blob 大小必须为 512 字节的倍数。

有关 Blob 存储的详细概述,请参阅 Windows Azure 门户

作者:Sreedhar Pelluru
供稿人:James Podgorskiani
审校:Christian Martinez、Valery Mizonov、Kun Cheng、Steve Howard

块 Blob 与页 Blob

通过块 blob 可以高效上载大型 blob,最大达 200 GB。它们经过功能优化,可帮助您在网络上管理大文件,其中一个功能是可以同时上载和下载多个块并在提交时确定顺序。而页 blob 则针对随机读写访问进行了优化,每个页都对齐 512 字节边界。

以下是一些使用页 Blob 的情形:

  • 一个应用程序访问基于范围更新的文件。该应用程序将页 blob 视为一个文件,并使用分范围的写入来更新 blob 中发生更改的部分。页 blob 更新可获取独占的写访问权限。

  • 对将页 blob 视为圆形缓冲区的应用程序自定义日志记录。填充页 blob 时,应用程序可以从 blob 结构的开头开始写入数据。

迁移注意事项

迁移您的应用程序以使用 Azure Blob 存储区时,请考虑以下各种因素:

  • 什么类型的数据可以存储在 Blob 存储区中?

  • 如何从已迁移的应用程序访问 Blob 存储区中存储的数据?

  • 该存储区是否支持已迁移应用程序的高可用性、可伸缩性、灾难恢复和安全性要求?

  • 如何将现有数据上载到 Blob 存储区?

数据注意事项

在重新设计应用程序以使用 Blob 存储区前,请首先评估 Blob 存储区对您要尝试存储的数据是否合适。Blob 存储区设计用于存储大量非结构化文本或二进制数据,如文档、图片、音频和视频。

Blob 存储区还可以用于存储您的应用程序所依赖的文件/二进制文件。通过在 blob 中存储相关文件,您可以更新相关文件而无需更新或上载整个应用程序包 (.Cspkg) 文件。它还允许您在单独的 blob 中存放不同版本的相关文件,并允许应用程序动态加载特定于某个版本的相关文件。

Blob 存储区与 Windows Azure SQL Database

Windows Azure SQL Database 支持 varbinary(max) 数据类型,以支持在数据库中存储大型对象。如果您的应用程序需要在 SQL Server 数据库中存储二进制大型对象(如图片、音频和视频)并访问它们,请在将应用程序迁移到 Windows Azure 平台时确定是使用 SQL Database 还是 Blob 存储区。

如果您想要在 SQL Server 数据库中使用 varbinary 列的 FILESTREAM 属性来存储超过 2 GB 的文件,请在迁移到 Azure 平台时考虑使用 Blob 存储区,因为 SQL Database 目前不支持 FILESTREAM。甚至在文件小于 2 GB 且不使用 SQL Server 的 FILESTREAM 功能时,也可以根据应用程序的性质考虑使用 Blob 存储区,因为这样可能会更便宜、可伸缩性更强,而且可以通过使用 REST API 的任意客户端进行访问。

在将大型对象存储在 Blob 存储区后,可以在 SQL Database 实例的表列中存储对 blob 的引用。当前 SQL Database 实例的最大大小为 150 GB。因此,如果您将大型对象存储在 SQL Database 实例中,可能会空间不足。Blob 存储区的最大大小为 100 TB,这实际上是 Windows Azure 存储区的大小限制。blob 存储区中每个 blob 的最大大小为 200 GB(块 Blob)或 1 TB(页 Blob)。

例如,如果您要迁移具有图形资源(如图像)的本地部署 Web 应用程序,可以将图像的 URL 存储在 SQL Database(或表存储区)中并使客户端程序检索 URL 和显示 URL 的图像。

SQL Database - Blob

如果将 blob 移出 SQL Database 并且只在 Blob 存储区中存储对 blob 的引用,那么您的应用程序的性能可能会受到影响,因为客户端应用程序首先会查询 SQL Database 实例来确定 blob 的位置,然后查询 Blob 存储区来获取 blob 数据(如图像或大型对象)。请注意,因为不可能同时备份/还原 SQL Database 和 Blob 存储区的数据,因此 Blob 存储区备份和 SQL Database 备份之间的事务一致性无法保证。

另一个需要注意的事项是应用程序对数据存储区执行的事务数。针对 SQL Database 执行的事务不单独收费,但是针对 Windows Azure 存储区执行的事务会进行收费。很少访问的数据适合使用 Windows Azure 存储区,而将经常访问的数据存储在 SQL Database 中更划算一些。

数据访问注意事项

用任意编程语言编写、在任意操作系统上运行的客户端应用程序都可以使用 HTTP(S) REST API 访问 Azure Blob 存储区。也可以使用某些针对特定操作系统和编程语言的客户端库来访问 Blob 存储区。Windows Azure 开发人员中心上提供了一些用于 .NET、Node.js、Java 和 PHP 的库。例如,.NET 存储客户端库提供了包含 REST API 的强类型化 .NET 包装,可以为 .NET 开发人员提供开发便利。

如果您决定将应用程序使用的非结构化数据存储在 Windows Azure 平台上的 Blob 存储区中,需要重写部分代码,以便使用存储区客户端库来访问数据。

Blob 存储区的好处

将数据存储在 Azure Blob 存储区中,可以带来以下几大好处:

  • 可伸缩性:Azure Blob 存储区通过 Windows Azure CDN 支持高度可伸缩的 blob 分布系统。CDN 提供多个服务器的热 blob 以进行扩展和满足您的应用程序的流量要求。此外,系统是高度可用和持久的。

  • 高可用性/容错:存储在 Windows Azure 上的 Blob 将被复制到同一数据中心中的三个位置,以灵活应对硬件故障。此外,与所有 Azure 存储服务一样,您的数据还将被复制到不同的故障域以提高可用性

  • 灾难恢复:Windows Azure blob 还会被复制到同一个大洲的两个不同地理位置的数据中心,以便在发生重大灾难时提供额外的数据可持续性。

  • 安全性:对 Windows Azure 存储服务的每个请求必须进行身份验证,除非它是针对某个公共容器资源的匿名请求。有关详细信息,请参阅验证您的存储帐户的访问权限

  • 通过任意客户端从任意位置访问数据:可以使用 REST API 通过 HTTP 访问 Windows Azure Blob 存储区。任意操作系统上的任意客户端应用程序均可以使用 REST 访问 Blob 存储区。

将现有数据迁移到 Azure Blob 存储区

在重新设计您的应用程序以利用高度可伸缩的 Blob 存储区后,您可能需要将现有数据从文件系统或 SQL Server 数据库迁移。为此,您可以使用 HTTP(S) REST API 或 .NET 客户端库来编写访问 Blob 存储区的代码,或者使用 Red Gate Software 的 Cloud Storage Studio 之类的工具。


生成日期:

2013-10-23
本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈

社区附加资源

添加
显示:
© 2014 Microsoft. 版权所有。