Présentation de DynamoDB - AWS Directives prescriptives

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.

Présentation de DynamoDB

Amazon DynamoDB est une base de clés et de documents NoSQL offrant des performances rapides et prévisibles avec une scalabilité simple. Il s'agit d'une base de données multirégionale, multiactive et durable entièrement gérée. (La fonctionnalité de tableau global de DynamoDB synchronise automatiquement les modifications apportées dans uneAWS région avec toutes les autres régions sélectionnées, afin de fournir une prise en charge multiactive.) DynamoDB intègre des fonctionnalités de sécurité, des options de sauvegarde et de restauration, ainsi qu'une mise en cache en mémoire pour les applications Internet.

La nature sans schéma des bases de données NoSQL permet de réduire le temps et le processus nécessaires à la mise en production d'une modification de base de données (schéma de lecture), permettant ainsi un développement rapide d'applications (RAD). Les bases de données NoSQL telles que DynamoDB sont conçues pour des opérations de lecture/écriture de haute performance.

Caractéristiques et avantages

DynamoDB offre les fonctions et avantages suivants :

  • Aucun serveur à gérer : DynamoDB est un service de base de données NoSQL entièrement géré, ce qui signifie qu'il n'implique aucune charge de maintenance du serveur.

  • Sans schéma : DynamoDB prend en charge le développement et le déploiement rapides d'applications.

  • Des performances à grande échelle : DynamoDB offre des performances rapides et prévisibles avec une scalabilité simple.

  • Support ACID : DynamoDB prend en charge les transactions d'atomicité, de cohérence, d'isolation et de durabilité (ACID) pour vous aider à maintenir l'exactitude des données.

  • Haute disponibilité et durabilité : vos données sont stockées sur des disques SSD (Solid State Drives) et répliquées automatiquement dans plusieurs zones de disponibilité au sein d'uneAWS région, assurant ainsi la haute disponibilité et la durabilité des données.

  • Scaling automatique : DynamoDB utilise le serviceAWS Application Auto Scaling pour ajuster de façon dynamique la capacité de débit approvisionné en réponse aux schémas de trafic.

  • Options de tarification flexibles : DynamoDB propose deux modes de capacité avec des options de facturation spécifiques : le mode de capacité à la demande et le mode de capacité provisionnée.

  • oint-in-time Restauration IP : vous pouvez activer des sauvegardes continues à l'aide de la point-in-time restauration pour protéger vos tables contre les opérations d'écriture ou de suppression accidentelles, et restaurer vos tables à tout moment au cours des 35 derniers jours.

  • Time to Live (TTL) : vous pouvez supprimer automatiquement des éléments d'une table DynamoDB après une durée spécifiée.

  • Tables globales : vous pouvez déployer plusieurs répliques dansAWS différentes régions sans avoir à créer votre propre solution de réplication.

  • Index secondaires globaux : vous pouvez interroger votre table DynamoDB à l'aide de clés de partition et de tri différentes des clés de partition et de tri de la table.

  • DAX — Le service de mise en cache DynamoDB Accelerator (DAX) fournit des temps de réponse inférieurs à une milliseconde pour les opérations de lecture.

  • DynamoDB Streams : cette fonctionnalité fournit une séquence chronologique des modifications au niveau élément dans un journal pour permettre le suivi et la notification en temps réel des modifications dans les tables DynamoDB.

Pour plus d'informations sur ces avantages, consultez la section Fonctionnalités d'Amazon DynamoDB sur leAWS site Web. Les sections suivantes décrivent certaines des fonctionnalités pertinentes pour moderniser les charges de travail de votre base de données en migrant d'un SGBDR vers DynamoDB.

Clé de partition

DynamoDB ne comporte aucun schéma. Il n'est donc pas nécessaire de définir tous les attributs d'une table. L'attribut clé de partition est obligatoire, et la clé de tri facultative. Les autres attributs sont arbitraires et peuvent varier d'un élément à l'autre. Nous vous recommandons de choisir une clé de partition avec une cardinalité élevée afin que les éléments fréquemment consultés ne se trouvent pas sur la même partition. Cette pratique vous permet d'éviter les déséquilibres d'accès aux données et les partitions actives. Pour de plus amples informations, veuillez consulter Bonnes pratiques de création et d'utilisation de clés de partition de façon performante dans la documentation DynamoDB.

