web-dev-qa-db-fra.com

Différence entre DynamoDb PutItem et UpdateItem?

D'après la documentation DynamoDb, pourquoi utiliser quiconque updateItem au lieu de putItem?


  • PutItem - Écrit un seul élément dans une table. Si un élément avec la même clé primaire existe dans la table, l'opération le remplace. Pour calculer la consommation de débit provisionnée, la taille de l'article qui compte est la plus grande des deux.
  • UpdateItem - Modifie un seul élément de la table. DynamoDB considère la taille de l'élément tel qu'il apparaît avant et après la mise à jour. Le débit provisionné consommé reflète la plus grande de ces tailles d'articles. Même si vous ne mettez à jour qu'un sous-ensemble des attributs de l'élément, UpdateItem continue de consommer l'intégralité du débit alloué (le plus grand des tailles "avant" et "après").
39
Sindhu

La principale différence entre les deux est que PutItem va Remplacer un élément entier alors que UpdateItem va Mettre à jour.

Par exemple.

J'ai un article comme:

userId = 1
Name= ABC
Gender= Male

Si j'utilise l'article PUT avec

UserId = 1
Country = India

Ceci remplacera Nom et genre et le nouvel élément est maintenant UserId and Country. While si vous souhaitez mettre à jour un élément à partir de Name = ABC to Name = 123 vous devez utiliser UpdateItem

Vous pouvez utiliser l'élément Mettre à jour pour le mettre à jour, mais vous devez envoyer tous les paramètres au lieu du paramètre que vous souhaitez mettre à jour car il remplace l'élément par le nouvel attribut (en interne, il supprime l'élément et ajoute un nouvel élément).

J'espère que cela a du sens.

67
Harshal Bulsara

PutItem écrase l'élément entier (tous les attributs) avec la nouvelle version en cours de transmission tandis que UpdateItem ne fera que mettre à jour les attributs transmis

Performance: PutItem peut affecter les performances si vous écrasez l'élément entier aussi souvent car il implique plus d'opérations que UpdateItem FindItem, DeleteOldVersion et AddNewVersion.

Du point de vue des coûts, il est également différent:

AWS calcule le coût en fonction des unités de capacité de lecture/écriture utilisées, totalement liées à la taille de l'élément en cours d'écrasement/mise à jour.

Dans le cas de PutItem, la taille sera la plus grande des nouvelles et des anciennes versions de l'élément. Par exemple, si vous remplacez un élément de 2 Ko par un élément de 1 Ko, cela consommera 2 WCU, mais les requêtes suivantes n'utiliseront qu'un seul WCU. Par conséquent, si vous écrasez si souvent et que la taille de l'élément change considérablement, cela calculera toujours la version la plus grande de l'élément et aura une incidence sur le coût.

En cas de modification d’éléments à l’aide de UpdateItem, la taille inclut tous les attributs préexistants de l’élément, pas la version la plus grande comme PutItem :) mais également ceux ajoutés ou mis à jour :(

4
Muhammad Soliman