Autres aspects de l’utilisation de l’opération Query dans DynamoDB - Amazon DynamoDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Autres aspects de l’utilisation de l’opération Query dans DynamoDB

Cette section couvre d’autres aspects de l’opération Query DynamoDB, notamment la limitation de la taille des résultats, le comptage des éléments analysés par rapport aux éléments renvoyés, la surveillance de la consommation de capacité de lecture et le contrôle de la cohérence en lecture.

Limiter le nombre d’éléments dans le jeu de résultats

Avec l’opération Query, vous pouvez limiter le nombre d’éléments qu’elle lit. Pour ce faire, définissez le paramètre Limit sur le nombre maximal d’éléments souhaité.

Par exemple, supposons que vous effectuiez une opération Query sur une table, avec une valeur Limit de 6 et sans expression de filtre. Le résultat Query contient les six premiers éléments de la table qui correspondent à l’expression de condition de clé de la demande.

Supposons maintenant que vous ajoutiez une expression de filtre à l’opération Query. Dans ce cas, DynamoDB lit jusqu’à six éléments, puis renvoie uniquement ceux qui correspondent à l’expression de filtre. Le résultat Query final contient au maximum six éléments, même si davantage d’éléments auraient correspondu à l’expression de filtre si DynamoDB avait continué à lire plus d’éléments.

Comptabilisation des éléments dans les résultats

Outre les éléments qui correspondent à vos critères, la réponse d’une opération Query contient les éléments suivants :

  • ScannedCount – Nombre d’éléments qui correspondaient à l’expression de condition de clé avant qu’une expression de filtre (le cas échéant) soit appliquée.

  • Count – Nombre d’éléments qui restent après l’application d’une expression de filtre (le cas échéant).

Note

Si vous n’utilisez pas d’expression de filtre, alors ScannedCount et Count ont la même valeur.

Si la taille de l’ensemble de résultats Query est supérieure à 1 Mo, les opérations ScannedCount et Count représentent seulement un compte partiel du total des éléments. Vous devez effectuer plusieurs opérations Query pour pouvoir extraire tous les résultats (consultez Pagination des résultats de requête de table dans DynamoDB).

Chaque réponse Query comporte les ScannedCount et Count des éléments traités par cette demande Query particulière. Pour obtenir les totaux de toutes les demandes Query, vous pouvez garder un compte actif de ScannedCount et de Count.

Unités de capacité consommées par la requête

Vous pouvez interroger n’importe quelle table ou n’importe quel index secondaire avec Query, à condition de fournir le nom de l’attribut de clé de partition et une valeur unique pour cet attribut. Query renvoie tous les éléments contenant cette valeur de clé de partition. Vous pouvez éventuellement fournir un attribut de clé de tri et utiliser un opérateur de comparaison pour affiner les résultats de recherche. Les opérations d’API Query consomment des unités de capacité de lecture, comme suit.

Si vous effectuez une opération Query sur… DynamoDB consomme des unités de capacité de lecture de…
Table Capacité de lecture allouée de la table.
GSI Capacité de lecture allouée à l’index.
Index secondaire local Capacité de lecture allouée de la table de base.

Par défaut, l’opération Query ne renvoie pas de données concernant la consommation de capacité de lecture. Vous pouvez toutefois spécifier le paramètre ReturnConsumedCapacity dans une demande Query pour obtenir ces informations. Voici les paramètres valides pour ReturnConsumedCapacity :

  • NONE – Aucune donnée de capacité consommée n’est renvoyée. (Il s’agit de l’option par défaut.)

  • TOTAL – La réponse inclut le nombre agrégé d’unités de capacité de lecture consommées.

  • INDEXES – La réponse indique le nombre agrégé d’unités de capacité de lecture consommées, ainsi que la capacité consommée pour chaque table et index consultés.

DynamoDB calcule le nombre d’unités de capacité de lecture consommées en fonction du nombre d’éléments et de la taille de ces éléments, et non du volume de données renvoyées à une application. Pour cette raison, le nombre d’unités de capacité consommées sera le même que vous demandiez tous les attributs (comportement par défaut) ou seulement certains d’entre eux (avec une expression de projection). Le nombre est également le même, que vous utilisiez ou non une expression de filtre. Query consomme une unité de capacité de lecture minimale pour effectuer une lecture fortement cohérente par seconde ou deux lectures cohérentes à terme par seconde pour un élément d’une taille maximale de 4 Ko. Si vous devez lire un élément d’une taille supérieure à 4 Ko, DynamoDB a besoin d’unités de demande de lecture supplémentaires. Les tables vides et les très grandes tables comportant un nombre restreint de clés de partition peuvent entraîner la facturation de certaines RCU supplémentaires au-delà du volume de données interrogées. Cela couvre les frais de traitement de la demande Query, même en l’absence de données.

Cohérence en lecture de la requête

Par défaut, une opération Query effectue des lectures cohérentes à terme. Cela signifie que les résultats de l’opération Query peuvent ne pas refléter des modifications apportées par des opérations PutItem ou UpdateItem récentes. Pour en savoir plus, consultez Cohérence en lecture DynamoDB.

Si vous avez besoin de lectures fortement cohérentes, définissez le paramètre ConsistentRead sur true dans la demande Query.