Window Azure表存储查询性能

时间:2015-01-18 00:21:22

标签: azure azure-table-storage

所以我有一个基于azure表存储运行报告的请求,经过一段很长的精炼报告后我得到了数据。但是当我完成对控制台应用程序的重新分解时,有些东西并不适合我。我没有和azure一起工作很长时间,但我有一个基本的概念,即你选择用作PartitionKey和RowKey的东西会成就或破坏一个表(最终)。

我运行的查询使用时间戳(对我使用此字段的原因有限制)作为过滤器来回收一天的数据,因为PartitionKey和RowKey是未知的。根据我的理解,如果运行没有PK和RK的查询,这将导致查询在整个表中运行(如果我错了,请纠正我)。导致查询的获取时间非常差。

使用时间戳使我感到紧张,因为它属于表格,并且每当该条目发生变化时都会不断更新。现在考虑到这一点,报告可能需要几小时才能运行。所以这引出了我的主要问题。

如果在我的查询中间有一系列条目在获取中间更改会发生什么?

以此方案为例:

  • 我的桌子上有100个条目。
  • 我目前正处于第50位。

在我访问第50个条目时,条目1-20更新,条目80-100更改。

我会收到哪些数据? (我相信我会得到80-100的更新条目,但仍保留1-20的旧数据。)

1 个答案:

答案 0 :(得分:3)

如果我错了,请纠正我,但是运行没有PK和RK的查询会导致查询的获取时间非常短。

这是一种严重的反模式。最有效的查询是PK和RK上的点查询。提供PK至少会强制查询进入一个分区或计算节点。提供既不保证全表扫描。像许多NoSQL商店一样,围绕查询性能设计数据模型至关重要。控制PK& amp; RK,您可以将时间戳注入其中,同时保持意识到另一个反模式仅附加写入单个分区。例如,如果您将PK基于每日或每小时的存储桶并且仅将数据插入到单个存储桶中,则会发生这种情况。

相关问题