2012-12-22 214 views
3

什麼構成DynamoDB中的實際讀取?DynamoDB讀取和寫入

它讀取表中的每一行或返回哪些數據?

這就是爲什麼一個掃描太昂貴 - 你讀整個表,並收取每個讀取的表格行?

您可以將ElasticCache(Memcached)放在DynamoDB前面以降低成本嗎?

最後是你收取一個沒有結果的查詢?

回答

2

請參閱此鏈接:http://aws.amazon.com/dynamodb/faqs/

1寫= 1個寫入每秒一個項到1Kb的大小。

1閱讀= 2如果您需要完全一致的結果,則每秒讀取1Kb大小的項目,或每秒讀取1次。

例如,如果你的項目是512個字節,你需要從表中讀取每秒100個 項目,那麼你就需要提供100個單位的讀取容量 。

如果您的項目大小大於1KB,那麼您應計算您需要的讀取容量和寫入容量的單位數 。 例如,如果您的項目是1.5KB,並且您希望以100 /秒讀取100 ,那麼您需要提供100(每秒讀數)x(其中,1.5KB四捨五入到最接近的整數)= 200單位閱讀 容量。

請注意,所需的讀取容量單位數量由每秒讀取的項目數量確定,而不是調用的API數量 。例如,如果您需要從 表中每秒讀取500個項目,並且您的項目爲1KB或更少,則需要500個讀取容量單位。如果您執行500個單獨的GetItem 調用或50個每個返回10個項目的BatchGetItem調用,則無關緊要。

上述內容適用於所有常用方法GET,BATCH X & QUERY。 SCAN是一個有點不同,他們並不確切地證明了他們是如何計算的使用,但他們並提供以下內容:

掃描API將通過您的整個數據集進行迭代,並應用 篩選條件的每一行。由於一次只能掃描1MB數據 ,因此您可能需要執行多次往返(使用 連續令牌)才能完成掃描。此外,使用此API可能會消耗大部分預配置讀取吞吐量。因此,這種方法 的縮放特性有限,我們不建議您將其用作應用程序常規行爲的一部分。

所以要直接回答你的問題:計算的是除SCAN之外的所有情況下返回的數據,其中沒有任何明確指示如何收費。不產生結果的查詢不會花費任何東西。

你可以肯定地建立一個緩衝系統面前迪納摩,絕對推薦你看看,如果你想保持你的讀數。

希望有幫助!

+1

從我目前對掃描/配置行爲的觀察 - 掃描實際上可能會吃掉你的下幾秒'配置,如果它需要爲了完成掃描塊。我無法驗證它的成本,但它似乎比自己讀取和過濾要便宜。 – penguat

+0

空讀應該會產生吞吐量成本嗎?我在他們沒有的印象之下,但實際上他們絕對是這樣做的。 –