Amazon DynamoDB (version bêta)

Amazon DynamoDB est une base de données NoSQL entièrement gérée offrant des performances exceptionnelles en termes de rapidité, de prévision et d'évolutivité. Dans AWS Management Console, les clients peuvent désormais accéder en quelques clics à une nouvelle table de base de données Amazon DynamoDB et augmenter ou réduire la capacité des requêtes de cette table. Et ce, en évitant les temps d'arrêt ou encore la dégradation des performances tout en bénéficiant d'une meilleure visibilité sur l'utilisation des ressources et la mesure des performances. Grâce à Amazon DynamoDB, les clients s'appuient totalement sur les services AWS pour la gestion et le dimensionnement des bases de données distribuées évitant ainsi toutes les contraintes relatives à l'approvisionnement en matériel, l'installation et la configuration, la réplication, les correctifs logiciels ou encore le dimensionnement des clusters.

Amazon DynamoDB prend en charge la résolution des problèmes majeurs liés à la gestion, aux performances, à l'évolutivité et à la fiabilité des bases de données. Les développeurs peuvent désormais créer une table de base de données dotée de capacités de stockage et d'extraction de données, quels que soient le volume et le nombre de requêtes. DynamoDB répartit automatiquement les données et le trafic de la table sur un nombre de serveurs approprié afin de gérer le volume de requêtes spécifié par le client et la quantité de données stockées, tout en assurant la cohérence et la rapidité des performances. Enregistrés sur des disques SSD (Solid State Drives), tous les éléments de données sont répliqués automatiquement sur plusieurs zones de disponibilité d'une région, offrant ainsi une haute disponibilité et une durabilité des données.

Amazon DynamoDB évite aux clients d'avoir à se soucier de la gestion et du dimensionnement d'un cluster de bases de données hautement disponible tout en supportant des coûts variables en fonction des ressources consommées.

Consultez la publication de Werner Vogels, directeur technique d'Amazon, sur le blog de DynamoDB pour en savoir plus sur l'évolution de la technologie NoSQL sur Amazon.com.

Inscription facile,
vous ne payez que ce que vous utilisez
Inscrivez-vous


Vidéo : Qu'est-ce qu'Amazon DynamoDB ?


Vidéo : Présentation d'Amazon DynamoDB


Cette page contient les catégories d'informations suivantes. Cliquez pour passer à :

Fonctionnalité de Amazon DynamoDB

DynamoDB vous offre les fonctionnalités suivantes :

  • Utilisation d'AWS Management Console ou des API Amazon DynamoDB pour créer une table et spécifier la capacité de requêtes souhaitée.
  • Utilisation des API d'Amazon DynamoDB pour l'écriture et l'extraction de données.
  • Suivi du statut et des performances de vos tables Amazon DynamoDB à l'aide d'Amazon CloudWatch dans AWS Management Console.
  • Paiement à l'utilisation Votre facture mensuelle est basée sur la capacité de requêtes réservée de votre table et sur la quantité de données stockées.

Éléments principaux du service

Évolutivité – Amazon DynamoDB est conçu pour assurer un dimensionnement transparent du débit et du stockage.

  • Débit réservé – Lorsque vous créez une table, spécifiez simplement la capacité requêtes dont vous avez besoin. DynamoDB alloue les ressources nécessaires à votre table afin de respecter vos exigences en termes de performances et partitionne automatiquement les données sur un nombre approprié de serveurs pour atteindre votre capacité de requêtes. Si votre demande de débit évolue, mettez simplement à jour la capacité de requêtes de votre table à l'aide d'AWS Management Console ou des API Amazon DynamoDB. Les opérations continuent à s'effectuer avec les mêmes niveaux de débit même lorsqu'un dimensionnement est en cours.
  • Dimensionnement du stockage automatisé – La quantité de données pouvant être stockées dans une table DynamoDB n'est pas limitée et le service alloue automatiquement de l'espace supplémentaire en fonction de l'évolution de votre volume de données à l'aide des API d'écriture DynamoDB.
  • Architecture sans partage entièrement distribuée – Amazon DynamoDB effectue des dimensionnements horizontaux et est capable de faire évoluer une seule table sur des centaines de serveurs.

