销售电话: 1-800-867-1380

将数据迁移到 Azure 表存储区

更新时间: 2014年5月

Azure 表存储在云中提供了一个可伸缩性极高的非关系结构化存储。Azure 表是实体(行)的集合。一个实体最多可以具有 255 个属性(列),每个属性都具有名称、类型和值特性。表中的每个实体都有三个保留属性:PartitionKey、RowKey 和 Timestamp。表存储使用分区键进行分区或将实体分发到 Azure 存储节点上。表存储中的一个分区包含具有相同分区键的多个实体。行键唯一标识分区内的实体,时间戳是用于跟踪更改的系统维护的只读属性。表存储不要求你为表中的实体定义架构。一个表可以具有包含不同属性集的多个实体。有关表存储的详细概述,请参阅 Azure 门户

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

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

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

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

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

  • 如何将现有数据上载到表存储中?

在迁移过程中要执行的第一步是确定表存储是否适合用于存储你的内部应用程序使用的数据。针对存储满足以下要求的数据对表存储进行了优化。

  • 数据是结构化的并且通常以表格格式存储。

  • 数据是非关系数据。你计划存储在一个表中的数据与其他表中的数据不相关。Azure 表存储不支持通过在数据库中使用引用完整性之类的机制来存储关系数据。针对存储非关系结构化数据对表存储进行了优化。

  • 数据不要求服务器端处理。确保你的数据不要求任何服务器端处理,例如关系数据库支持的联接、存储过程和触发器。表存储不支持服务器端处理。但它支持基本操作,例如插入、更新、删除以及具有按 PartitionKey 和 RowKey 的简单服务器端筛选的选择。

  • 数据主要是通过使用查找值或键建立索引和搜索的。分区键标识分区,而行键标识分区内的唯一行。分区键和行键一起唯一标识表中的实体。在你确定表存储适合于存储数据后,评估可用作表的分区键的数据部分。请参阅为 Azure 表存储设计可扩展分区策略

  • 可以通过使用表存储支持的数据类型来存储数据。表存储支持的数据类型包括:String、Byte Array、GUID、DateTime、Int32、Int64、Double 和 Boolean。

  • 数据不要求跨分区事务。表存储不支持分布式事务或跨分区事务;它仅支持实体组事务。因此,选择正确的分区键并在同一个分区中存储相关数据十分重要。例如,你可能希望将与某个客户有关的信息以及该客户所下的订单存储于同一个分区中,以便你可以在单个事务内更新客户信息以及订单信息,从而实现数据完整性。

  • (可选)数据大小可以增长到千兆字节(GB)/百万兆字节(TB)。Azure 表的最大大小为 200 TB,这实际上是针对 Azure 存储(包括表、blob 和队列)的大小限制。

  • (可选)在一行中存储的数据的结构和类型可以不同于表的另一行中存储的数据。Azure 表存储不要求你为行或实体定义固定架构。因此,你可以在同一个表中存储不同类型的数据。例如,可以在同一个表的一行中存储订单信息,而在另一行中存储客户信息。

表存储与 Azure SQL Database 采用相同的方式存储结构化数据。因此,当将应用程序从内部迁移到 Azure 平台时,需要考虑的一个共同问题就是要使用表存储还是使用 SQL Database。SQL Database 和表存储之间的主要区别是:SQL Database 是一种关系数据库管理系统,通过联接、视图、存储过程来提供数据处理功能,而 Azure 表存储则是一种非关系数据存储,不提供 SQL Database 支持的数据处理功能。

如果你的应用程序存储和检索大型数据集,但不要求数据处理,然后 Azure 表存储是更好的选择;如果你的应用程序要求对大型数据集执行数据处理,并且就本质而言是关系型的,则 SQL Database 是更好的选择。但在 SQL Database 和 Azure 表存储之间做出决定之前,需要考虑若干其他因素。有关更详细的比较信息,请参阅Windows Azure 中的数据管理服务概述主题中的比较表。

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

如果你的现有内部应用程序使用结构化的非关系数据,并且你考虑使用表存储在 Azure 平台上存储这些数据,将需要重新编写使用存储客户端库访问数据的代码部分。

将数据存储在 Azure 表存储中时,自动带来以下几大好处:

  • 可伸缩性:Azure 存储系统基于分区的使用模式,在所有存储节点中自动分配分区。例如,如果你的某些分区有较高的流量,则系统会自动分布这些流量来分隔存储节点,这样,流量负荷可以分布到许多服务器上。有关详细信息,请阅读“Azure 存储空间的可伸缩性和性能目标”一文。

  • 高可用性/容错:存储在 Azure 上的表会存储在同一数据中心内的三个位置,以灵活应对硬件故障。你的数据将跨不同的故障域进行复制以增加可用性,而与你所使用的存储服务无关。

  • 灾难恢复:还在属于同一大洲的两个不同地理位置的数据中心之间复制 Azure 表,以便在发生重大灾难时提供额外的数据持久性。

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

  • 通过任意客户端从任意位置访问数据:可以使用 REST API 通过 HTTP(S) 访问表存储。因此,任意操作系统上的任意客户端应用程序均可以使用 REST 访问表存储。

在重新设计你的应用程序以利用可伸缩性非常强的非关系型表存储后,你可能需要将现有数据从文件系统或 SQL Server 数据库传输到表存储中。为此,你可以使用 HTTP(S) REST API、针对表存储的 .NET 客户端库或如下工具,自己来编写代码。

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
显示:
© 2014 Microsoft