DynamoDBMapper有条件保存对象列表

时间:2018-10-24 23:06:15

标签: amazon-web-services amazon-dynamodb

我的用例:给定对象列表,保存DynamoDB表中不存在的所有对象(即,如果一个对象已经具有相同的has和range键,则不要覆盖所有对象,而忽略或抛出异常)现有项目)

DynamoDBMapper中有2个选项:

  1. 在串行或并行循环中有条件地保存单个对象。

  2. 使用给定的哈希键和范围键批量加载所有对象,进行自我比较并筛选出现有对象,并仅保存不存在的对象

能否请您帮助我了解哪种方法在延迟和成本方面更好?

1 个答案:

答案 0 :(得分:1)

第二个选项效率不高。您将在不需要时花费额外的RCU来读取项目,此外,您还使用了额外的带宽,增加了延迟,并且将多余的内容加载到应用程序内存中。

最简单的选择是串行循环,以写入带有attribute_not_exists条件的项(请参阅https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html#Expressions.ConditionExpressions.PreventingOverwrites。DynamoDB的速度非常快,因此除非您有大量要保存的项,否则应该可以那个。

您不能在DynamoDB BatchWrite操作上放置条件,因此,如果要对带有条件的多线程写入,则必须自己编写。