Azure 表和队列存储

17 Mar 2025 | 4 分钟阅读

Azure 表存储用于存储大量的结构化数据。此服务是一种 NoSQL 数据存储,它接受来自 Azure 云内外经过身份验证的调用。它非常适合存储结构化和非关系数据。

如果您想存储关系数据,则不应使用 Azure 数据库。与关系数据库不同,关系数据库的表具有固定数量的列,并且表中的每一行都应该在 Azure 表中具有这些列,Azure 表是 NoSQL 数据存储。每个表都可以有实体,每个实体都可以有不同的属性。因此,通常不会对属于表的对象强制执行架构。

表存储的典型用途包括

  • 表存储用于存储 TB 级的结构化数据,能够服务于 Web 规模的应用程序。
  • 它用于存储不需要复杂的连接、外键或存储过程的数据集,并且可以进行非规范化以实现快速访问。
  • 它用于使用集群索引快速查询数据。
  • 有两种访问数据的方式,一种是使用 OData 协议,另一种是使用带有 WCF Data Services 和 .NET 库的 LINQ 查询。

Azure 表结构

我们需要首先创建一个存储帐户,因为 Azure 表存储是在存储帐户下提供的,然后在该存储帐户中您拥有表。例如,您可以创建 employee 表、address 表,每个表将包含实体,而实体将进一步包括键值对,例如 employee 表中的 name email。

但是,Azure 表与 NoSQL 数据存储和关系数据库的一个主要区别在于。这些实体可以具有不同的模式,因此第一个实体可以具有名称、电子邮件,而第二个实体也可以具有名称、电子邮件和电话号码。

Azure Table and Queue Storage

Azure 表存储概念

  • 帐户: 对 Azure 存储服务的每次访问都是通过存储帐户完成的,对 Azure Cosmos DB 的所有访问都是通过 Table API 帐户完成的。因此,Azure 中有两种类型的表存储服务可用。第一个是 Azure 表存储,第二个是高级版本,位于 Cosmos DB 下。因此,如果您正在寻找具有低延迟的出色性能,请选择 Cosmos DB,尤其是在您处理任务关键型应用程序时。如果您可以牺牲性能但又想优化成本,请选择表存储。
  • 表: 它是实体的集合。如我们所知,表不会对实体应用模式,这意味着单个表可以包含具有不同属性集的实体。
  • 实体: 它是属性的集合,类似于数据库行。 Azure 存储中实体的大小可以为 1MB。但是,如果我们使用高级版本 Azure Cosmos DB,它的大小可以为 2MB。
  • 属性: 它是名称-值对,其中每个实体最多可以包含 252 个属性来存储数据,除了用户属性之外,这意味着您添加的任何功能。还有一些系统属性指定分区键、行键和时间戳。因此,每个实体都将默认拥有这三个属性。当我们查询数据时,我们可以根据分区键和行键来携带数据,并且在单个分区下,该行键应该是唯一的。因此,当我们查询数据时,我们使用分区键和行键查询数据。通常,当我们从单个分区中获取实体时,它会很快,因为属于单独分区的所有对象都将在 Azure 中的一个服务器中在后台存储。

当您找到一个查询时,它只需要去一台服务器来获取数据,但是如果您的查询包含存在于 2-3 个分区中的数据,那么该查询过去会去后台的多个服务器,从而影响查询的性能。 因此,在设计此表存储时,我们需要牢记这一点。

有两个访问点

  • Azure 表存储: 如果我们使用 Azure 表存储,那么我们可以拥有 http://<storageaccount>.table.core.windows.net/<table>
  • Azure Cosmos DB Table API: 如果我们使用高级版本,那么我们需要使用 http://<storageaccount>.table.cosmosdb.Azure.com/<table>

表存储查询

查询从表中检索数据,因为一个表只有一个索引。查询性能通常与 PartitionKey 和 RowKey 属性相关。

这是一个从服务器检索数据的示例查询

<account>.windows.core.net/registrations(PartitionKey="2011 NewYork City Marathon_Full", RowKey="1234_Ankit_M_55")

Azure 队列存储服务

它是一个队列服务,但是 Azure 中有更高级的队列服务,即服务总线队列。

  • 它是一项用于在云中存储大量消息的服务,可以使用 HTTP 和 HTTPS 从世界任何地方访问这些消息。
  • 一个队列包含一组消息。 队列名称必须全部为小写。
  • 单个队列消息的大小可以最大为 64KB。 消息最多可以在队列中保留 7 天
  • URL 格式为 http://<storage account>.queue.core.windows.net/<queue>
  • 当从队列中检索消息时,它会在 30 秒内保持不可见。 需要从队列中显式删除消息,以避免被另一个应用程序拾取。

下一个主题Azure 磁盘存储