Dynamodb 中不同属性的并发更新

问题描述 投票:0回答:1

我遇到的情况是,2 个进程最终可能会更新相同的 dynamodb 项但属性不同。这两个进程都不会更新整个项目。例如,如果我有一个包含属性 A1、A2、A3 和 A4 的表,process-1 可以更新 A1,process-2 可以更新 A4。在任何情况下,两个进程更新的属性都不重叠。

我不确定 dynamodb 实际上如何处理对同一项目的这些并发写入。我实际上期待一个错误(因为我们没有锁定或类似的机制,例如根据版本号进行更新),但它工作得很好。

我正在使用Go。我创建了大约 50 个 goroutines 来更新 A1,另外 50 个 goroutines 来更新 A2 以模拟生产中的行为。它可以正常工作,没有任何问题。我只是想确保这不会产生任何影响(除了意外地让两个进程更新同一组属性之外)。

请指教。谢谢!

amazon-web-services amazon-dynamodb dynamodb-queries
1个回答
0
投票

这是一个很好的例子,说明可能值得将它们分成两个不同的项目。如果没有关于您的架构和用例的更多信息,很难确定。

我这样说是因为在正确的流量情况下,您所建议的绝对可能会遇到 DynamoDB 对每秒每个分区写入次数的服务限制,即 1000。

在不了解有关您的应用程序或数据模型的更多信息的情况下,我建议您创建一个带有排序键的项目集合,如果您需要读取其中的所有项目,您可以在执行查询时使用begins_with()的关键条件表达式一个查询。尽管如此,在编写每个属性时,它们各自转到自己的项目,但它们是相关的。由于它们具有相同的分区键,因此项目集合中的所有项目都存储在一起。就像我说的,这纯粹是猜测这是否是您的解决方案,没有更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.