Rapidité et prévision – Les temps de latence pour les services courants dans Amazon DynamoDB sont généralement de quelques millisecondes. Le service s'exécute sur des disques SSD et garantit la cohérence et la rapidité des temps de latence à n'importe quelle échelle.

Simplicité d'administration – Amazon DynamoDB est un service entièrement géré prenant en charge toutes les opérations dès lors que vous créez une table de base de données. Vous n'avez alors plus à vous soucier des ressources matérielles et logicielles, de l'installation et de la configuration, des correctifs logiciels, de la gestion de clusters fiables et distribués, ou encore du partitionnement des données sur plusieurs instances lors du dimensionnement.

Tolérance aux pannes intégrée – Amazon DynamoDB intègre un système de tolérance aux pannes, répliquant vos données automatiquement et de manière synchronisée sur plusieurs zones de disponibilité d'une région. Vous bénéficiez ainsi d'une haute disponibilité et d'une protection renforcée de vos données face aux ordinateurs individuels ou aux pannes d'installation.

Flexibilité – Amazon DynamoDB ne suit pas de schéma défini. Ainsi, chaque élément de données peut être associé à un nombre variable d'attributs. La multiplicité des types de données (chaînes, nombres et ensembles) contribue à enrichir le modèle de données.

Compteurs atomiques à cohérence forte – Contrairement à de nombreuses bases de données non relationnelles, Amazon DynamoDB facilite le développement en vous permettant d'effectuer des lectures à cohérence forte afin que vous traitiez en permanence les valeurs les plus à jour. Amazon DynamoDB prend en charge différents types de données natives (nombres, chaînes et attributs à plusieurs valeurs). Le service prend également en charge des compteurs atomiques destinés à permettre l'incrémentation ou la décrémentation atomique d'attributs numériques via un seul appel API.

Rentabilité – Amazon DynamoDB est conçu pour optimiser la rentabilité pour tout type de charge de travail. Vous avez la possibilité de démarrer avec une offre gratuite prenant en charge 40 millions d'opérations de bases de données par mois, et de bénéficier d'un tarif horaire pour les ressources que vous consommez au-delà de cette limite. Caractérisé par sa simplicité d'administration et par des tarifs intéressants en termes d'exécution des requêtes, DynamoDB réduit considérablement le coût total de possession lié à votre charge de travail par rapport à la gestion d'une base de données relationnelle ou non relationnelle par votre entreprise.

Sécurité – Amazon DynamoDB utilise des méthodes cryptographiques pour authentifier les utilisateurs et empêcher la violation des données. Ce service s'intègre également à AWS Identity and Access Management (IAM) pour un service de contrôle d'accès ultra-précis pour les utilisateurs au sein de votre entreprise.

Suivi intégré – Amazon DynamoDB affiche des mesures opérationnelles clés pour les tables créées dans AWS Management Console. Le service est également intégré à Amazon CloudWatch pour vous permettre de consulter le débit et les temps de latence relatifs aux requêtes pour chaque table Amazon DynamoDB et d'effectuer un suivi de votre consommation de ressources.

Intégration à Amazon DynamoDB – Amazon DynamoDB est également intégré à Amazon Elastic MapReduce (Amazon EMR). Amazon EMR permet aux entreprises d'effectuer des analyses complexes sur de gros volumes de données à l'aide d'un framework hébergé sur AWS caractérisé par un paiement à l'utilisation. Grâce à Amazon DynamoDB les clients peuvent utiliser Amazon EMR pour analyser des jeux de données stockés dans DynamoDB et archiver les résultats dans Amazon Simple Storage Service (Amazon S3), tout en conservant le jeu de données d'origine dans DynamoDB. Les entreprises peuvent également utiliser Amazon EMR pour accéder aux données sur divers services (Amazon DynamoDB, Amazon RDS, et Amazon S3), effectuer des analyses complexes sur cet ensemble de données combiné et stocker les résultats de ces opérations sur Amazon S3.


Tarification

Vous ne payez que ce que vous utilisez. Il n'y a pas de frais minimum. Estimez votre facture mensuelle avec Simple Monthly Calculator.

Niveau gratuit*

