gpt4 book ai didi

java - DynamoDB - 使用批量操作覆盖 HashKey

转载 作者:行者123 更新时间:2023-11-30 08:02:33 25 4
gpt4 key购买 nike

我有一个 DynamoDB,我用它来存储有关 EC2 实例的一些信息,因此我使用实例 ID 作为 HashKey。

每周一次,我运行一个代码,将大量记录插入到该表中:

AmazonDynamoDB amazonDynamoDB = new AmazonDynamoDBClient();
DynamoDBMapper mapper = new DynamoDBMapper(amazonDynamoDB);

// saving records
List<FailedBatch> failedBatch = mapper.batchSave(recordsToSave);

我只关心最新信息,因此如果我尝试插入的 HashKey 已存在于数据库中,我想覆盖 DynamoDB 中的旧记录。但是,每次我尝试插入这样的值时,操作都会失败(failedBatch),因为它无法处理重复。

有没有办法使用 DynamoDB 实现此行为,或者我是否必须更改表设计?

最佳答案

批量操作无法更新项目。请参阅:

http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html

BatchWriteItem 无法更新项目。要更新项目,请使用 UpdateItem API。

我要做的是:

  • 尝试批量写入
  • 查看返回的失败
  • 批量获取失败的项目并将其批量写入临时表
  • 批量写入删除所有失败的项目(已经存在的)
  • 将失败的数据再次批量写入主表
  • 清除临时表中的所有项目

作为替代方案,您可以使用 UpdateItem api,但这可能会更慢。

关于java - DynamoDB - 使用批量操作覆盖 HashKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31677520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com