2015-12-16 36 views
0

分區我使用Java來查詢Azure Table中,我想用下面的代碼給定的partitionid檢索所有實體的所有實體。但是,由於Azure Table中存在以下限制,因此我想知道它們應該如何解決。我擔心的限制有:檢索在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++;        
    } 

回答

2

1)使用執行會自動延遲地遵循從頁面到頁面結果的連續令牌。 executeSegmented不會。所以,你擁有的代碼應該適用於分頁。

2)如果您通過限制或有尖刺你可以得到節流。例如,當系統負載平衡時,0到2000會很快得到抑制。圖書館有默認(指數),將重試節流請求幾次代替重試政策機制。您可以更改重試策略設置或使用自定義重試策略。有關更多信息,請參閱TableRequestOptions類和Retry * Retry類。