python – DynamoDb批量写入更新

当我们执行table.batch_writer(),boto3 API时,它是插入还是更新?

通过更新我的意思是分区键,排序键是相同的,但其他属性不相同.我在任何文档中都找不到这个.

解决方法:

Boto3中的batch_writer映射到DynamoDB提供的Batch Writing functionality作为服务.此批处理写入特指PutItem和DeleteItem操作,它不包括UpdateItem.

来自文档:

The BatchWriteItem operation puts or deletes multiple items in one or more tables. A single call to BatchWriteItem can write up to 16 MB of data, which can comprise as many as 25 put or delete requests. Individual items to be written can be as large as 400 KB.

Note

BatchWriteItem cannot update items. To update items, use the UpdateItem action.

为了清楚起见,PutItem operation要么插入一个新项目,要么替换一个项目,该项目由其密钥唯一标识(仅限分区,或基于表的定义方式的复合分区排序键).因此在某种程度上,您可能会考虑将项目替换为更新其非关键属性,但将其视为替换而非更新更为正确.与UpdateItem API相比,它允许选择性地操纵物品的属性.

值得一提的是,即使使用Put&删除项功能,批处理API比执行单个PutItem或DeleteItem调用更具限制性,因为它不支持条件写入. BatchWrite API实际上仅对批量加载或批量删除数据有用,以节省与HTTP头相关的网络开销,生成的额外计算资源&验证SigV4签名等

上一篇:linux – 判断是否在ec2实例上安装了卷


下一篇:如何检查本地文件是否与S3对象相同而不使用boto3下载?