Dans le cadre du niveau d'accès gratuit d'AWS, les clients AWS peuvent se familiariser gratuitement avec Amazon DynamoDB. Les clients DynamoDB bénéficient de 100 Mo de stockage gratuit et d'une capacité de débit permanent de 5 écritures/secondes et de 10 lectures/seconde au maximum.

Capacité de débit réservé

Lorsque vous créez ou mettez à jour une table Amazon DynamoDB, vous spécifiez la capacité que vous souhaitez réserver pour les lectures et écritures. Amazon DynamoDB réserve alors les ressources nécessaires pour répondre à vos besoins en termes de débit tout en assurant une bonne cohérence et des temps de latence faibles.

Un tarif horaire fixe s'applique en fonction de la capacité réservée :

Une unité de capacité de lecture vous permet d'effectuer une écriture par seconde pour les éléments de 1 Ko maximum. De même, une unité de capacité de lecture vous permet d'effectuer une lecture à cohérence forte par seconde (ou deux lectures cohérentes à terme par seconde) d'éléments de 1 Ko maximum. Les éléments plus volumineux requièrent une capacité plus importante. Vous pouvez calculer le nombre d'unités de capacité de lecture et d'écriture nécessaire en faisant une estimation du nombre de lectures ou d'écritures souhaité par seconde et en multipliant par la taille de vos éléments (arrondie au Ko le plus proche).

Unités de capacité requises pour les écritures = Nombre d'écritures d'éléments par seconde x Taille de l'élément (arrondie au Ko le plus proche)

Unités de capacité requises pour les lectures¹ = Nombre d'écritures d'éléments par seconde x Taille de l'élément (arrondie au Ko le plus proche)

¹ Les lectures cohérentes à terme permettent de doubler le niveau du débit pour les lectures par seconde.

Si la taille de vos éléments est inférieure à 1 Ko, chaque unité de capacité de lecture vous permettra d'obtenir 1 lecture/seconde de capacité et chaque unité de capacité d'écriture vous permettra d'obtenir 1 écriture/seconde de capacité. Par exemple, si la taille des éléments est de 512 octets et que vous souhaitez effectuer 100 lectures d'éléments par seconde à partir de votre table, vous devez réserver 100 unités de capacité de lecture.

