检索 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。
我正在使用 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。