2017-01-10 77 views
3

從關係背景的人,我已經習慣了能夠寫類似:DynamoDb - 如何進行批量更新?

UPDATE Table Set X = 1 Where Y = 2 

然而,這樣的操作似乎很難像Dynamodb一個數據庫來完成。比方說,我已經做了查詢,其中Y = 2

我看到它的方式,用API提供的項目有兩種選擇:

  • 做很多很多的個人update請求,或
  • 執行batch write,並將所有數據寫回,並應用更新。

這兩種方法看起來都很糟糕,性能明顯。

我在這裏錯過了一些明顯的東西嗎?或者,非關係數據庫的目的不是爲了處理這種規模的「更新」 - 如果是這樣的話,我能否實現類似的效果,而不會產生嚴重的性能成本?

+0

我覺得,batchWrite與batchUpdate不同,DynamoDB不提供batchUpdate API。 – Azim

回答

7

不,你不會錯過任何明顯的東西。不幸的是,這些是您使用DynamoDB的唯一選項,但有一點需要注意,BatchWrite一次只能批量提交25個更新操作,因此您仍然需要發出多個BatchWrite請求。

BatchWrite更爲方便,DynamoDB API可幫助您節省網絡流量,將25個請求的開銷減少到1個開銷,但否則不會節省太多。

BatchWrite API的靈活性也比個別的Update和Put項目API要小一些,所以在某些情況下,最好自己處理併發,並使用底層操作。

當然,最佳方案是如果您可以構建您的解決方案,以便您不需要對DynamoDB表執行大規模更新。寫入費用很高,如果你經常需要更新大部分表格,那麼可能會有一種替代設計可以使用。

+0

如果問題與批量狀態更改或庫存批量上傳有什麼不同? –

+0

@ManMohanVyas替代品取決於你的問題空間。你想要做什麼? –

+0

正如提到試圖從csv批量上傳庫存。關於千餘種庫存狀況的批量變化。與庫存管理域這些是非常普遍的問題 –