amazon-web-services - DynamoDBMapper 有条件地保存对象列表
问题描述
我的用例:给定对象列表,保存 DynamoDB 表中尚不存在的所有对象(即,如果对象已存在具有相同的 has 和 range 键,则不要覆盖,而是忽略或抛出所有现有项目的异常)
我在 DynamoDBMapper 中有 2 个选项:
在串行或并行循环中,有条件地保存单个对象。
使用给定的哈希和范围键批量加载所有对象,比较自己并过滤掉现有对象并仅保存不存在的对象
您能否帮助我了解哪种方法在延迟和成本方面更好?
解决方案
第二种选择效率不高。当您不需要时,您会花费额外的 RCU 来读取项目,而且您正在使用额外的带宽、增加延迟并将更多的东西加载到应用程序内存中而不是您需要的。
最简单的选择是使用串行循环编写带有attribute_not_exists
条件的项目(请参阅https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html#Expressions.ConditionExpressions.PreventingOverwrites。DynamoDB 非常快所以除非你有大量的物品要保存,否则你应该没问题。
您不能在 DynamoDB BatchWrite 操作上设置条件,因此如果您想要带条件的多线程写入,则必须自己编写。
推荐阅读
- python - 如果用户输入在列表中,如何从列表中删除元素?
- flutter - Flutter 如何将模型对象转换为另一个模型以将其保存到 HIVE
- reactjs - Apex 图表 - 限制缩小
- python - 如何在 Python 代码中从 Visual SFM 读取 .mat 文件?
- android - 通过 fetch、XHR 和 axios 在 React Native 中上传文件在 Android 上失败,但在 iOS 上有效
- javascript - 我无法弄清楚 Firebase 身份验证
- reactjs - 世博会日历警报问题
- python - 使用 Python 对 BigQuery API REST 进行身份验证问题
- c# - 如何使 WPF ComboBox 项目可见但不可选择?
- java - 哪个更快:直接访问存储库或使用带有结果的 hashmap?