检索Azure表中分区的所有实体

时间:2015-12-16 19:10:14

标签: java azure azure-table-storage

我使用Java查询Azure Table,我想使用以下代码检索具有给定partitionid的所有实体。但是,由于Azure表中存在以下限制,因此我想知道如何解决这些问题。我所关注的限制是:

1)由于Azure Table具有分页机制,如果分区包含更多一定数量的实体(我相信它是1000),它将返回前1000个实体。如何以m代码获取所有记录。

2)由于每个分区的每秒条目数为2000,如果分区包含超过2000个条目且我的应用程序的多个实例同时查询同一个分区,会发生什么?

String partitionFilter = TableQuery.generateFilterCondition(
       "PartitionKey", 
       QueryComparisons.EQUAL,
       term);


   TableQuery<AzureTableDFEntity> partitionQuery =
       TableQuery.from(AzureTableDFEntity.class)
       .where(partitionFilter);

    // Loop through the results
  int count = 0;
  for (AzureTableDFEntity entity : cloudTableIDF.execute(partitionQuery)) {
        count++;                            
   }

1 个答案:

答案 0 :(得分:3)

1)使用execute将自动和懒惰地跟随结果页面之间的延续令牌。 executeSegmented不会。所以,你所拥有的代码应该适用于分页。

2)如果你超过限制或有尖峰,你可能会受到限制。例如,当系统负载平衡时,非常快速的0到2000将受到限制。默认情况下,库具有一个重试策略机制(指数),它将重试限制请求几次。您也可以更改重试策略设置或使用自定义重试策略。有关详细信息,请参阅TableRequestOptions类和Retry * Retry类。