Index

Les index vous donnent accès à d'autres modèles de requêtes et peuvent accélérer les requêtes. Vous devez créer des index avec soin, que vous utilisiez une base de données relationnelle ou DynamoDB. Chaque fois qu'une opération d'écriture se produit sur une table, tous les index de cette table doivent être mis à jour.

Un index secondaire global contient une sélection d'attributs de la table de base, mais ils sont organisés selon une clé primaire différente de la clé primaire de la table. Dans DynamoDB, les index secondaires globaux sont fragmentés par défaut. En d'autres termes, la clé de tri est facultative et n'apparaît pas dans tous les éléments du tableau. Pour tirer parti de cette fonctionnalité, vous pouvez créer des index secondaires globaux qui stockent et projettent uniquement les attributs requis. Une table DynamoDB peut contenir jusqu'à 20 index secondaires globaux. Pour plus d'informations sur cette fonctionnalité, veuillez consulter Utilisation des index secondaires globaux dans DynamoDB dans DynamoDB dans la documentation DynamoDB.

Il est temps de vivre

Vous pouvez définir une propriété TTL (time-to-live) dans une table DynamoDB pour définir un horodatage par élément (enregistrement) pour spécifier quand un élément n'est plus nécessaire. Peu après l'horodatage spécifié, DynamoDB supprime l'élément de la table sans consommer d'unités de capacité supplémentaires. Pour plus d'informations sur cette fonctionnalité, consultez la section Expiration d'éléments à l'aide de DynamoDB Time to Live dans la documentation de DynamoDB.

Modèles de tarification

DynamoDB propose deux modèles de tarification : capacité provisionnée et capacité à la demande. Le modèle de tarification que vous choisissez dépend de vos charges de travail prévues.

Modèle de tarification Type de charge de travail Coût Débit de lecture/écriture
Capacité provisionnée Prévisible Plus bas

Vous spécifiez le nombre d'opérations de lecture/écriture par seconde en termes d'unités de capacité de lecture (RCU) et d'unités de capacité d'écriture (WCU). Par exemple :

  • Pour un élément d'une taille pouvant atteindre 4 Ko, 1 RCU peut effectuer 2 lectures éventuellement cohérentes par seconde.

  • Pour un élément d'une taille pouvant atteindre 1 Ko, 1 WCU peut effectuer 2 lectures éventuellement cohérentes par seconde.

Vous pouvez activer le dimensionnement automatique pour ajuster la capacité en fonction de l'évolution du trafic.

Capacité à la demande Répartition dynamique Plus haut

Vous ne spécifiez pas d'exigences en matière de débit. DynamoDB s'adapte automatiquement à vos charges de travail.

Les lectures et écritures que votre application effectue sur vos tables vous sont facturées en termes d'unités de demande de lecture et d'unités de demande d'écriture. Par exemple :

  • Un élément de 8 Ko nécessite 1 unité de demande de lecture pour une lecture finalement cohérente et 8 unités de demande d'écriture pour une opération d'écriture non transactionnelle.

Pour plus d'informations sur ces deux modèles, consultez la section Mode capacité de lecture/écriture dans la documentation DynamoDB.

Transactions

DynamoDB prend en charge les transactions d'atomicité, de cohérence, d'isolation et de durabilité (ACID) dans une ou plusieurs tables au sein d'un seulAWS compte et d'une seuleAWS région.

Pour gérer les modifications apportées à plusieurs éléments au sein des tables et entre elles, vous pouvez utiliser lesTransactGetItems APITransactWriteItems et les applications transactionnelles de DynamoDB.

  • TransactWriteItemsest une opération par lots qui contient un ensemble d'écriture comportant une ou plusieursDeleteItem actionsPutItemUpdateItem, et. TransactWriteItemspeut éventuellement vérifier les conditions préalables qui doivent être satisfaites avant d'effectuer des mises à jour. Ces conditions peuvent concerner les mêmes éléments que ceux du set d'écriture, ou des éléments différents. Si l'une des conditions n'est pas remplie, la transaction est rejetée.

  • TransactGetItemsest une opération par lots qui contient un ensemble de lecture comportant une ou plusieursGetItem actions. Si vous émettez uneTransactGetItems demande concernant un élément faisant partie d'une transaction d'écriture active, la transaction de lecture est annulée. Pour obtenir la valeur précédemment validée, vous pouvez utiliser une opération de lecture standard.

