首页>教程>Azure>Azure 表和队列存储

Azure 表和队列存储

内容纲要

Azure 表存储用于存储大量结构化数据。该服务是一个 NoSQL 数据存储,它接受来自 Azure 云内部和外部的经过身份验证的调用。它是存储结构化和非关系数据的理想选择。

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

表存储的典型用途包括:

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

Azure 表结构

我们需要首先创建一个存储帐户,因为 Azure 表存储在存储帐户下提供,然后您在该存储帐户中拥有表。例如,您可以创建员工表、地址表,并且每个表将包含实体,并且实体将进一步包括键值对,例如员工表中的姓名电子邮件。

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

Azure 表存储概念

  • 帐户:对 Azure 存储服务的每次访问都是通过存储帐户完成的,对 Azure Cosmos DB 的所有访问都是通过 Table API 帐户完成的。因此,Azure 中提供了两种类型的表存储服务。第一个是 Azure 表存储,第二个是高级版本,在 Cosmos 的 DB 下。因此,如果您正在寻找具有低延迟的出色性能,那么请选择 Cosmos 的 DB,尤其是在您处理任务关键型应用程序时。如果您可以在性能上妥协,但如果您想优化成本,那么请选择表存储。
  • 表:它是实体的集合。众所周知,表不会在实体上放置模式,这意味着单个表可以包含具有不同属性集的实体。
  • 实体:它是一组属性,类似于数据库行。Azure 存储的实体大小可以为 1MB。但如果我们使用的是高级版本,即 Azure Cosmos DB,它的大小可能为 2MB。
  • 属性:这是一个名称-值对,其中每个实体最多可以包含 252 个属性来存储数据,除了用户属性之外,这意味着您添加的任何功能。还有一些系统属性还指定了分区键、行键和时间戳。所以每个实体都会默认拥有这三个属性。而我们在查询数据的时候,可以根据partition key和row key来携带数据,在单partition下,这个row key应该是唯一的。所以当我们查询数据的时候,我们使用分区键和行键来查询数据。通常,当我们从单个分区中获取实体时,速度会很快,因为属于单独分区的所有对象都将存储在 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 秒。需要从队列中显式删除消息以避免被另一个应用程序拾取。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索