Azure表存储:一次扫描一个分区

时间:2014-03-08 04:03:12

标签: azure azure-table-storage

我有一张桌子上写着一堆东西。该表中的每个实体都将具有告知工作者角色将某些信息写入特定表的分区所需的信息。工作者角色正在读取的表的同一分区中的实体可以一起批处理(将写入同一分区)。我不知道表中的分区键是否包含worker角色的信息。有没有办法进行全表扫描,不会同时从不同的分区中获取实体?

例如:

Partition Key| Row Key  
========================
1            |  X       
1            |  Y       
1            |  Z       
2            |  X       
2            |  Y       
2            |  Z       

我想扫描该表并获取在对上表进行表扫描时检索到的所有第一个分区,而不会泄漏到下一个分区。之后,worker角色将根据读取的内容执行一些操作,然后继续执行下一个分区并执行相同的操作。如果表存储在执行表扫描时无法获取表中不同分区中的一组实体,那么我认为我可以使用分页令牌的下一个分区属性来确定是否将从下一个读取新分区。

1 个答案:

答案 0 :(得分:0)

单个表查询可以返回具有不同分区键的实体。要仅获取具有单个分区键的实体,首先需要确定下一个分区键对于PartitionKey>的查询是什么。 lastKnownParitionKey只返回一个结果($ top = 1)。然后,您可以执行分区扫描(PartitionKey = currentPartitionKey)以获取具有此分区键的所有实体。

如果您的每个分区密钥通常少于10个实体,请考虑通过增加第一个获取10个实体的请求进行优化,并丢弃任何不具备您正在寻找的分区密钥的任何实体。