Pour plus d'informations sur ces API, consultez la section Transactions Amazon DynamoDB : how it works dans la documentation DynamoDB.

Limites

Les opérations d'API transactionnelles de DynamoDB sont sujettes aux contraintes suivantes :

  • Une transaction ne peut pas mettre à jour plus de 100 éléments uniques.

  • Une transaction ne peut pas contenir plus de 4 Mo de données.

  • Deux actions d'une transaction ne peuvent pas porter sur le même élément de la même table. Par exemple, vous ne pouvez pas exécuter à la foisConditionCheck desUpdate actions sur le même élément en une seule transaction.

  • Une transaction ne peut pas opérer sur des tables se trouvant dans plusieurs comptes ou régions AWS.

  • Les opérations transactionnelles fournissent des garanties ACID uniquement dans laAWS région où l'opération d'écriture a initialement eu lieu. Les transactions ne sont pas prises en charge entre les régions dans les tables globales.

  • Le modèle de persistance des objets ne prend pas en charge les transactions. Pour utiliser la fonctionnalité de transaction, vous devez accéder à la base de données et aux tables à l'aide de l'API de bas niveau DynamoDB.

Ensembles volumineux

La limite de taille de DynamoDB est de 400 Ko pour chaque élément. Cette limite inclut le nom d'attribut (longueur binaire avec encodage UTF-8) et la valeur d'attribut (également binaires). Le nom de l'attribut est pris en compte dans la limite de taille. Par exemple, considérez un élément qui possède deux attributs : un attribut nommé « country code » avec la valeur « IN » et un autre attribut nommé «country-phone-prefix » avec la valeur « 91 ». La taille totale de cet élément est de 36 octets.

Solution de contournement

Si un élément est associé à de nombreux attributs et propriétés, ou à une grande quantité de données, sa taille peut dépasser 400 Ko. Dans ce cas, vous pouvez stocker l'élément sérialisé dans Amazon Simple Storage Service (Amazon S3) au format JSON, puis enregistrer l'emplacement Amazon S3 en tant qu'attribut (S3Location) dans l'élément. Les opérations de lecture et d'écriture pour cet élément récupèrent l'objet S3 et mettent à jour la chaîne JSON. La clé primaire, la clé de tri et tous les attributs utilisés par les index locaux et les index secondaires globaux doivent être stockés dans la table avec l'S3Locationattribut. Cela nécessite une logique supplémentaire dans l'application (couche d'accès aux données) pour vérifier l'S3Locationattribut et récupérer les données complètes de l'article depuis Amazon S3.

Sauvegarde et restauration

La prise en charge de la Backup et de la restauration est une fonctionnalité courante dans toutes les bases de données. DynamoDB prend en charge de manière native les opérations de sauvegarde et de restauration au sein d'un même compte, mais vous pouvez copier des tables sur plusieurs comptes en utilisant d'autres options ou processus. Ces processus ne consomment aucune unité de capacité de lecture/écriture. Pour plus d'informations, consultez le guide Options de copie de tableaux complets entre comptes pour Amazon DynamoDB sur le site Web des directivesAWS prescriptives.

Limites

DynamoDB prend actuellement en charge la sauvegarde et la restauration entre comptes à l'aide de AWS Backup, mais le compte doit appartenir à la même organisation. Vous pouvez remédier à cette limitation en adoptant l'une des solutions suivantes :

Support linguistique et kit SDK

Les AWSSDK fournissent une interface de programmation simplifiée auxAWS services et prennent en charge .NET, Java JavaScript, Node.js, Python, PHP et Ruby.

Vous pouvez choisir entre trois modèles pour accéder aux tables DynamoDB à l'aide d'unAWS SDK : modèle de persistance des objets (interface de haut niveau), interfaces de document et interfaces de bas niveau. Pour de plus amples informations, veuillez consulter Modèles d'accès plus loin dans ce guide.