1 回答
- 最新
- 投票最多
- 评论最多
0
【以下的回答经过翻译处理】 DynamoDB 采用一种称为乐观锁定的技术来处理并发更新。当多个客户端尝试同时更新同一项时,DynamoDB 确保最后一次写入不会忽略之前的更改而覆盖先前的写入。
第一种情况:当一个客户端同时更新"Attr1" 和另一个客户端更新 "Attr2" 时,这些更新将被视为独立的操作。DynamoDB会合并这些更新并将它们应用于项目而不相互覆盖。因此,两个更新都将成功,最终项目将对 "Attr1" 和 "Attr2" 的更新值。
第二种情况:当一个客户端同时更新"SubAttr1" 和另一个客户端更新 "SubAttr2" 时,这些更新也将被视为独立的操作。然而,由于正在更新的属性嵌套在同一父属性"Attr1" 中,必须使用适当的 DynamoDB 表达式来更新嵌套属性。
使用 UpdateExpression 和"SET" 操作以及适当的文档路径来更新嵌套属性:
UpdateExpression: "SET Attr1.SubAttr1 = :newSubAttr1, Attr1.SubAttr2 = :newSubAttr2"
这将确保仅更新指定的子属性,而在过程中不会丢失任何数据。
在使用 AppSync 解析器时,同样适用相同原理。您需要在 VTL(Velocity 模板语言)脚本中使用正确的映射模板来更新 DynamoDB 中的嵌套属性。这将确保正确处理对不同子属性的并发更新,而不会覆盖或丢失数据。
相关内容
- AWS 官方已更新 2 个月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前