Utilisation d'index secondaires globaux dans DynamoDB à l'aide de AWS CLI - 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.

Utilisation d'index secondaires globaux dans DynamoDB à l'aide de AWS CLI

Vous pouvez utiliser le AWS CLI pour créer une table Amazon DynamoDB avec un ou plusieurs index secondaires globaux, décrire les index de la table et effectuer des requêtes à l'aide des index.

Créer une table avec un index secondaire global

Vous pouvez créer des index secondaires globaux au moment où vous créez une table. Pour ce faire, utilisez le paramètre create-table et fournissez vos spécifications pour un ou plusieurs index secondaires globaux. L'exemple suivant crée une table nommée GameScores avec un index secondaire global nommé GameTitleIndex. La table de base possède une clé de partition UserId et une clé de tri deGameTitle, vous permettant de trouver efficacement le meilleur score d'un utilisateur individuel pour un jeu spécifique, tandis qu'GSIelle possède une clé de partition GameTitle et une clé de tri deTopScore, vous permettant de trouver rapidement le meilleur score global pour un jeu en particulier.

aws dynamodb create-table \ --table-name GameScores \ --attribute-definitions AttributeName=UserId,AttributeType=S \ AttributeName=GameTitle,AttributeType=S \ AttributeName=TopScore,AttributeType=N \ --key-schema AttributeName=UserId,KeyType=HASH \ AttributeName=GameTitle,KeyType=RANGE \ --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=5 \ --global-secondary-indexes \ "[ { \"IndexName\": \"GameTitleIndex\", \"KeySchema\": [{\"AttributeName\":\"GameTitle\",\"KeyType\":\"HASH\"}, {\"AttributeName\":\"TopScore\",\"KeyType\":\"RANGE\"}], \"Projection\":{ \"ProjectionType\":\"INCLUDE\", \"NonKeyAttributes\":[\"UserId\"] }, \"ProvisionedThroughput\": { \"ReadCapacityUnits\": 10, \"WriteCapacityUnits\": 5 } } ]"

Vous devez attendre que DynamoDB crée la table et définisse l'état de celle-ci sur ACTIVE. Après cela, vous pouvez commencer à insérer des éléments de données dans la table. Vous pouvez utiliser la commande describe-table pour déterminer l'état de la création de table.

Ajouter un index secondaire global à une table existante

Vous pouvez également ajouter ou modifier des index secondaires globaux après la création de la table. Pour ce faire, utilisez le paramètre update-table et fournissez vos spécifications pour un ou plusieurs index secondaires globaux. L'exemple suivant utilise le même schéma que l'exemple précédent, mais suppose que la table a déjà été créée et que nous allons l'ajouter GSI ultérieurement.

aws dynamodb update-table \ --table-name GameScores \ --attribute-definitions AttributeName=TopScore,AttributeType=N \ --global-secondary-index-updates \ "[ { \"Create\": { \"IndexName\": \"GameTitleIndex\", \"KeySchema\": [{\"AttributeName\":\"GameTitle\",\"KeyType\":\"HASH\"}, {\"AttributeName\":\"TopScore\",\"KeyType\":\"RANGE\"}], \"Projection\":{ \"ProjectionType\":\"INCLUDE\", \"NonKeyAttributes\":[\"UserId\"] } } } ]"

Décrire une table avec un index secondaire global

Pour obtenir des informations concernant les index secondaires globaux sur une table, utilisez le paramètre describe-table. Pour chaque index, vous pouvez accéder à son nom, à son schéma de clé et aux attributs projetés.

aws dynamodb describe-table --table-name GameScores

Interroger un index secondaire global

Vous pouvez utiliser l'opération query sur un index secondaire global de la même manière que vous utilisez l'opération query sur une table. Vous devez spécifier le nom d'index, les critères de requête pour la clé de tri d'index et les attributs que vous souhaitez renvoyer. Dans cet exemple, l'index est GameTitleIndex et la clé de tri d'index est GameTitle.

Les seuls attributs renvoyés sont ceux qui ont été projetés dans l'index. Vous pourriez également modifier cette requête pour sélectionner des attributs autres que de clé, mais cela nécessiterait une activité d'extraction de table relativement coûteuse. Pour plus d'informations sur les extractions de table, consultez Projections d'attribut.

aws dynamodb query --table-name GameScores\ --index-name GameTitleIndex \ --key-condition-expression "GameTitle = :v_game" \ --expression-attribute-values '{":v_game":{"S":"Alien Adventure"} }'