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

Retrieving all entities for a partition in Azure Table

我正在使用 Java 查询 Azure Table,我想使用以下代码检索具有给定 partitionid 的所有实体。但是,由于 Azure Table 中存在以下限制,我想知道应该如何解决它们。我关心的限制是:

1) 由于 Azure Table 有分页机制,如果一个分区包含更多一定数量的实体(我相信是 1000),它 return 前 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) 使用 execute 将自动并懒惰地跟随连续标记从一页到另一页的结果。 executeSegmented 不会。因此,您拥有的代码应该可以很好地用于分页。

2) 如果超过限制或有峰值,您可能会受到限制。例如,随着系统负载平衡,0 到 2000 很快就会受到限制。该库默认有一个重试策略机制(指数),它将重试几次受限的请求。您也可以更改重试策略设置或使用自定义重试策略。有关详细信息,请参阅 TableRequestOptions class 和 Retry*Retry classes。