Si la taille des éléments est supérieure à 1 Ko, calculez le nombre d'unités de capacité de lecture et d'écriture dont vous avez besoin. Par exemple, si la taille des éléments est de 1,5 Ko et que vous souhaitez effectuer 100 lectures/seconde, vous devez réserver 100 (lectures par seconde x 2 (1,5 Ko arrondi au nombre entier le plus proche) = 200 unités de capacité de lecture.

Notez que le nombre requis d'unités de capacité de lecture est déterminé par le nombre d'éléments lus par seconde et non par le nombre d'appels API. Par exemple, pour effectuer 500 lectures d'éléments par seconde à partir d'une table, et si la taille des éléments est inférieure ou égale à 1 Ko, alors vous avez besoin de 500 unités de capacité de lecture. Passer 500 appels GetItem individuels ou 50 appels BatchGetItem renvoyant 10 éléments chacun revient au même.

Si le débit de votre requête dépasse la capacité réservée, il se peut que celle-ci soit bloquée. Toutefois, AWS Management Console enregistre votre capacité de débit réservé et utilisé et vous permet de la modifier en prévision du trafic. Pour en savoir plus sur le débit réservé et le choix des valeurs appropriées, consultez les réponses de notre FAQ ici.

Pour en savoir plus sur l'estimation du nombre d'unités de capacité requis pour votre table, consultez notre documentation ici.

Stockage de données indexées

Amazon DynamoDB est un magasin de données indexé. La quantité d'espace disque consommée par vos données sera supérieure à la taille brute des données téléchargées. Amazon DynamoDB mesure le volume de données facturables en ajoutant le nombre d'octets brut des données téléchargées à un supplément de 100 octets correspondant à l'indexation de chaque élément stocké. Avec Amazon DynamoDB, vous n'avez pas besoin de réserver le stockage. Comme indiqué précédemment, vous êtes facturé en fonction de votre utilisation réelle.

Transfert de données**

Le transfert des données « entrantes » et « sortantes » fait référence au transfert dans et hors d'Amazon DynamoDB. Il n'y a pas de frais supplémentaire pour les données transférées entre Amazon DynamoDB et d'autres services AWS dans la même région (c.-à-d., 0,00 $ par Go). Les données transférées au sein des régions (par ex., entre Amazon DynamoDB dans la région de USA Est (Virginie du Nord) et Amazon EC2 dans la région UE (Irlande) seront facturées aux tarifs correspondant au transfert de données Internet dans les deux régions.

* Votre utilisation gratuite est calculée chaque mois et appliquée automatiquement à votre facture – l'utilisation gratuite n'est pas cumulable.

** Dans le cadre du du niveau d'accès gratuit d'AWS, les clients AWS recevront 15 Go de transfert de données sortantes chaque mois regroupées parmi tous les services AWS pendant un an.

*** Les niveaux de tarif de transfert de données sortantes groupent le transfert de données sortantes sur Amazon EC2, Amazon S3, Amazon RDS, Amazon SimpleDB, Amazon DynamoDB, Amazon SQS, Amazon SNS, AWS Storage Gateway et Amazon VPC.


Description détaillée

Modèle de données – Attributs, éléments et tables

Amazon DynamoDB classe les données dans des tables contenant des éléments, chaque élément étant associé à un ou plusieurs attributs.

Attributs

Un attribut est la combinaison d'un nom et d'une valeur. Le nom doit être une chaîne mais la valeur peut correspondre à une chaîne, un nombre, un ensemble de chaînes ou un ensemble de nombres. Voici quelques exemples d'attributs :

        "ImageID" = 1
        "Title" = "flower"
        "Tags" = "flower", "jasmine", "white"
        "Ratings" = 3, 4, 2
    

Élément

Un élément est constitué d'attributs et est identifiable par la clé primaire à laquelle il est associé. Les attributs d'un élément forment un ensemble de paires nom-valeur, dans un ordre aléatoire. Les attributs d'élément peuvent être dispersés, sans lien avec les attributs associés aux éléments d'une même table et sont facultatifs (à l'exception de l'attribut de la clé primaire). Contrairement au système des bases de données classiques, une table est entièrement dépendante de la clé primaire. Les éléments sont stockés dans une table. Pour intégrer des éléments à une table, vous devez désigner au moins l'un des attributs en tant que clé primaire. La clé primaire identifie un seul élément d'une table DynamoDB. Dans le diagramme suivant, ImageID est l'attribut désigné comme clé primaire.

Notez que, contrairement à la table, appelée « myTable », aucun nom n'est associé à l'élément. La clé primaire définit un élément ; l'élément avec clé primaire "ImageID"=1

Tables

Les tables comportent des éléments et classent les informations par zones Tous les éléments contenus dans une table sont associés à une clé primaire. Les noms d'attributs à utiliser pour la clé primaire sont spécifiés lorsque vous créez une table. Chaque élément de cette table doit avoir une valeur de clé primaire unique. Pour écrire des données dans DynamoDB, vous devez créer une table et associer un nom de table à une clé primaire. La table suivante est plus volumineuse et utilise également ImageID comme clé primaire pour identifier des éléments.

Table : Mes images
Clé primaire Autres attributs
ImageID = 1 ImageLocation = https://s3.amazonaws.com/bucket/img_1.jpg Date = 1260653179 Title = flower Tags = Flower, Jasmine Width = 1024 Depth = 768
ImageID = 2 ImageLocation = https://s3.amazonaws.com/bucket/img_2.jpg Date = 1252617979 Rated = 3, 4, 2 Tags = Work, Seattle, Office Width = 1024 Depth = 768
ImageID = 3 ImageLocation = https://s3.amazonaws.com/bucket/img_3.jpg Date = 1285277179 Price = 10.25 Tags = Seattle, Grocery, Store Author = you Camera = phone
ImageID = 4 ImageLocation = https://s3.amazonaws.com/bucket/img_4.jpg Date = 1282598779 Title = Hawaii Author = Joe Colors = orange, blue, yellow Tags = beach, blanket, ball

Présentation du modèle d'accès et de l'API

Clé primaire

DynamoDB requiert la définition d'une clé primaire par table utilisée pour accéder aux données. La clé primaire identifie chaque élément de manière unique (par ex. : ID =1, ID = 2, ID = 3, etc.). La clé primaire est la seule partie de la table qui est indexée. Elle est également utilisée pour hacher vos données en partition au niveau de plusieurs serveurs. La clé primaire doit être spécifiée lorsque vous créez une table.

En d'autres termes, chaque élément est un ensemble de paires nom/valeur. Lorsque vous créez une table d'éléments, vous désignez une paire nom/valeur en tant que clé primaire. Tous les éléments de la table doivent être associés à une valeur correspondant à la clé primaire. Amazon DynamoDB s'assure que la valeur correspondant à ce nom est unique. Un index est créé en fonction de la clé primaire.

Clé primaire composite des requêtes de plage de données

Une clé primaire composite vous permet de spécifier deux attributs d'une table formant ensemble un index primaire unique. Tous les éléments de la table doivent être associés à ces deux attributs. L'un d'entre eux est un « attribut de partition par hachage » et l'autre un « attribut intervalle ». Par exemple, vous pouvez avoir une table « Mise à jour statut » dotée d'une clé primaire composite constituée de « UserID » (attribut de hachage servant à partitionner la charge de travail sur plusieurs serveurs) et de « Time » (attribut intervalle). Vous pouvez ensuite exécuter une requête pour récupérer : 1) un élément spécifique uniquement associé à la combinaison des valeurs UserID et Time, 2) tous les éléments d'un « compartiment » de hachage spécifique (ici UserID) ou 3) tous les éléments associés à un UserID spécifique dans un intervalle de temps donné. Les requêtes d'intervalle exécutées avec « Time » sont uniquement prises en charge lorsque le compartiment de hachage UserID est spécifié.

