2012-10-04 68 views
1

我的系統應該每天將大量數據寫入DynamoDB表。這些寫入以突發形式出現,即在每天的特定時間,幾個不同的進程必須將其輸出數據轉儲到同一個表中。只要在下次轉儲發生之前寫入所有日常數據,寫入速度並不重要。我需要找出計算我桌子臨時容量的正確方法。如何計算AWS DynamoDB表的臨時吞吐量?

所以爲了簡單起見,我們假設我每天只有一個進程寫入數據,並且必須在表中寫入X項(每個項目< 1KB)。我必須指定的容量基本等於X/24/3600寫入/秒?

Thx

回答

2

供應的容量以寫/秒爲單位。您需要確保您可以處理您希望的PEAK寫入次數/秒,而不是一天中的平均值。所以,如果你有每天運行一次,並使得寫入Y大小的,X個單個進程(以KB爲單位,四捨五入),在幾秒鐘Z號,你的公式將是

capacity = (X * Y)/Z 

所以,假設你有超過100秒的100K次寫入,並且每次寫入1KB的<,則需要1000瓦特/秒的容量。

請注意,爲了最大限度地降低配置的寫入容量需求,最好將數據連續添加到系統中,以便減少必要讀/寫容量的峯值。

+0

謝謝。我能否以某種方式確保我永遠不會超過預定的容量?換句話說,不是依靠AWS來節制我的寫入,像'boto'這樣的庫能夠從我這邊控制它嗎?如果我必須減慢寫入速度以保持低於此值,那麼只要我的寫入在下一次轉儲之前結束就行。在這種情況下,我可以使用我的公式。我絕對不需要 –

+0

我對boto並不熟悉,不知道它是否具有限制請求的功能。您應該在代碼中顯示錯誤處理機制,它會更新數據庫以查找從dynamoDB返回的錯誤,以便您可以確定何時發生此類容量問題,並且可能自己扼制您的代碼,並重試任何失敗的寫入/讀取操作。您還可以使用Cloudwatch監控您的容量使用情況,以瞭解何時需要調整容量限制。 –

+0

所有官方SDK(包括boto - 適用於Python的AWS開發工具包)均依賴該服務進行限制。 SDK只是使用指數退避算法來響應節流異常。 –