目前,Ruby AWS SDK中的ItemCollection#query方法返回整個數據集。我查看了Ruby AWS SDK源代碼的任何分頁可能性,但最接近分頁的選項是:limit
,沒有分頁。根據亞馬遜的DynamoDB API(的HTTP,而不是紅寶石)的查詢操作文檔建議有可能是分頁與響應密鑰LastEvaluatedKey
:分項與ItemsCollection#查詢?
其中查詢操作停止該項目的主鍵,包括以前的結果組。在新請求中使用此值啓動一個新操作,排除此值。 當整個查詢結果集完成時(即操作處理「最後一頁」),LastEvaluatedKey爲空。
所以我可以通過添加:limit
選項,然後做了一個範圍值,下一個查詢我的最後Item
後做分頁,但我不知道的總數是什麼,除非我做了充分的查詢。
是否有更好/更簡單的方法實現分頁?
我很害怕這種情況。由於我使用的是Ruby SDK,你有否洞察#query方法是否可以做到這一點?我試着添加一個'count:true'選項,但它仍然返回一個'Enumerator'。 – 2012-03-20 16:53:35
@ JohnK.Chow:確實很刺激 - 除了DevOps主題之外,我沒有使用Ruby,因此我自己也沒有嘗試過; [ItemCollection]的API文檔(http://docs.amazonwebservices.com/AWSRubySDK/latest/AWS/DynamoDB/ItemCollection。html)實際上並沒有爲'#query'列出一個'count'參數,而只是一個專門的'#count'方法,據推測這個方法是使用table scan_統計集合中的項目,這在給定性價比的情況下會讓我覺得奇怪[Scan]的特點(http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_Scan.html) - 雖然可能是文檔錯誤? – 2012-03-20 17:10:17
查詢API只能對具有相同散列鍵值的記錄進行計數,是您想要的嗎?計數「所有記錄」的唯一方法是掃描。 – 2012-03-21 02:29:32