Opérations de base sur les tables DynamoDB - Amazon DynamoDB

Opérations de base sur les tables DynamoDB

Comme d’autres systèmes de base de données, Amazon DynamoDB stocke les données dans des tables. Vous pouvez gérer vos tables à l’aide de quelques opérations de base.

Création d’une table

L’opération CreateTable vous permet de créer une table dans Amazon DynamoDB. Pour créer la table, vous devez fournir les informations suivantes :

  • Nom de la table. Le nom doit être conforme aux règles de dénomination DynamoDB et unique pour le compte et la région AWS actuels. Par exemple, vous pouvez créer une table People dans la région USA Est (Virginie du Nord), et une autre table People en Europe (Irlande). Ces deux tables seraient toutefois entièrement différentes l’une de l’autre. Pour en savoir plus, consultez Types de données et règles de dénomination pris en charge dans Amazon DynamoDB.

  • Clé primaire. La clé primaire peut se composer d’un attribut (clé de partition) ou de deux attributs (clé de partition et clé de tri). Vous devez indiquer les noms d’attribut, les types de données et le rôle de chaque attribut : HASH (pour une clé de partition) et RANGE (pour une clé de tri). Pour en savoir plus, consultez Clé primaire.

  • Paramètres de débit (pour les tables allouées) Si vous utilisez le mode alloué, vous devez spécifier les paramètres de débit initial de lecture et d’écriture pour la table. Vous pouvez modifier ces paramètres ultérieurement ou activer l’autoscaling de DynamoDB afin que les paramètres soient gérés pour vous. Pour en savoir plus, consultez Mode de capacité provisionnée DynamoDB et Gestion automatique de la capacité de débit avec la scalabilité automatique de DynamoDB.

Exemple 1 : créer une table à la demande

Pour créer la même table Music en mode à la demande.

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --billing-mode=PAY_PER_REQUEST

L’opération CreateTable renvoie des métadonnées pour la table, comme illustré ci-dessous.

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 0, "ReadCapacityUnits": 0 }, "TableSizeBytes": 0, "TableName": "Music", "BillingModeSummary": { "BillingMode": "PAY_PER_REQUEST" }, "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397468.348 } }
Important

Lorsque vous appelez DescribeTable sur une table à la demande, les unités de capacité de lecture et d’écriture sont remises à 0.

Exemple 2 : créer une table allouée

L’exemple AWS CLI suivant montre comment créer une table (Music). La clé primaire se compose de Artist (clé de partition) et de SongTitle (clé de tri), chacune d’elles ayant le type de données String. Le débit maximum pour cette table est de 10 unités de capacité de lecture et 5 unités de capacité d’écriture.

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5

L’opération CreateTable renvoie des métadonnées pour la table, comme illustré ci-dessous.

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 5, "ReadCapacityUnits": 10 }, "TableSizeBytes": 0, "TableName": "Music", "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397215.37 } }

L’élément TableStatus indique l’état réel de la table (CREATING). La création de la table peut prendre un certain temps, selon les valeurs que vous spécifiez pour ReadCapacityUnits et WriteCapacityUnits. Plus ces valeurs sont élevées, plus DynamoDB doit allouer des ressources à la table.

Exemple 3 : créer une table à l’aide de la classe de tables DynamoDB Standard-Infrequent Access

Pour créer la même table Music à l’aide de la classe de tables DynamoDB Standard-Infrequent Access.

aws dynamodb create-table \ --table-name Music \ --attribute-definitions \ AttributeName=Artist,AttributeType=S \ AttributeName=SongTitle,AttributeType=S \ --key-schema \ AttributeName=Artist,KeyType=HASH \ AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=10,WriteCapacityUnits=5 \ --table-class STANDARD_INFREQUENT_ACCESS

L’opération CreateTable renvoie des métadonnées pour la table, comme illustré ci-dessous.

{ "TableDescription": { "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" } ], "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "WriteCapacityUnits": 5, "ReadCapacityUnits": 10 }, "TableClassSummary": { "LastUpdateDateTime": 1542397215.37, "TableClass": "STANDARD_INFREQUENT_ACCESS" }, "TableSizeBytes": 0, "TableName": "Music", "TableStatus": "CREATING", "TableId": "12345678-0123-4567-a123-abcdefghijkl", "KeySchema": [ { "KeyType": "HASH", "AttributeName": "Artist" }, { "KeyType": "RANGE", "AttributeName": "SongTitle" } ], "ItemCount": 0, "CreationDateTime": 1542397215.37 } }

Description d’une table

Affichez les détails d’une table à l’aide de l’opération DescribeTable. Vous devez fournir le nom de la table. La sortie de DescribeTable est au même format que celle de CreateTable. Elle inclut l’horodatage de la création de la table, son schéma de clé, ses paramètres de débit alloué, sa taille estimée et tout index secondaire présent.

Important

Lorsque vous appelez DescribeTable sur une table à la demande, les unités de capacité de lecture et d’écriture sont remises à 0.

