Opérations de lecture et d’écriture DynamoDB
Les opérations de lecture DynamoDB vous permettent d’extraire un ou plusieurs éléments d’une table en spécifiant la valeur de la clé de partition et, éventuellement, la valeur de la clé de tri. Les opérations d’écriture DynamoDB vous permettent d’insérer, de mettre à jour ou de supprimer des éléments dans une table. Cette rubrique explique la consommation d’unités de capacité pour ces deux opérations.
Rubriques
Consommation des unités de capacité pour les opérations de lecture
Les demandes de lecture de DynamoDB peuvent être soit fortement cohérentes, soit éventuellement cohérentes, soit transactionnelles.
-
Une demande de lecture fortement cohérente d’un élément pouvant représenter jusqu’à 4 Ko nécessite une unité de lecture.
-
Une demande de lecture cohérente à terme d’un élément pouvant représenter jusqu’à 4 Ko nécessite une demi-unité de lecture.
-
Une demande de lecture transactionnelle d’un élément pouvant représenter jusqu’à 4 Ko nécessite deux unités de lecture.
Pour en savoir plus sur les modèles de cohérence de lecture dans DynamoDB, consultez Cohérence en lecture DynamoDB.
Les tailles d’élément pour les lectures sont arrondies au multiple de 4 Ko supérieur. Par exemple, la lecture d’un élément d’une taille de 3 500 octets consomme le même débit que la lecture d’un élément d’une taille de 4 Ko.
Si vous devez lire un élément d’une taille supérieure à 4 Ko, DynamoDB a besoin d’unités de lecture supplémentaires. Le nombre total d’unités de lecture nécessaires dépend de la taille de l’élément et du fait que vous vouliez ou pas une lecture cohérente à terme ou une lecture fortement cohérente. Par exemple, si la taille de votre élément est de 8 Ko, il vous faut 2 unités de lecture pour assurer une lecture fortement cohérente. Vous aurez besoin d’1 unité de lecture si vous choisissez des lectures cohérentes à terme ou de 4 unités de lecture pour une demande de lecture transactionnelle.
La liste suivante décrit comment les opérations de lecture DynamoDB consomment des unités de lecture :
-
GetItem : lit un élément unique d’une table. Pour déterminer le nombre d’unités de lecture que l’opération
GetItemconsommera, arrondissez la taille de l’élément au multiple de 4 Ko supérieur. Il s’agit du nombre d’unités de lecture nécessaires, si vous avez spécifié une lecture fortement cohérente. Pour une lecture cohérente à terme, qui est la valeur par défaut, divisez ce nombre par deux.Par exemple, si vous lisez un élément d’une taille de 3,5 Ko, mise à l’échelle arrondit sa taille à 4 Ko. Si vous lisez un élément de 10 Ko, DynamoDB arrondit sa taille à 12 Ko.
-
BatchGetItem : lit jusqu’à 100 éléments à partir d’une ou de plusieurs tables. DynamoDB traite chaque élément du lot comme une demande
GetItemindividuelle. DynamoDB arrondit d’abord la taille de chaque élément à la limite de 4 Ko suivante, puis calcule la taille totale. Le résultat n’est pas nécessairement identique à la taille totale de tous les éléments. Par exemple, siBatchGetItemlit deux éléments de tailles de 1,5 Ko et 6,5 Ko, la taille que DynamoDB calcule est de 12 Ko (4 Ko + 8 Ko). DynamoDB ne calcule pas la taille comme 8 Ko (1,5 Ko + 6,5 Ko). -
Query : lit plusieurs éléments ayant la même valeur de clé de partition. Tous les éléments renvoyés sont traités comme une seule opération de lecture, dans laquelle DynamoDB calcule la taille totale de tous les éléments. DynamoDB arrondit ensuite la taille à la limite de 4 Ko suivante. Par exemple, supposons que votre requête renvoie 10 éléments dont la taille combinée est de 40,8 Ko. DynamoDB arrondit la taille d’élément pour l’opération à 44 Ko. Si une requête renvoie 1 500 éléments de 64 octets chacun, la taille cumulée est de 96 Ko.
-
Scan : lit tous les éléments d’une table. DynamoDB prend en compte la taille des éléments évalués, pas celle des éléments renvoyés par l’analyse. Pour plus d’informations sur les opérations d’analyse, consultez Analyse de tables dans DynamoDB.
Important
Si vous effectuez une opération de lecture sur un élément qui n’existe pas, DynamoDB consomme toujours le débit de lecture comme indiqué ci-dessus. Pour les opérations Query/Scan, un débit de lecture supplémentaire vous sera toujours facturé en fonction de la cohérence en lecture et du nombre de partitions recherchées pour répondre à la demande, même en l’absence de données.
Pour toute opération qui renvoie des éléments, vous pouvez demander un sous-ensemble d’attributs à extraire. Cependant, agir ainsi n’a aucun impct sur les calculs de taille d’élément. En outre, Query et Scan peuvent renvoyer des nombres d’éléments au lieu de valeurs d’attribut. L’obtention du nombre d’éléments utilise le même nombre d’unités de lecture et est soumise aux mêmes calculs de taille des éléments. En effet, DynamoDB doit lire chacun des éléments pour incrémenter le nombre.
Consommation d’unités de capacité pour les opérations d’écriture
Une unité d’écriture représente une écriture d’un élément d’une taille pouvant atteindre 1 Ko. Si vous avez besoin d’écrire un élément d’une taille supérieure à 1 Ko, DynamoDB doit consommer des unités d’écriture supplémentaires. Les demandes d’écriture transactionnelles requièrent 2 unités d’écriture pour effectuer une écriture d’éléments d’une taille pouvant atteindre 1 Ko. Le nombre total d’unités requises de demande d’écriture dépend de la taille de l’élément. Par exemple, si la taille de votre élément est de 2 Ko, il vous faut 2 unités d’écriture pour assurer une demande d’écriture ou 4 unités d’écriture pour une demande d’écriture transactionnelle.
Les tailles d’élément pour les écritures sont arrondies au multiple de 1 Ko supérieur. Par exemple, l’écriture d’un élément de 500 octets consomme le même débit que l’écriture d’un élément de 1Ko.
La liste suivante décrit comment les opérations d’écriture DynamoDB consomment des unités d’écriture :
-
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 remplace l’élément. Pour calculer la consommation de débit approvisionné, la taille d’élément qui compte est la plus grande des deux.
-
UpdateItem : modifie un élément unique dans la table. DynamoDB prend en compte la taille de l’élément tel qu’il apparaît avant et après la mise à jour. Le débit approvisionné consommé reflète la plus grande de ces tailles d’élément. Même si vous mettez à jour un sous-ensemble d’attributs de l’élément,
UpdateItemutilise toujours la totalité du volume de débit approvisionné (la plus importante des tailles d’élément « avant » et « après »). -
DeleteItem : supprime un élément unique d’une table. La consommation de débit approvisionné est basée sur la taille de l’élément supprimé.
-
BatchWriteItem : écrit jusqu’à 25 éléments dans une ou plusieurs tables. DynamoDB traite chaque élément du lot comme une demande
PutItemouDeleteItemindividuelle (les mises à jour ne sont pas prises en charge). DynamoDB arrondit d’abord la taille de chaque élément à la limite de 1 Ko suivante, puis calcule la taille totale. Le résultat n’est pas nécessairement identique à la taille totale de tous les éléments. Par exemple, siBatchWriteItemécrit deux éléments de taille de 500 octets et 3,5 Ko, la taille que DynamoDB calcule est de 5 Ko (1 Ko + 4 Ko). DynamoDB ne calcule pas la taille comme 4 Ko (500 Ko + 3,5 Ko).
Pour les opérations PutItem, UpdateItem, et DeleteItem, DynamoDB arrondit la taille de l’élément à la limite de 1 Ko supérieure. Par exemple, si vous insérez ou supprimez un élément de 1,6 Ko, DynamoDB arrondit la taille de l’élément à 2 Ko.
PutItem, UpdateItem et DeleteItem permettent des écritures conditionnelles, dans lesquelles vous spécifiez une expression qui doit évaluer la valeur true pour que l’opération réussisse. Si le résultat de l’expression est false, DynamoDB continue à consommer des unités de capacité d’écriture de la table. Le nombre d’unités de capacité d’écriture utilisées dépend de la taille de l’élément. Cet élément peut être un élément existant dans la table ou un nouvel élément que vous essayez de créer ou de mettre à jour. Supposons, par exemple, que la taille d’un élément existant est égale à 300 Ko. La taille du nouvel élément que vous essayez de créer ou de mettre à jour est égale à 310 Ko. La taille des unités de capacité d’écriture consommées sera égale à 310 Ko pour le nouvel article.