java - 检索 Azure 表中某个分区的所有实体

标签 java azure azure-table-storage

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

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) 使用执行将自动且延迟地跟随连续标记从一页到另一页结果。 executeSegmented 不会。因此,您拥有的代码应该可以很好地用于分页。

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

关于java - 检索 Azure 表中某个分区的所有实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34320164/

相关文章:

java - 如何创建一个允许 NULL 值与 Hibernate 注释的唯一约束?

java - 如何在 Java 中使用 JTable 合并单元格?

java - 如何使用命名空间针对 xsd 验证 xml 文件

azure - 在隐式流的情况下是否可以在 JWT token 中包含组?

azure - 数据湖存储中存储的文件的修改和过期时间

azure - Azure 存储表上的 PartitionKey 和 RowKey

java - 匹配来自两个不同表的两列的字符串

c# - 对不同 DC 中的 Azure 表存储的请求变得越来越慢

mongodb - Azure 表与 Azure 上的 MongoDB

java - 增加/减少 Azure 中辅助角色实例的数量