Exemple
aws dynamodb describe-table --table-name Music

La table est prête à l’emploi lorsque TableStatus passe de CREATING à ACTIVE.

Note

Si vous exécutez une demande DescribeTable immédiatement après une demande CreateTable, DynamoDB peut renvoyer une erreur (ResourceNotFoundException). En effet, DescribeTable utilise une demande à cohérence à terme et les métadonnées pour votre table peuvent ne pas être disponibles à ce moment-là. Attendez quelques secondes, puis réessayez d’envoyer la demande DescribeTable.

À des fins de facturation, vos coûts de stockage DynamoDB incluent une surcharge par élément de 100 octets. (Pour en savoir plus, consultez Tarification DynamoDB.) Ces 100 octets supplémentaires par élément ne sont pas utilisés dans les calculs d’unité de capacité ou par l’opération DescribeTable.

Mise à jour d’une table

L’opération UpdateTable vous permet d’exécuter l’une des actions suivantes :

Exemple

L’exemple d’AWS CLI suivant illustre comment modifier les paramètres de débit alloué d’une table.

aws dynamodb update-table --table-name Music \ --provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10
Note

Lorsque vous émettez une demande UpdateTable, le statut de la table passe de AVAILABLE à UPDATING. La table reste entièrement utilisable pendant sa UPDATING. Lorsque ce processus est terminé, le statut de la table passe de UPDATING à AVAILABLE.

Exemple

L’exemple d’AWS CLI suivant montre comment modifier le mode de capacité de lecture ou d’écriture pour activer le mode à la demande.

aws dynamodb update-table --table-name Music \ --billing-mode PAY_PER_REQUEST

Suppression d’une table

Vous pouvez supprimer une table non utilisée avec l’opération DeleteTable. Une fois supprimée, une table est irrécupérable. Pour supprimer une table à l’aide d’AWS Management Console, consultez Étape 6 : (Facultatif) supprimer votre table DynamoDB pour nettoyer les ressources.

Exemple

L’exemple d’AWS CLI suivant illustre la suppression d’une table.

aws dynamodb delete-table --table-name Music

Lorsque vous émettez une demande DeleteTable, le statut de la table passe de ACTIVE à DELETING. La suppression de la table peut prendre un certain temps, selon les ressources utilisées (par exemple les données stockées dans la table ou les flux ou index sur la table).

Une fois l’opération DeleteTable terminée, la table n’existe plus dans DynamoDB.

Utilisation de la protection contre la suppression

Vous pouvez protéger une table contre toute suppression accidentelle grâce à la propriété de protection contre la suppression. L’activation de cette propriété pour les tables permet de s’assurer que celles-ci ne seront pas supprimées accidentellement lors des opérations classiques de gestion des tables par vos administrateurs. Cela vous aidera à éviter toute interruption de vos activités métier normales.

Le propriétaire de la table ou un administrateur autorisé contrôle la propriété de protection contre la suppression pour chaque table. La propriété de protection contre la suppression pour chaque table est désactivée par défaut. Cela inclut les répliques globales et les tables restaurées à partir de sauvegardes. Lorsque la protection contre la suppression est désactivée pour une table, celle-ci peut être supprimée par tous les utilisateurs autorisés par une stratégie Identity and Access Management (IAM). Lorsque la protection contre la suppression est activée pour une table, personne ne peut la supprimer.

Pour modifier ce paramètre, accédez aux Paramètres supplémentaires de la table, puis au volet Protection contre la suppression et sélectionnez Activer la protection contre la suppression.

La propriété de protection contre la suppression est prise en charge par la console DynamoDB, l’API, CLI/SDK et CloudFormation. L’API CreateTable prend en charge la propriété de protection contre la suppression lors de la création de la table, et l’API UpdateTable prend en charge la modification de la propriété de protection contre la suppression pour les tables existantes.

Note
  • Si un compte AWS est supprimé, toutes les données de ce compte, y compris les tables, sont toujours supprimées dans les 90 jours.

  • Si DynamoDB perd l’accès à une clé gérée par le client ayant permis de chiffrer une table, il archive tout de même la table. L’archivage implique la création d’une sauvegarde de la table et la suppression de l’original.

Liste des noms de table

L’opération ListTables renvoie les noms des tables DynamoDB pour le compte et la région AWS actuels.

Exemple

L’exemple d’AWS CLI suivant montre comment répertorier les noms de tables DynamoDB.

aws dynamodb list-tables

Description des quotas de débit alloué

L’opération DescribeLimits renvoie les quotas actuels de capacité de lecture et d’écriture pour le compte et la région AWS actuels.

Exemple

L’exemple de AWS CLI suivant montre comment décrire les quotas de débit actuellement alloué.

aws dynamodb describe-limits

La sortie présente les quotas supérieurs des unités de capacité de lecture et d’écriture pour le compte et la région AWS actuels.

Pour en savoir plus sur ces quotas et la procédure à suivre pour demander une augmentation des quotas, consultez Quotas de débit par défaut.