Autres aspects de l'utilisation de l'opération Query - 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

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).

Chaque réponse Query contient 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…
Tableau Capacité de lecture allouée à la table.
Index secondaire global Capacité de lecture allouée à l'index.
Index secondaire local Capacité de lecture allouée à 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. Les paramètres suivants sont 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 leur taille, et non en fonction de la quantité 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. Queryconsomme une unité de capacité de lecture minimale pour effectuer une lecture hautement cohérente par seconde, ou deux lectures éventuellement cohérentes 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 contenant un nombre restreint de clés de partition peuvent entraîner la facturation de certaines RCU supplémentaires au-delà de la quantité de données demandées. Cela couvre les frais de traitement de la Query demande, 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 éventuellement cohérentes. 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 de plus amples informations, veuillez consulter Cohérence en lecture.

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