在将记录插入 DynamoDB 时处理回滚

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

我目前正在使用 transactWrite 将数据插入到 dynamoDB 数据库。仅允许一批小块(比方说 100 个)进行事务,但我想以“全有或全无”的方式在数据库中添加 500 个项目。我在循环中使用 transactWrite,每批 100 个。我能够在出现错误时停止事务,但无法回滚已提交的事务? 有人可以解释如何处理这种情况吗?

transactions amazon-dynamodb rollback dynamodb-queries
2个回答
0
投票

最近交易量才从 25 个增加到 100 个。依赖 500 个项目几乎是 DynamoDB 中的一种反模式,因为它的目标是大规模提供可预测的性能。

做你想做的事情非常复杂。最好的方法可能是将这些项目合并为更大的项目(如果它们确实相互依赖)。


0
投票

仅供参考:TransactWrite 和 BatchWrite 都不是原子操作,您必须手动处理。

还有办法

  • 要么找到失败的根本原因,在插入之前实施数据验证并运行平滑插入
  • 从 dynamo 数据库中的其他服务(例如 RDS 或 S3)批量导入数据。数据已经经过验证。
  • 您还可以使用批量写入并跟踪失败的项目, - 否则,在批量写入中,在写入之前验证数据,如果批次有任何无效数据,则跳过整个批次
© www.soinside.com 2019 - 2024. All rights reserved.