API DynamoDB

  • CreateTable – Permet de créer une table et de spécifier l'index primaire utilisé pour accéder aux données.
  • UpdateTable – Permet de mettre à jour les valeurs du débit réservé pour une table donnée.
  • DeleteTable – Permet de supprimer une table.
  • DescribeTable – Permet d'obtenir des informations relatives à la taille, au statut et à l'index de la table.
  • PutItem – Permet de créer un nouvel élément ou de remplacer un ancien élément (avec tous les attributs associés). Si la table spécifiée contient déjà un élément associé à la même clé primaire, le nouvel élément remplace l'élément existant. Vous pouvez également utiliser des opérateurs conditionnels pour remplacer un élément uniquement si ses attributs respectent certaines conditions ou pour insérer un nouvel élément uniquement s'il n'est pas déjà contenu dans la table.
  • BatchWriteItem – Permet d'insérer, de remplacer et de supprimer plusieurs éléments au sein de différents tables à partir d'une même requête, mais via plusieurs transactions. Cette API prend en charge des lots de 25 éléments maximum de type Put ou Delete, avec une taille totale maximale de 1 Mo pour la requête.
  • UpdateItem – Permet de modifier les attributs d'un élément existant. Vous pouvez également utiliser des opérateurs conditionnels pour effectuer une mise à jour uniquement si les valeurs d'attribut de l'élément respectent certaines conditions.
  • DeleteItem – Permet de supprimer un seul élément d'une table par clé primaire. Vous pouvez également utiliser des opérateurs conditionnels pour supprimer un élément uniquement si les valeurs d'attribut de l'élément respectent certaines conditions.
  • GetItem – L'opération GetItem renvoie un ensemble d'attributs d'un élément correspondant à la clé primaire. L'opération GetItem permet par défaut d'effectuer une lecture cohérente à terme. Si votre application ne prend pas en charge les lectures cohérentes à terme, utilisez ConsistentRead.
  • BatchGetItem – L'opération BatchGetItem renvoie les attributs associés à plusieurs éléments depuis plusieurs tables à l'aide des clés primaires correspondantes. Chaque réponse est limitée à 1 Mo et renvoie 100 éléments maximum.
  • Query – Permet d'obtenir un ou plusieurs éléments en fonction de leur clé primaire et de prendre en charge la cohérence à terme et la cohérence forte. Cette API est utilisée dans des tables comportant des clés de type hachage-plage.
  • Scan – Permet d'obtenir un ou plusieurs éléments et attributs en effectuant une analyse complète de la table. Vous pouvez limiter le nombre de résultats obtenus en appliquant des filtres sur un ou plusieurs attributs. Cette API pourra ainsi être utilisée pour exécuter des requêtes ad hoc dans une table sur des attributs ne correspondant pas à la clé primaire de la table. Toutefois, l'analyse complète de la table étant effectuée sans index, nous vous déconseillons de l'utiliser pour les cas d'usage d'interrogation d'applications nécessitant des performances en termes de prévision. L'ensemble des résultats d'une API scan est cohérent à terme. L'API Scan fonctionne comme un itérateur. Lorsque la taille globale des éléments analysés pour une requête API Scan dépasse 1 Mo, la requête se termine et les résultats obtenus sont renvoyés avec LastEvaluatedKey (pour que l'analyse se poursuive au cours d'une opération ultérieure).

