2016-03-03 46 views
0

我的應用程序從DynamoDB支持的第三方REST API獲取數據。結果是分頁的,因此我通過將最後評估的關鍵字傳遞給每個後續請求來向前翻頁。DynamoDB最後評估的密鑰有效期?

我的問題是最後評估的鑰匙是否有保質期?它是否過期?

比方說,我查詢REST API,然後決定停止。如果我保存上次評估過的密鑰,可以從我離開的地方拿起30天后?上次評估的鍵是否仍然有效,並根據我以前離開的位置返回正確的下一頁?

回答

1

您不應該將結果集中的「佔位符」或「書籤」的最後一個評估鍵考慮爲要從中恢復暫停的迭代。

你應該把它看作更像一個「從頭開始」的位置標記。一個例子可能有幫助。假設您有一個帶有散列鍵userId和範圍鍵timestamp的表格。範圍鍵timestamp將提供結果集的排序。假設你的表是這樣的:

user ID | Timestamp 
    1 | 123 
    1 | 124 
    1 | 125 
    1 | 126 

按照此順序,在查詢所有的記錄表userId1,你會得到記錄,早在他們上面列出的順序,或上升按時間戳排序。如果你想讓它們按降序排列,你可以使用Dyanmo DB的scanIndexForward標誌來表示按照時間戳順序排列「從最新到最舊」或降序排列。

現在,假設表中有4個以上的項目,並且需要多個查詢才能返回所有記錄,其中一個爲userId。那麼,您不希望必須繼續獲取頁面和頁面,因此您可以通過將Dynamo DB的最後一個評估鍵提供給Dynamo DB,從而告訴Dynamo DB從哪裏開始。假設前一個查詢的最後結果是userId = 1timestamp = 124的記錄。您在查詢中告訴Dynamo這是您獲得的最後一條記錄,並且它將開始您的下一個結果集,其記錄爲userId = 1timestamp = 125

因此,最後評估的關鍵字不是「過期」,您可以根據已經處理過的記錄,向用戶顯示等信息,與Dynamo通信哪些記錄要返回哪條記錄。 。