您如何指定DynamoDb的冲突解决策略? (我甚至需要吗?)

时间:2017-01-30 10:47:00

标签: amazon-dynamodb

我试图掌握DynamoDb并阅读Vogels 2007 blog post,它指的是句法和语义协调方法。我的应用程序可以很好地与最后一次写入胜利'但是我想确保我没有任何与数据库中存在冲突的项目,等待客户端#39;解决它们。

我已经查看了AWS API(我有点期待getItem调用返回多个版本以便客户端解析)并阅读文档和论坛,但无法找到任何对此的引用。这篇文章是指动态世界中的某些东西而不是DynamoDB,所以我不需要担心它吗?

2 个答案:

答案 0 :(得分:0)

Dynamo与DynamoDB不同。我知道很难相信,但这是事实。如果在一致性和可用性之间做出选择,DynamoDB会支持前者。只是通过在多个AZ(即可用区域)中复制数据来提高可用性。

要具体回答您的问题,get-item应始终返回一个记录版本。您不必担心从数据库中选择一个版本或在数据库中存在冲突版本。

修改:为了澄清,get-item始终返回一个版本的记录。是否是最新版本取决于ConsistentRead标志,默认情况下为false。

答案 1 :(得分:0)

GetItem API有一个ConsistentRead parameter。如果将其设置为false,则读取可能会转到托管项目的三个副本中的任何一个。如果将其设置为true,则读取将始终发送给master,并且您将始终获得该项目的最新版本。最后,当您将ConsistentRead设置为false时,您可以读取1 RCU(读取容量单位)的两倍数据(8KB),因此当它们最终一致时读取更便宜。