2017-01-30 39 views
0

我試圖去掌握DynamoDb,並且閱讀Vogels 2007 blog post,它指的是句法和語義和解方法。我的應用程序在'上次寫入勝利'時會沒問題,但是我想確保我沒有任何衝突的項目坐在數據庫中,等待'客戶'來解決它們。如何指定DynamoDb的衝突解決策略? (我甚至需要嗎?)

我查看了AWS API(我當時期待getItem調用返回客戶端要解析的多個版本),並閱讀文檔和論壇,但找不到任何對此的引用。這篇文章只是指Dynamo世界中的某些東西,而不是DynamoDB,所以我不需要擔心它?

回答

0

Dynamo與DynamoDB不一樣。我知道它很難相信,但這是事實。如果在一致性和可用性之間做出選擇,DynamoDB會偏好前者。它只是通過複製多個AZ中的數據(即可用區域)來提高可用性。

要專門回答你的問題,get-item應該總是返回記錄的一個版本。您不必擔心從多個版本中選擇一個版本或在數據庫中存在衝突的版本。

編輯:爲了澄清,get-item總是返回一個版本的記錄。是否是最新的取決於ConsistentRead標誌,默認爲false。

+0

謝謝。我有點想法,但文檔並不明確,找出dynamo和dynamoDB之間的區別並不容易!很高興有確認。再次感謝。 –

+0

GetItem可能並不總是返回最新版本的項目,具體取決於您如何調用它。請參閱下面的答案。 –

+0

你低估了那個小姐的答案?這就是編輯的建議。我實際上回答了OP的問題 –

0

GetItem API有ConsistentRead parameter。如果將其設置爲false,則讀取可能會轉到託管項目的三個副本中的任何一個。如果將其設置爲true,則讀取將始終發送給主設備,並且您將始終獲取該項目的最新版本。最後,當您將ConsistentRead設置爲false時,允許您爲1個RCU(讀取容量單位)讀取兩倍的數據(8KB),因此讀取在最終一致時更便宜。