跳至内容

DynamoDB全局表 + 原子事务和计数器

0

【以下的问题经过翻译处理】 我正在尝试弄清楚Dynamo在进行事务时如何处理全局表中的冲突解决。

假设我想在同一个事务中递增原子计数器并写出日志项,那么在全局表环境中如何解决这个问题?

在单个区域内,第二个事务将失败并拒绝递增计数器,因为日志记录已经存在。

但是当事务同时在2个区域运行时会发生什么?全局表中的冲突解决文档指出最后的写入者胜出。但这如何适用于事务,以及如何适用于原子计数器?

原子计数器在同时在2个区域快速递增会导致它们不断互相覆盖而实际上无法正确递增吗?

专家
已提问 3 年前101 查看次数
1 回答
0

【以下的回答经过翻译处理】 因此,在大量深入调研和测试后,我找到了答案,供将来寻找答案的人参考:

  • 就全局表而言,事务并不 "存在"。
  • 事务适用于单个区域
  • 通过事务复制的更改会同步复制到其他已启用的区域
  • 这意味着默认的 "最后写入者胜出 "策略将生效。
  • 简而言之:如果您可能要在多个区域中写入同一内容,请不要依赖事务;例如,如果您需要事务质量或其他类似机制来防止不同区域相互覆盖事务,请在 PK/SK 中添加一个 "区域"。另一种方法是在单个区域中写入,然后根据使用情况从其他区域读取。
专家
已回答 3 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。