Amazon DynamoDB
Manuel du développeur (Version de l'API 2012-08-10)

Mode de capacité en lecture/écriture

Amazon DynamoDB offre deux modes de capacité en lecture/écriture pour traiter les lectures et écritures dans vos tables.

  • A la demande

  • Alloué (offre gratuite éligible, mode par défaut)

Le mode de capacité en lecture/écriture détermine la façon dont le débit de lecture et écriture vous est facturé et votre façon de gérer la capacité. Vous pouvez définir le mode de capacité en lecture/écriture lorsque vous créez une table ou que vous la modifiez ultérieurement.

Les index secondaires globaux héritent du mode de capacité en lecture/écriture de la table de base. Pour plus d'informations, consultez Considérations relatives au changement de mode de capacité en lecture/écriture.

Mode de capacité à la demande

Amazon DynamoDB à la demande est une option de facturation souple permettant de servir des milliers de demandes par seconde sans planification des capacités. DynamoDB à la demande offre une tarification de « paiement par demande » où vous ne payez que les demandes de lecture et d'écriture que vous exécutez.

Lorsque vous choisissez le mode de capacité à la demande, DynamoDB s'adapte instantanément à vos charges de travail, à mesure qu'elles augmentent ou diminuent jusqu'à un niveau de trafic atteint précédemment. Si le niveau de trafic d'une charge de travail atteint un nouveau pic, DynamoDB s'adapte rapidement afin de prendre en charge cette charge de travail. Les tables qui utilisent le mode à la demande fournissent les mêmes avantages en termes de latence inférieure à 10 millisecondes, d'engagement de niveau de service (SLA) et de sécurité que DynamoDB offre déjà. Vous pouvez choisir le mode de capacité à la demande à la fois pour les nouvelles tables et les tables existantes, et vous pouvez continuer à utiliser les API DynamoDB existantes sans modification du code.

Le mode à la demande est une bonne option si l'une des conditions suivantes est remplie :

  • Vous créez des tables avec des charges de travail inconnues.

  • Vous avez un trafic imprévisible au niveau de l'application.

  • Vous préférez ne payer qu'à l'utilisation.

Le taux de demandes n'est limité que par les limites de débit de table par défaut de DynamoDB, mais il peut être augmenté sur demande. Pour plus d'informations, consultez Limites de débit par défaut.

Pour vous familiariser avec la capacité à la demande, vous pouvez créer ou mettre à jour une table pour y activer le mode de capacité à la demande. Pour plus d'informations, consultez Opérations de base pour les tables.

Vous pouvez changer de mode de capacité en lecture/écriture une fois toutes les 24 heures. Pour les considérations à prendre en compte lorsque vous changez de mode de capacité en lecture/écriture, consultez Considérations relatives au changement de mode de capacité en lecture/écriture.

Note

La capacité à la demande n'est pas prise en charge actuellement par AWS Data Pipeline, l'outil d'importation/exportation de DynamoDB et AWS Glue.

Unités de demande de lecture et unités de demande d'écriture

Pour les tables en mode à la demande, il n'est pas nécessaire de spécifier le débit de lecture et d'écriture que devrait connaître votre application. DynamoDB vous facture les lectures et écritures que votre application effectue sur vos tables, qui sont comptabilisées sous la forme d'unités de demande de lecture et d'unités de demande d'écriture.

  • Une unité de demande de lecture représente une demande de lecture à cohérence forte ou deux demandes de lectures cohérentes à terme pour un élément d’une taille allant jusqu'à 4 KB. Les demandes de lecture transactionnelles nécessitent deux unités de demande de lecture pour effectuer une lecture pour les éléments d’une taille allant jusqu'à 4 KB. Si vous avez besoin de lire un élément dont la taille dépasse 4 KB, DynamoDB devra utiliser des unités supplémentaires de demande de lecture. Le nombre total d'unités de demande de lecture nécessaires dépend de la taille de l'élément et du fait que vous vouliez une lecture cohérente à terme ou une lecture à cohérence forte. Par exemple, si la taille de votre élément est 8 ko, il vous faut 2 unités de demande de lecture pour assurer une lecture à cohérence forte, 1 unité de demande de lecture si vous choisissez des lectures cohérentes à terme ou 4 unités de demande de lecture pour une demande de lecture transactionnelle.

    Note

    Pour en savoir plus sur les modèles de cohérence en lecture DynamoDB, consultez Cohérence en lecture.

  • Une unité de demande d'écriture représente une écriture pour un élément d’une taille allant jusqu'à 1 KB. Si vous avez besoin d'écrire un élément dont la taille est supérieure à 1 KB, DynamoDB doit utiliser des unités supplémentaires de demande d'écriture. Les demandes d'écriture transactionnelles exigent deux unités de demande d'écriture pour effectuer une écriture pour les éléments d’une taille allant jusqu'à 1 KB. Le nombre total d'unités requises de demande d'écriture dépend de la taille de l'élément. Par exemple, si la taille de votre élément est 2 ko, il vous faut 2 unités de demande d'écriture pour assurer une demande d'écriture ou 4 unités de demande d'écriture pour une demande d'écriture transactionnelle.

Pour obtenir la liste des régions AWS où la capacité à la demande DynamoDB est disponible, reportez-vous à Tarification de Amazon DynamoDB.

Trafic de pointe et propriétés de scalabilité

Les tables DynamoDB qui utilisent le mode de capacité à la demande s'adaptent automatiquement au volume de trafic de votre application. Le mode de capacité à la demande peut gérer jusqu'à deux fois le trafic de pointe précédent d'une table. Par exemple, si le trafic de votre application varie généralement entre 25 000 et 50 000 lectures à cohérence forte par seconde, la précédente pointe de trafic s'élevant à 50 000 lectures par seconde, le mode de capacité à la demande s'adapte instantanément pour gérer un trafic de 100 000 lectures par seconde maximum. Si votre application présente un trafic de 100 000 lectures par seconde, ce pic devient votre nouvelle capacité de pointe précédente, permettant ainsi au trafic futur d'atteindre jusqu'à 200 000 lectures par seconde.

Si vous avez besoin de plus du double de votre trafic de pointe précédent sur une table, DynamoDB alloue automatiquement davantage de capacité à mesure que votre volume de trafic augmente, pour éviter que votre charge de travail souffre de restrictions. Cette restriction peut cependant se produire si vous dépassez le double de votre trafic de pointe précédent dans les 30 minutes. Par exemple, si le trafic de votre application varie généralement entre 25 000 et 50 000 lectures à cohérence forte par seconde, la précédente pointe de trafic atteinte s'élevant à 50 000 lectures par seconde, DynamoDB recommande d'espacer la croissance de votre trafic pendant au moins 30 minutes avant de dépasser les 100 000 lectures par seconde.

Débit initial pour le mode de capacité à la demande

Si vous avez récemment activé le mode de capacité à la demande sur une table existante ou si vous avez créé une table en activant ce mode, la table possède les paramètres suivants de trafic de pointe précédent, même si la table n'a pas encore opéré de trafic en mode de capacité à la demande :

  • Nouvelle table créée avec le mode de capacité à la demande : le trafic de pointe précédent est de 2 000 unités de demande d'écriture ou 6 000 unités de demande de lecture. Vous pouvez immédiatement monter jusqu'au double de ce trafic de pointe précédent, ce qui permet aux nouvelles tables à la demande de servir jusqu'à 4 000 unités de demande d'écriture ou 12 000 unités de demande de lecture, ou toute combinaison linéaire de ces deux valeurs.

  • Table existante basculée vers le mode de capacité à la demande : Le trafic de pointe précédent équivaut aux unités de capacité en écriture et aux unités de capacité en lecture maximales précédentes allouées à la table ou aux paramètres pour une table nouvellement créée avec le mode de capacité à la demande, selon la valeur la plus élevée.

Comportement des tables lors d'un changement de mode de capacité en lecture/écriture

Lorsque vous changez le mode d'une table pour passer d'une capacité allouée à une capacité à la demande, DynamoDB apporte plusieurs changements à la structure de la table et des partitions. Ce processus peut prendre plusieurs minutes. Pendant la période de basculement, votre table fournit un débit correspondant aux volumes d'unités de capacité en écriture et en lecture alloués antérieurement. Si vous passez du mode de capacité à la demande vers le mode de capacité allouée, votre table fournit un débit correspondant au trafic de pointe précédent atteint lorsque la table était en mode de capacité à la demande.

Mode alloué

Si vous choisissez le mode alloué, vous spécifiez le nombre de lectures et d’écritures par seconde nécessaires pour votre application. Vous pouvez recourir à la scalabilité automatique pour ajuster automatiquement la capacité allouée de votre table en fonction de l'évolution du trafic. Cela vous aide à maîtriser l'utilisation de DynamoDB de manière à ne pas dépasser un taux de demandes défini et de maintenir ainsi la prévisibilité des coûts.

Le mode alloué est une bonne option si l'une des conditions suivantes est remplie :

  • Votre application présente un niveau de trafic prévisible.

  • Vous exécutez des applications dont le trafic est constant ou évolue progressivement.

  • Vous pouvez prévoir vos besoins de capacité pour contrôler les coûts.

Unités de capacité en lecture et unités de capacité en écriture

Pour les tables en mode alloué, vous spécifiez votre capacité de débit en termes d'unités de capacité en lecture (RCU) et d'unités de capacité en écriture (WCU) :

  • Une unité de capacité en lecture représente une lecture à cohérence forte par seconde, ou deux lectures cohérentes à terme (eventually consistent) (eventually consistent) par seconde, pour un élément dont la taille peut atteindre jusqu'à 4 KB. Les demandes de lecture transactionnelles exigent deux unités de capacité en lecture pour effectuer une lecture par seconde pour les éléments d’une taille allant jusqu'à 4 KB. Si vous avez besoin de lire un élément dont la taille est supérieure à 4 KB, DynamoDB doit utiliser des unités supplémentaires de capacité en lecture. Le nombre total d'unités requises de capacité en lecture dépend de la taille de l'élément et du fait que vous vouliez ou pas une lecture cohérente à terme (eventually consistent) ou une lecture à cohérence forte. Par exemple, si la taille de votre élément est 8 ko, il vous faut 2 unités de capacité en lecture pour assurer une lecture à cohérence forte par seconde, 1 unité de capacité de lecture si vous choisissez des lectures cohérentes à terme ou 4 unités de capacité de lecture pour une demande de lecture transactionnelle. Pour plus d'informations, consultez Consommation des unités de capacité pour les opérations de lecture.

    Note

    Pour en savoir plus sur les modèles de cohérence en lecture DynamoDB, consultez Cohérence en lecture.

  • Une unité de capacité en écriture représente une écriture par seconde pour un élément dont la taille peut atteindre 1 KB. Si vous avez besoin d'écrire un élément dont la taille est supérieure à 1 KB, DynamoDB doit utiliser des unités supplémentaires de capacité en écriture. Les demandes d'écriture transactionnelles exigent deux unités de capacité d'écriture pour effectuer une écriture par seconde pour les éléments d’une taille allant jusqu'à 1 KB. Le nombre total d'unités requises de capacité en écriture dépend de la taille de l'élément. Par exemple, si la taille de votre élément est 2 ko, il vous faut 2 unités de capacité en écriture pour assurer une demande d'écriture par seconde ou 4 unités de capacité en écriture pour une demande d'écriture transactionnelle. Pour plus d'informations, consultez Consommation des unités de capacité pour les opérations d'écriture.

Important

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

Si votre application lit ou écrit des éléments plus grands (jusqu'à une taille d'élément maximum DynamoDB de 400 KB), elle consommera plus d'unités de capacité.

Par exemple, supposons que vous créez une table allouée avec 6 unités de capacité en lecture et 6 unités de capacité en écriture. Avec ces paramètres, votre application pourrait effectuer les opérations suivantes :

  • Réaliser des lectures à forte cohérence pouvant atteindre 24 ko par seconde (4 KB × 6 unités de capacité en lecture).

  • Réaliser des lectures cohérentes à terme pouvant atteindre 48 ko par seconde (débit de lecture doublé).

  • Réaliser des demandes de lecture transactionnelles pouvant atteindre 3 ko par seconde.

  • Écrire jusqu'à 6 ko par seconde (1 KB × 6 unités de capacité en écriture).

  • Réaliser des demandes d'écriture transactionnelles pouvant atteindre 3 ko par seconde.

Pour plus d'informations, consultez Gestion des paramètres de débit sur les tables allouées.

Le Débit alloué est la quantité maximum de capacité qu'une application peut consommer à partir d'une table ou d'un index. Si votre application dépasse la capacité de débit allouée sur une table ou un index, elle sera soumise à une restriction des demandes.

La limitation empêche votre application de consommer trop d'unités de capacité. Dans le cas d'une limitation de demande, elle échoue avec un code HTTP 400 (Bad Request) et ProvisionedThroughputExceededException. Les kits SDK AWS comprennent une prise en charge intégrée des nouvelles tentatives de demandes limitées (consultez Nouvelles tentatives après erreur et interruptions exponentielles), vous n'avez donc pas besoin d'écrire cette logique vous-même.

Vous pouvez utiliser AWS Management Console pour contrôler vos débits alloués et réels et pour modifier les paramètres de votre débit si nécessaire.

Auto Scaling DynamoDB

L'auto scaling DynamoDB gère activement la capacité du débit pour les tables et les index secondaire global. Avec la scalabilité automatique, vous définissez une plage (limites supérieure et inférieure) pour les unités de capacité en lecture et en écriture. Vous définissez également un pourcentage d'utilisation cible au sein de cette plage. L'auto scaling DynamoDB vise à maintenir votre utilisation cible, même lorsque la charge de travail de votre application augmente ou diminue.

Avec la scalabilité automatique DynamoDB, une table ou à un index secondaire global peut augmenter ses capacités allouées en lecture et en écriture de manière à gérer une augmentation soudaine du trafic sans demande de limitation. Lorsque la charge de travail diminue, la scalabilité automatique DynamoDB peut réduire le débit de sorte que vous ne payiez pas pour une capacité allouée non utilisée.

Note

Si vous utilisez la AWS Management Console pour créer une table ou un index secondaire global, la scalabilité automatique DynamoDB est activée par défaut.

Vous pouvez gérer les paramètres de dimensionnement automatique à tout moment en utilisant la console, le AWS CLI ou l'un des kits AWS SDK.

Pour plus d'informations, consultez Gestion automatique de la capacité de débit avec la scalabilité automatique DynamoDB.

Capacités réservées

En tant que client DynamoDB, vous pouvez acheter une capacité réservée au préalable comme décrit à l'adresse Tarification Amazon DynamoDB. Avec une capacité réservée, vous payez une fois un droit initial et vous vous engagez à un niveau d'utilisation minimal sur une période donnée. En réservant à l'avance vos unités de capacité en lecture et à l'écriture, vous réalisez des économies importantes par rapport au débit alloué à la demande.

Note

Il n'y a pas de capacité réservée disponible en mode à la demande.

Pour gérer la capacité réservée, accédez à la console DynamoDB, puis choisissez Capacité réservée.

Note

Vous pouvez empêcher les utilisateurs d'afficher ou d'acheter une capacité réservée, tout en leur permettant d'accéder au reste de la console. Pour plus d'informations, consultez « Octroi des autorisations pour empêcher l'achat d'offres de capacité réservée » dans Authentification et contrôle d'accès pour Amazon DynamoDB.