DynamoDb批量写入更新

vks*_*vks 8 python amazon-dynamodb boto3

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

通过更新我的意思是partition key,sort key are same但其他attributes不一样.我在任何文档中都找不到这个.

Mik*_*scu 10

batch_writerBoto3映射到批量写入功能通过DynamoDB提供的,作为一个服务.此批处理写入特指PutItem和DeleteItem操作,它不包括UpdateItem.

来自文档:

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

注意

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

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

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