DynamoDB -覆盖HashKey批处理操作



我有一个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,但这可能会比较慢。

相关内容

  • 没有找到相关文章

最新更新