Opération de balayage DynamoDB

Opération de balayage DynamoDB
Les opérations de numérisation sont sans doute les instruments les plus francs d'une liste d'outils DynamoDB. Une opération de scan dans AWS DynamoDB lit chaque élément du tableau ou de l'index secondaire sur lequel il est utilisé. Il peut saisir n'importe quoi sur son chemin. Ainsi, une opération de scan, par défaut, renvoie tous les attributs de données pour chaque élément de votre tableau ou index.

Vous pouvez modifier la nature par défaut des opérations de numérisation à l'aide du paramètre ProjectionExpression, car cela ne renvoie que les attributs spécifiés et pas tout dans l'index ou le tableau. Notamment, chaque demande de numérisation ne peut revenir jusqu'à 1 Mo de données sur les éléments et rien de plus. En outre, DynamoDB peut appliquer une expression de filtre à tout ensemble de données et affiner les résultats avant qu'il ne fournisse les résultats à l'utilisateur.

Ce guide explique comment vous pouvez utiliser l'opération de scan sur DynamoDB. Il explique quand utiliser l'opération de balayage DynamoDB, le fonctionnement des expressions de filtrage, la cohérence en lecture des scans et les analyses parallèles.

Mais avant d'y arriver, il est essentiel d'utiliser l'opération de scan uniquement lorsque vous êtes certain que vous en avez besoin. Il fonctionne sur l'ensemble du tableau et peut utiliser toute votre capacité de lecture lorsqu'elle est utilisée sur les tables de taille réelle. De plus, lorsqu'il est utilisé sur le chemin critique d'une application, il peut être lent à renvoyer les résultats.

Situations où vous devez utiliser une analyse sur les tables et index DynamoDB

L'utilisation de l'opération de balayage sur DynamoDB a du sens dans les scénarios suivants:

  • Lorsque votre table est très petite
  • Lorsque vous utilisez des index secondaires globaux pour configurer les files d'attente de travail
  • Lors de l'exportation de toutes les données d'un tableau donné à un autre système de stockage

Effectuer une analyse de base sur une table DynamoDB

Les opérations de numérisation sont faciles à gérer. Tout ce que vous avez à faire est de spécifier votre table à côté de la commande AWS DynamoDB Scan. Un utilitaire de balayage simple devrait ressembler à ceci:

$ aws dynamodb scan \
--Nom de table Emplyeedata \
$ Local

Le résultat est indiqué dans ce qui suit. Notez qu'il est tronqué pour être suffisamment brève pour l'illustration, car l'affichage des 35 éléments de cet article peut être encombrant.

L'opération de balayage sur DynamoDB à l'aide des expressions de filtre

La réponse précédente renvoie les 35 éléments contenus dans le tableau. Cependant, vous pouvez utiliser le paramètre d'expression -Projection pour spécifier les attributs qui vous intéressent. Également connu sous le nom d'expressions de filtre, cette fonctionnalité vous permet d'affiner vos résultats et de déterminer les éléments spécifiques du tableau que vous trouvez dans la réponse. Les résultats dont vous n'avez pas besoin ne seront pas dans la réponse.

Vous ne devez appliquer le paramètre d'expression du filtre qu'après avoir terminé votre analyse complète et avoir les résultats avec vous. Cependant, les expressions de projection et les analyses de dynamoDB complètes consommeront les quantités égales de votre capacité de lecture. Et tandis que les limites de scan ont souvent un maximum de 1 Mo de données, ce calcul se produit avant d'évaluer les résultats d'expression du filtre.

Assurez-vous de spécifier tous les attributs dont vous avez besoin dans l'expression du filtre. Les attributs peuvent inclure des clés de partition et des clés de tri. Les expressions de filtre partagent la même syntaxe que les expressions de condition.

Par exemple, l'utilitaire d'interface de commande AWS de commande AWS scanne la table Employeedata et renvoie les détails des éléments qui ont été joués à la longueur.

AWS DynamoDB Scan \
--Nom de table Employeedata \
--Filter-Expression "Laseremployed =: Name" \
--expression-attribut-vale '": name": "s": "user ab"'

Exécution d'une opération de balayage qui dépasse 1 Mo de la limite de données

Nous avons dit à maintes reprises que l'opération de balayage DynamoDB avait une limite de données de 1 Mo. Mais que se passe-t-il lorsque les analyses ont atteint la limite de données de 1 Mo? Si vous atteignez la limite de 1 Mo pendant un scan, la réponse contiendra une clé «NextToken».

Utilisez la valeur fournie dans la clé «NextToken» avec le - -départ Option pour continuer votre fonction de scan à partir de l'endroit où il s'est arrêté. Vous pouvez tester cette fonctionnalité avec le - - max Option limite. Dans cet exemple, plutôt que de tenter une analyse complète, nous scannons notre tableau Employeedata mais fixe notre limite d'élément à un maximum de 1 comme indiqué dans les éléments suivants:

$ aws dynamodb scan \
--Nom de table Userorderstable \
--MAX-ITEMS 1 \
$ Local

La réponse ne contient qu'un seul élément. Cependant, vous trouverez également une clé «suivante» dans les résultats pour vous permettre de poursuivre le scan à partir de l'endroit où il s'est arrêté. Reportez-vous à la capture d'écran suivante:

La réponse précédente ne produit qu'un seul élément à partir d'un tableau qui contient 35 éléments. Vous pouvez terminer le scan à l'aide de la touche NextToken fournie.

En utilisant des scans parallèles

Les principales raisons pour lesquelles DynamoDB reste une base de données populaire est sa vitesse, sa flexibilité et son évolutivité. Fait intéressant, l'utilisation de l'opération de scan vous permet également d'exporter le contenu pour l'analyse des données ou le stockage à froid.

Fonctionnalités DynamoDB Segments qui permet aux analyses parallèles de scanner de grandes quantités de données sans compter sur un seul processus de scan sur chaque tableau. Cette fonction vous permet de spécifier le nombre de Segments que vous voulez qu'une table soit divisée et les demandes de chaque segment. Cela permet aux gestionnaires de données de scanner les données d'un tableau donné en parallèle.

Bien que notre table Employeedata qui est utilisée dans ce tutoriel n'ait pas une grande quantité de données, nous pouvons la diviser en quatre segments et l'utiliser pour cette illustration. Vous pouvez structurer votre commande de scan en définissant le nombre de segments et le numéro de segment que vous avez l'intention de scanner. Alors que les segments sont indexés zéro, l'utilisation de 0 dans votre spécification de segment peut être une tâche difficile.

$ aws dynamodb scan \
--Nom de table Employeedata \
--Total-Segments 4 \
--Segment 1 \
$ Local

Les résultats ne contiennent que les éléments qui relèvent du premier segment. La réponse ressemble à ceci. Notez que les résultats sont tronqués pour la concision et ne comportent que les premiers et les derniers éléments du premier segment.

Conclusion

C'est tout au sujet de l'opération de balayage DynamoDB. Bien qu'il s'agisse sans doute de l'une des opérations les plus sans effort dans AWS DynamoDB, vous devez l'utiliser avec parcimonie car il peut consommer toute votre allocation de capacité Consume. Encore une fois, assurez-vous que vous savez quand vous pouvez utiliser les différentes applications de l'opération de scan.