Mode de capacité en lecture/écriture - Amazon DynamoDB

Mode de capacité en lecture/écriture

Amazon DynamoDB offre deux modes de capacité de 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 héritent du mode de capacité de lecture/écriture de la table de base. Pour plus d'informations, consultez Considérations relatives à la modification du mode de capacité de lecture ou d'écriture.

Mode de capacité à la demande

Amazon DynamoDB à la demande est une option de facturation flexible permettant de servir des milliers de demandes par seconde sans planification de capacité. 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 à la demande, DynamoDB s'adapte instantanément à vos charges de travail à mesure qu'elles augmentent ou diminuent jusqu'à tout niveau de trafic précédemment atteint. 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 offrent 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 à la demande à la fois tant pour les nouvelles tables que pour des tables existantes, et vous pouvez continuer d'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 quotas de débit de table par défaut de DynamoDB, mais il peut être augmenté sur demande. Pour plus d'informations, consultez Quotas 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 sur les tables DynamoDB.

Vous pouvez changer de mode de capacité de lecture ou d'é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 à la modification du mode de capacité de lecture ou d'écriture.

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

Pour les tables en mode à la demande, vous devez spécifier le débit de lecture et d'écriture que votre application est supposée atteindre. DynamoDB facture les lectures et écritures que votre application effectue dans vos tables, comptabilisées en termes d'unités de demande de lecture et d'unités de demande d'écriture.

Les demandes de lecture de DynamoDB peuvent être soit fortement cohérentes, soit éventuellement cohérentes, soit transactionnelles.

  • Une demande de lecture fortement cohérente jusqu'à 4 Ko nécessite une unité de demande de lecture.

  • Une demande de lecture éventuellement cohérente jusqu'à 4 Ko nécessite une demi-unité de demande de lecture.

  • Une demande de lecture transactionnelle jusqu'à 4 Ko nécessite deux unités de demande de lecture.

Si vous devez lire un élément d'une taille supérieure à 4 Ko, DynamoDB a besoin d'unités de demande de lecture supplémentaires. 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 éventuellement cohérente ou une lecture cohérente 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érente forte, 1 unité de demande de lecture si vous choisissez des lectures éventuellement cohérentes 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 de lecture dans DynamoDB, consultez Cohérence en lecture.

Une unité de demande d'écriture équivaut à une écriture d'un élément d'une taille pouvant atteindre 1 Ko. Si vous avez besoin d'écrire un élément d'une taille supérieure à 1 Ko, DynamoDB doit consommer des unités de demande d'écriture supplémentaires. Les demandes d'écriture transactionnelles requièrent deux unités de demande d'écriture pour effectuer une écriture d'un élément d'une taille pouvant atteindre 1 Ko. 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ù DynamoDB à la demande est disponible, consultez Tarification 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érente 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érente 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 et 12 000 unités de demande de lecture.

  • Table existante basculée vers le mode de capacité à la demande : Le trafic de pointe précédent équivaut à la moitié des unités de capacité en écriture et des unités de capacité en lecture allouées depuis la création de la table ou aux paramètres d'une table nouvellement créée avec le mode de capacité à la demande, selon la valeur la plus élevée. En d'autres termes, votre table fournira au moins autant de débit qu'avant de passer au mode de capacité à la demande.

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é de lecture équivaut à une lecture fortement cohérente par seconde ou deux lectures éventuellement cohérentes par seconde pour un élément d'une taille pouvant atteindre 4 Ko. Les demandes de lecture transactionnelles nécessitent deux unités de capacité de lecture pour effectuer une lecture par seconde d'éléments d'une taille pouvant atteindre 4 Ko. Si vous avez besoin de lire un élément d'une taille supérieure à 4 Ko, DynamoDB doit utiliser des unités de capacité de lecture supplémentaires. 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 éventuellement cohérente ou une lecture cohérente 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érente forte par seconde, 1 unité de capacité de lecture si vous choisissez des lectures éventuellement cohérentes 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 de lecture dans DynamoDB, consultez Cohérence en lecture.

  • Une unité de capacité d'écriture équivaut à une écriture par seconde pour un élément d'une taille pouvant atteindre 1 Ko. Si vous avez besoin d'écrire un élément d'une taille supérieure à 1 Ko, DynamoDB doit utiliser des unités de capacité d'écriture supplémentaires. Les demandes d'écriture transactionnelles nécessitent deux unités de capacité d'écriture pour effectuer une écriture par seconde pour un élément d'une taille pouvant atteindre 1 Ko. 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é de lecture et d'écriture sont remises à 0.

Si votre application lit ou écrit des éléments de plus grande taille (jusqu'à la taille maximale d'élément de 400 Ko en vigueur dans DynamoDB), elle consomme 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 cohérentes fortes jusqu'à 24 Ko par seconde (4 Ko x 6 unités de capacité de lecture).

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

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

  • Ecrire jusqu'à 6 Ko par seconde (1 Ko x 6 unités de capacité d'écriture).

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

Pour plus d'informations, consultez Gestion de paramètres sur des tables à capacité allouée DynamoDB.

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 offrant une prise en charge intégrée des nouvelles tentatives de demandes limitées (consultez Nouvelles tentatives après erreur et backoff exponentiel), vous n'avez 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.

Mise à l’échelle automatique de DynamoDB

Le scalabilité automatique de DynamoDB gère activement la capacité de débit pour les tables et les secondaires globaux. 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 dans cette plage. DynamoDB vise à maintenir votre utilisation cible, même lorsque la charge de travail de votre application augmente ou diminue.

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

Note

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

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

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

Capacités réservées

En tant que client de DynamoDB, vous pouvez acheter une capacité réservée à l'avance pour les tables qui utilisent la classe de tables DynamoDB Standard, comme décrit dans Tarification Amazon DynamoDB. Avec une capacité réservée, vous payez une fois un droit initial et vous vous engagez à un niveau d'utilisation alloué minimal sur une période donnée. Votre capacité réservée est facturée au tarif horaire de capacité réservée. En réservant à l'avance vos unités de capacité en lecture et à l'écriture, vous réalisez des économies importantes sur vos coûts de capacité allouée. Toute capacité que vous allouez au-delà de votre capacité réservée est facturée selon les frais de capacité allouée standard.

Les remises de capacité réservées sont d'abord appliquées au compte qui a acheté la capacité réservée. Toute discount de capacité réservée non utilisée est ensuite appliquée à d'autres comptes de la même organisation AWS en tant que compte d'achat.

Note

Il n'y a pas de capacité réservée disponible pour les unités de capacité d'écriture répliquée. La capacité réservée n'est pas non plus disponible pour les tables utilisant la classe de tables DynamoDB Standard-IA ou le mode de capacité à 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 Gestion des identités et des accès dans Amazon DynamoDB.

Pour plus d'informations sur la tarification spécifique, consultez Tarification Amazon DynamoDB.