【问题标题】:CreateBatchWrite with DynamoDBContext Update/Insert C#CreateBatchWrite 与 DynamoDBContext 更新/插入 C#
【发布时间】:2021-05-20 17:15:26
【问题描述】:

我有一个应该在 dynamodb 中插入或更新的文件列表,所以我是这样做的:

 var batch = _dynamoDbContext.CreateBatchWrite<MyEntity>();
 batch.AddPutItems(myEntityList);
 batch.ExecuteAsync();

如果 DynamoDB 表为空,这可以正常工作,但有时我应该更新而不是插入,但出现以下错误:

 An item with the same key has already been added. Key: Amazon.DynamoDBv2.DocumentModel.Key

我该如何解决?由于性能原因,我需要使用批处理。

【问题讨论】:

    标签: amazon-dynamodb aws-sdk-net


    【解决方案1】:

    您可以使用事务进行插入或更新,但它们是成本的两倍,否则您将需要一个一个更新

    这里有一些关于上一篇文章的更多信息 DynamoDB Batch Update

    【讨论】:

    • 是否可以将 TransactWriteItems 与 DynamoDBContext 一起使用,或者我应该使用低级 API?
    • 否 dynamodb 上下文只有批写入而不是批事务,因此您需要在 IAmazonDynamoDB 中使用 TransactWriteItemsAsync。请注意,如果您的事务中的任何更新失败,那么它们都会失败,因此如果您要更新的这些项目彼此无关/相互依赖,最好避免使用事务,而是一个接一个地更新,或者而不是更新您可以使用 dbcontext batchwrite 插入全新的项目,但在排序键中使用更新的时间戳或类似的东西,然后总是读取项目的最新副本并在一夜之间清理旧的副本
    猜你喜欢
    • 1970-01-01
    • 2016-05-08
    • 2013-09-23
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多