Expressions de filtre DynamoDB : tout ce que vous devez savoir

Expressions De Filtre Dynamodb Tout Ce Que Vous Devez Savoir



Les expressions de filtre sont utilisées dans la fonction No-SQL DynamoDB comme les clauses WHERE qui sont courantes dans les bases de données SQL. Cependant, étant donné que DynamoDB est une base de données No-SQL, les expressions de filtre se comportent assez différemment des clauses WHERE en raison de la nature et de la structure des bases de données No-SQL.

Cet article se concentre sur les expressions de filtre. Par conséquent, nous allons définir les expressions de filtre, expliquer pourquoi et quand elles sont applicables, et fournir un guide étape par étape sur la façon de les utiliser à travers des exemples pertinents.

Que sont les expressions de filtre ?

Les expressions de filtre sont une technique courante pour filtrer les données dans DynamoDB lors des opérations de requête et d'analyse. Dans DynamoDB, la modélisation et l'organisation appropriées des données reposent sur le filtrage. Alors que la plupart des applications ont toujours des tonnes de données enregistrées, vous pouvez avoir un besoin urgent d'un élément du vaste gâchis.







Votre capacité à récupérer les données correctes chaque fois que vous en avez besoin dépend des capacités de filtrage de votre base de données, et c'est là que les expressions de filtre vous aident. Ils spécifient les résultats dans l'élément de requête que vous souhaitez vous voir renvoyés car ils suppriment le reste des éléments.



Vous pouvez appliquer les expressions de filtre sur les filtres côté serveur sur les attributs d'élément après la fin d'une opération Query mais avant que le serveur ne renvoie les résultats de votre appel Query. Cela implique que votre requête consomme toujours la même quantité de capacité de lecture, que vous utilisiez ou non une expression de filtre.



En outre, comme pour les opérations de requête ordinaires, votre limite de données de 1 Mo pour les opérations de requête se produit avant l'évaluation de votre opération d'expression de filtre. Vous pouvez utiliser cette opération pour réduire la charge utile, rechercher des éléments spécifiques et améliorer la simplicité et la lisibilité lors du développement de l'application.





Syntaxe d'expression de filtre et exemples

Notamment, les expressions de filtre et les expressions de clé utilisent la même syntaxe. En outre, les expressions de filtre et les expressions de condition peuvent également utiliser les mêmes fonctions, comparateurs et opérateurs logiques.

Les autres opérateurs qui filtrent les expressions peuvent également utiliser incluent l'opérateur CONTAINS, l'opérateur OR, l'opérateur différent de (), l'opérateur IN, l'opérateur BETWEEN, l'opérateur BEGINS_WITH, l'opérateur SIZE et l'opérateur EXISTS.



Exemple 1 : Interrogation à l'aide de l'AWS CLI et des clés primaires DynamoDB

Cet exemple interroge la table Musique pour un genre particulier (clé de partition) et un artiste spécifique (clé de tri). L'utilitaire ne renvoie un résultat que pour les éléments qui correspondent à la clé de partition particulière et à la clé de tri pour les chansons avec le plus de vues.

Vous pouvez spécifier le nombre de vues (#v) dans la commande. Par exemple, nous marquons notre limite minimale à 1 000 vues pour impliquer que seuls les résultats des chansons avec plus de 1 000 vues reviendront.

$ requête aws dynamodb \
--nom de la table La musique \
--clé-condition-expression 'Genre = :fn et Artiste = :sub' \
--expression-filtre '#v >= :num(1000)' \
--expression-attribute-names '{'#v': 'Vues'}' \
--expression-attribute-values dossier: // valeurs.json

Exemple 2 : Utilisation de l'AWS CLI avec l'expression de condition

Nous pouvons restructurer la même requête que dans l'exemple précédent, mais maintenant avec des clés de condition à côté de nos filtres. Il n'inclut pas la clé de tri. Au lieu de cela, il récupère tous les enregistrements de l'artiste spécifié avec plus de 1 000 vues. Il peut également être reconstruit pour fournir des commandes au-dessus d'un nombre donné pour un nom d'utilisateur particulier (customer_id).

$ requête aws dynamodb \
--nom de la table La musique \
--clé-condition-expression 'Nom d'utilisateur = :nom d'utilisateur' \
--expression-filtre 'Montant > :montant' \
--expression-attribute-values '{
':nom d'utilisateur': { 'S': 'artiste' },
':montant': { 'N': '1000' }
}'
\
$LOCALE

Un exemple de résultat ressemble à ceci :

L'illustration donnée montre que sur les 56 titres de chansons d'un même artiste, seules sept chansons ont plus de 1 000 vues. Nous avons cependant tronqué le chiffre par souci de brièveté et n'avons inclus que le premier et le dernier résultats dans la liste.

Exemple 3 : Utilisation d'expressions de filtre avec l'opérateur No-Equal ()

Dans l'utilitaire Java suivant, nous voulons interroger notre table (Movie Collection) pour tous les films qui ne sont pas égaux à 'Movie X'. Assurez-vous d'utiliser une expression de filtre avec un attribut (#name) à côté d'une valeur d'attribut d'expression (:name) comme illustré ci-dessous :

const AWS = exiger ( 'aws-sdk' ) ;
AWS.config.update ( { Région: 'eu-ouest-1' } ) ;
const dynamodb = new AWS.DynamoDB.DocumentClient ( ) ;

var paramètres = {
Nom de la table: 'collection de films' ,
KeyConditionExpression : '#PK = :PK' ,
ExpressionFiltre : '#nom nom' , ( expression de filtre )
Noms d'attributs d'expression : { '#PAQUET' : 'PAQUET' , '#Nom' : 'Nom' } , ( expression de condition )
Valeurs d'attribut d'expression : {
':PAQUET' : 'OgejhHrdRS453HGD4Ht44' ,
':Nom' : 'Film X'
}
} ;

dynamodb.query ( paramètres, une fonction ( erreur, données ) {
si ( se tromper ) console.log ( se tromper ) ;
autre console.log ( Les données ) ;
} ) ;

Exemple 4 : Utilisation d'expressions de filtre avec l'opérateur Scan

Alors que la commande précédente utilise <> pour récupérer uniquement les éléments qui ne sont pas égaux au nom du film appelé Film X, assurez-vous que vous utilisez les expressions de condition clé ici avec l'expression de filtre. En effet, il est impossible de filtrer les données dans l'opérateur Query sans utiliser une expression de condition clé.

var paramètres = {
Nom de la table: 'collection de films' ,
ExpressionFiltre : 'PK = :PK et #nom :nom' ,
Noms d'attributs d'expression : { '#Nom' : 'Nom' } ,
Valeurs d'attribut d'expression : {
':PAQUET' : 'OgejhHrdRS453HGD4Ht44' ,
':Nom' : 'Film X'
}
} ;

dynamodb.scan ( paramètres, une fonction ( erreur, données ) {
si ( se tromper ) console.log ( se tromper ) ;
autre console.log ( Les données ) ;
} ) ;

Conclusion

C'est la fin de notre didacticiel DynamoDB sur les expressions de filtre. Vous pouvez utiliser les expressions de filtre pour récupérer un ensemble de données préférées, filtrer les données récupérées après une analyse ou une requête, ou renvoyer un ensemble de données à un client. Bien qu'il soit applicable avec un ensemble d'outils, il existe des cas où l'utilisation des expressions de filtre n'est pas viable. Par exemple, vous ne pouvez les utiliser que si vous disposez d'un modèle de données approprié, lors de l'utilisation d'une clé primaire et lors de l'extraction de grandes portions de données.