我的應用程序從DynamoDB支持的第三方REST API獲取數據。結果是分頁的,因此我通過將最後評估的關鍵字傳遞給每個後續請求來向前翻頁。DynamoDB最後評估的密鑰有效期?
我的問題是最後評估的鑰匙是否有保質期?它是否過期?
比方說,我查詢REST API,然後決定停止。如果我保存上次評估過的密鑰,可以從我離開的地方拿起30天后?上次評估的鍵是否仍然有效,並根據我以前離開的位置返回正確的下一頁?
我的應用程序從DynamoDB支持的第三方REST API獲取數據。結果是分頁的,因此我通過將最後評估的關鍵字傳遞給每個後續請求來向前翻頁。DynamoDB最後評估的密鑰有效期?
我的問題是最後評估的鑰匙是否有保質期?它是否過期?
比方說,我查詢REST API,然後決定停止。如果我保存上次評估過的密鑰,可以從我離開的地方拿起30天后?上次評估的鍵是否仍然有效,並根據我以前離開的位置返回正確的下一頁?
您不應該將結果集中的「佔位符」或「書籤」的最後一個評估鍵考慮爲要從中恢復暫停的迭代。
你應該把它看作更像一個「從頭開始」的位置標記。一個例子可能有幫助。假設您有一個帶有散列鍵userId
和範圍鍵timestamp
的表格。範圍鍵timestamp
將提供結果集的排序。假設你的表是這樣的:
user ID | Timestamp
1 | 123
1 | 124
1 | 125
1 | 126
按照此順序,在查詢所有的記錄表userId
1
,你會得到記錄,早在他們上面列出的順序,或上升按時間戳排序。如果你想讓它們按降序排列,你可以使用Dyanmo DB的scanIndexForward
標誌來表示按照時間戳順序排列「從最新到最舊」或降序排列。
現在,假設表中有4個以上的項目,並且需要多個查詢才能返回所有記錄,其中一個爲userId
。那麼,您不希望必須繼續獲取頁面和頁面,因此您可以通過將Dynamo DB的最後一個評估鍵提供給Dynamo DB,從而告訴Dynamo DB從哪裏開始。假設前一個查詢的最後結果是userId = 1
和timestamp = 124
的記錄。您在查詢中告訴Dynamo這是您獲得的最後一條記錄,並且它將開始您的下一個結果集,其記錄爲userId = 1
和timestamp = 125
。
因此,最後評估的關鍵字不是「過期」,您可以根據已經處理過的記錄,向用戶顯示等信息,與Dynamo通信哪些記錄要返回哪條記錄。 。