DynamoDb批量写入更新

时间:2017-06-28 14:12:55

标签: python amazon-dynamodb boto3

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

按更新,我的意思是partition keysort key are same,但其他attributes不相同。我在任何文档中都找不到。

1 个答案:

答案 0 :(得分:6)

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

来自文档

  

BatchWriteItem操作在一个或多个表中放置或删除多个项目。对BatchWriteItem的单次调用最多可以写入16 MB的数据,最多可包含25个put或delete请求。要写入的单个项目可以大到400 KB。

     
    

注意

         

BatchWriteItem无法更新项目。要更新项目,请使用UpdateItem操作。

  

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

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