2016-02-03 84 views
1

DynamoDb調配了數據吞吐量限制,根據this post中的答案,看起來如果超過吞吐量限制,DynamoDb可能會開始拋出異常,而不是放慢查詢速度。如果您運行查詢(例如,如所述here),您如何確保查詢不超過吞吐量?如何將DynamoDb查詢保留在預配吞吐量內?

查詢將被自動限制爲1 MB,在這種情況下,您必須使用文檔中描述的LastEvaluatedKey(無代碼示例)進行一些棘手的重新查詢。然而,取決於查詢速度或類似的情況,即使這個1 MB可能會打擊您的預設限制?

您還可以設置在QuerySpec對象中返回的項目的最大數量,然後您在單個頁面中處理查詢 - 我猜測在單獨的頁面下執行單獨的查詢。但是,如果您事先不知道項目的大小,則無法按照需要的KB數限制它以保持吞吐量。雞和雞蛋的情況。

我在這裏錯過了什麼嗎?有沒有更簡單的方法來做到這一點?

回答

0

您的問題可以通過以下方法解決或通過合併方案

解決方案1解決:當你在你的問題已經指出,如果你知道你的項目大小,你可以限制的記錄數,通過lastEvaluatedKey獲取下一組記錄。

再次,即使這可能足以遏制你的限制,你需要有一段時間的睡眠機制,以便你不會連續擊中表。

解決方案2:到目前爲止,我已經實現的最佳方法是,不打DynamoDB表,而存儲您的信息以某種形式緩存(MemcahceElasticache等)

這將確保你不需要非常高的吞吐率。

注意:這將取決於您的應用程序的類型,以及如果您的數據更新頻率比這可能沒有多大幫助。