Amazon dynamodb 在DynamoDB中更新或覆盖临时表中的项
我在DynamoDB中有一个聚合数据的Amazon dynamodb 在DynamoDB中更新或覆盖临时表中的项,amazon-dynamodb,Amazon Dynamodb,我在DynamoDB中有一个聚合数据的表,它是从staging_表中的质量检查数据填充的 我有几个脚本,它们在staging_表(所有项目)中执行扫描,进行某种计算或验证,并可能需要插入/更新这些staging项目的属性,然后才最终将其传输到实际的表。请注意,由于每个质量检查程序独立于其他程序,但它们是并行进行的,因此此完全扫描会发生多次 就成本和性能而言,这里最好使用哪一组DynamoDB操作?更客观地说,我最初想到的备选方案是: 使用批处理项写入覆盖数据的旧版本(因为PutItem是唯一可
表
,它是从staging_表
中的质量检查数据填充的
我有几个脚本,它们在staging_表
(所有项目)中执行扫描,进行某种计算或验证,并可能需要插入/更新这些staging项目的属性,然后才最终将其传输到实际的表
。请注意,由于每个质量检查程序独立于其他程序,但它们是并行进行的,因此此完全扫描会发生多次
就成本和性能而言,这里最好使用哪一组DynamoDB操作?更客观地说,我最初想到的备选方案是:
- 使用批处理项写入覆盖数据的旧版本(因为
是唯一可用的批处理操作)PutItem
- 使用顺序
操作(更多的API调用,但每个调用的成本更低)UpdateItem
有更好的办法吗?这种情况不适合DynamoDB吗?我认为您的解决方案将取决于对您来说什么是重要的
- 你运营的货币成本
- 数据到达暂存表和在主表中可用之间的延迟
- 简朴
一个要考虑的是,默认情况下读不一致,这意味着表可以在扫描的开始和结束之间改变。根据扫描质量的不同,您可能希望将ConsistentRead设置为true
我认为理想情况下,您应该使用最简单的方法对流程进行原型化,然后分析解决方案,看看哪些位需要花费大量时间。然后,您可以对流程的这些部分进行优化。有道理,因为WCU相等,
PutItem
和UpdateItem
不会有太大变化,但我认为UpdateItem
会写更少的数据(只有新字段),而不是整个项目。但是你是对的,我将从UpdateItem
开始,如果需要,尝试BatchWriteItem
。