所以我有一个基于azure表存储运行报告的请求,经过一段很长的精炼报告后我得到了数据。但是当我完成对控制台应用程序的重新分解时,有些东西并不适合我。我没有和azure一起工作很长时间,但我有一个基本的概念,即你选择用作PartitionKey和RowKey的东西会成就或破坏一个表(最终)。
我运行的查询使用时间戳(对我使用此字段的原因有限制)作为过滤器来回收一天的数据,因为PartitionKey和RowKey是未知的。根据我的理解,如果运行没有PK和RK的查询,这将导致查询在整个表中运行(如果我错了,请纠正我)。导致查询的获取时间非常差。
使用时间戳使我感到紧张,因为它属于表格,并且每当该条目发生变化时都会不断更新。现在考虑到这一点,报告可能需要几小时才能运行。所以这引出了我的主要问题。
如果在我的查询中间有一系列条目在获取中间更改会发生什么?
以此方案为例:
在我访问第50个条目时,条目1-20更新,条目80-100更改。
我会收到哪些数据? (我相信我会得到80-100的更新条目,但仍保留1-20的旧数据。)
答案 0 :(得分:3)
如果我错了,请纠正我,但是运行没有PK和RK的查询会导致查询的获取时间非常短。
这是一种严重的反模式。最有效的查询是PK和RK上的点查询。提供PK至少会强制查询进入一个分区或计算节点。提供既不保证全表扫描。像许多NoSQL商店一样,围绕查询性能设计数据模型至关重要。控制PK& amp; RK,您可以将时间戳注入其中,同时保持意识到另一个反模式仅附加写入单个分区。例如,如果您将PK基于每日或每小时的存储桶并且仅将数据插入到单个存储桶中,则会发生这种情况。