Intégration à Amazon Elastic MapReduce

Amazon DynamoDB s'intègre également à Amazon Elastic MapReduce (Amazon EMR). Amazon EMR permet aux entreprises d'effectuer des analyses complexes sur des gros volumes de données à l'aide d'un framework Hadoop hébergé sur AWS caractérisé par un paiement à l'utilisation. Voici quelques modes d'utilisation d'EMR avec DynamoDB :

  1. Les clients peuvent analyser les données stockées dans DynamoDB à l'aide d'EMR et stocker les résultats de l'analyse dans S3 tout en conservant les données d'origine dans DynamoDB.

    Par exemple, si vous utilisez Amazon DynamoDB pour stocker les commandes de vos clients, vous pouvez créer une nouvelle table de commandes chaque mois à l'aide de la fonction d'exécution de requêtes sur plusieurs tables d'EMR. Vous pouvez également relier différentes tables dans DynamoDB pour obtenir des réponses à des questions visant, par exemple, à identifier les commandes passées par un client donné au cours des 3 derniers mois. Vous pouvez ensuite utiliser EMR pour stocker les réponses à ces questions dans S3 pour une récupération ultérieure tout en conservant les données dans les tables réservées aux commandes client mensuelles dans DynamoDB.

  2. EMR permet de sauvegarder les données DynamoDB sur S3.

    Pour poursuivre avec l'exemple relatif aux commandes client, une fois que vous n'effectuez plus d'écritures dans une table de commandes mensuelles, vous pouvez la sauvegarder sur S3 et la supprimer de DynamoDB afin de bénéficier des coûts de stockage plus faibles de S3. Comme indiqué ci-dessous, les données stockées dans S3 pourront toujours être analysées.

  3. Les clients peuvent également utiliser Amazon EMR pour accéder à des données stockées sur plusieurs services (Amazon DynamoDB, Amazon RDS et Amazon S3), effectuer des analyses complexes sur ces ensembles de données combinés, et stocker les résultats de ces opérations sur Amazon S3.

    Par exemple, si vous utilisez Amazon DynamoDB pour enregistrer les commandes de vos clients, vous pouvez créer une nouvelle table de commandes chaque mois et, en fin de mois, archiver les commandes de plus de 6 mois dans Amazon S3 à l'aide d'Amazon EMR. Cela vous permet d'archiver les commandes rarement consultées dans Amazon S3 tout en réduisant vos coûts et en conservant uniquement les commandes fréquemment consultées dans DynamoDB. Vous pouvez utiliser EMR pour effectuer des analyses couvrant les commandes stockées dans DynamoDB et les tables de commandes archivées dans Amazon S3 pour répondre à des requêtes destinées à déterminer le nombre de commandes de widget X passées par un client Y sur une période de 48 mois.

Démarrage

Pour obtenir de l'aide lors de la première utilisation d'Amazon DynamoDB, reportez-vous à notre Guide de démarrage.


Usage approprié et restrictions

Votre utilisation de ce service est soumise au Contrat client Amazon Web Services.

©2011, Amazon Web Services LLC or its affiliates. Tous droits réservés.