亚马逊 DynamoDB 对替换整个项目(使用 putItem)和仅进行必要更新(使用 updateItem)的性能进行比较。
亚马逊 DynamoDB 对替换整个项目(使用 putItem)和仅进行必要更新(使用 updateItem)的性能进行比较。
根据《Working with Items: Java》中的信息,我了解到可以使用putItem方法来“更新”一个项目。putItem方法将替换整个项目。然而,建议使用updateItem方法,因为updateItem方法只会修改输入中指定的项目属性,而项目中的其他属性将保持不变。
我的问题是,在亚马逊 DynamoDB 中,完全替换项目和更新所需字段之间是否存在性能差异?
如果要更新的项目数量是:
- 少量:对性能有什么影响?
- 大量:对性能有什么影响?
有关这两个功能的差异的问题已在此处提问:here。但我想要一个关于性能差异的详细答案。
问题的出现原因是,无论是使用putItem还是updateItem,将一个项目写入DynamoDB时,都会消耗相同的吞吐量。根据文档说明,putItem会替换表中具有相同主键的项目,而updateItem会修改表中的项目。DynamoDB会考虑更新前后的项目大小来计算吞吐量的消耗,即使只更新项目的一部分属性,updateItem仍然会消耗完整的吞吐量。
解决方法是,在需要更新项目时,根据具体情况选择使用putItem还是updateItem。如果只需要更新项目的一部分属性,可以使用updateItem。但是需要注意,无论使用哪种方法,都会消耗相同的吞吐量。对于存储空间来说,两种方法最终会占用相同的存储空间。
至于"时间"方面,AWS没有分享具体的实现细节,但从实际目的来看,可以安全地假设它们的时间消耗是相同的。
以下是整理后的文章:
Amazon DynamoDB中整体替换项目(使用putItem)和仅进行必要更新(使用updateItem)之间的性能比较 无论是使用putItem还是updateItem,将项目写入DynamoDB时,都会消耗相同的吞吐量。根据文档说明,putItem会替换具有相同主键的项目,而updateItem会修改表中的项目。DynamoDB会考虑更新前后的项目大小来计算吞吐量的消耗,即使只更新项目的一部分属性,updateItem仍然会消耗完整的吞吐量。 在实际使用中,可以根据具体情况选择使用putItem还是updateItem。如果只需要更新项目的一部分属性,可以使用updateItem。但是需要注意,无论使用哪种方法,都会消耗相同的吞吐量。对于存储空间来说,两种方法最终会占用相同的存储空间。 至于"时间"方面,AWS没有分享具体的实现细节,但从实际目的来看,可以安全地假设它们的时间消耗是相同的。 参考文献: - [DynamoDB Capacity Unit Calculations](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/CapacityUnitCalculations.html)