NoSQL : bien comprendre Amazon DynamoDB
La base de données NoSQL dans le Cloud d’AWS, DynamoDB, supporte à la fois les modèles clés-valeur et documents, et apporte la flexibilité que l’on attend pour le développement d’applications Web, de jeux, ou encore liées à l’Internet des objets.
La base de données as-a-service d’AWS, DynamoDB a été développée d’abord pour apporter des performances élevées et ce, à grande échelle. Il s’agit d’un système de base de données multi- modèles : elle supporte le modèle clé-valeur, mais aussi le modèle orienté documents. DynamoDB a été développé pour répondre aux spécificités inhérentes des applications Web (comme pourrait l’utiliser le marketing numérique), des jeux ou encore de la mobilité et l’Internet des objets.
Ce service de base de données NoSQL élimine toutes tâches opérationnelles, de maintenance, d’installation et de configuration, de mise à jour et de patches, et surtout celles liées à la mise en place de cluster ou à la répartition des données sur plusieurs instances – si le besoin de dimensionnement se fait sentir.
Les fonctions d’Amazon DynamoDB
DynamoDB est un service ; il n’y a aucune notion de serveur de base de données ou de schéma. Ces composants cœur sont les tables, les articles et les attributs. L’objet de plus haut niveau dans DynamoDB est la table, mais il ne s’agit pas d’une table relationnelle traditionnelle. En revanche, celle-ci est composée d’autant d’articles que l’on souhaite. Ces articles sont quant à eux composés d’attributs (des paires nom-valeur). La taille maximale d’un article est 400 ko. Un article soit être composé d’au moins un attribut. Chaque article dans une table peut se différencier par ses attributs et par ce qu’il stocke. Autrement dit, la table est dépourvue de schéma (schema-less).
Tous les articles doivent avoir leur propre clé de partitionnement et clé de tri. La clé de partitionnement identifie l’article. Elle est utilisée pour bâtir le hash, lui-même utilisé pour stocker l’article sur une partition physique. La clé de tri est quant à elle utilisée pour classer les articles sur la partition, et enrichit les capacités de requêtes. On ne peut pas interroger un article dans une table DynamoDB sans la clé primaire ou une clé secondaire.
Toutes les données sont stockées sur des SSD et répliquées trois fois sur les zones de disponibilité, pour la redondance et la tolérance aux pannes.
Avec Amazon DynamoDB, la notion de cohérence est possible, mais l’utilisateur peut la configurer pour obtenir un niveau plus élevé en cas de besoin (avec toutefois un impact sur les performances).
Prendre en main DynamoDB
Les applications accèdent aux données de DynamoDB via des APIs. Trois types opérations doivent être connus :
- Control Plane. Ces opérations permettent de créer et de gérer les tables de la base. Ce type d’opérations permet aussi de gérer d’autres objets dépendants, comme les indexes et les flux (streams).
- Data Plane. Elles permettent de lire et d’écrire les données via les actions de création, lecture, mise à jour et suppression (create, read, update et delete) appliquées aux tables.
- DynamoDB Streams. Ces opérations permettent à l’administrateur d’activer ou de désactiver un flux (stream) sur une table, par exemple.
Un flux DynamoDB (Stream) est un flux ordonné d’informations portant sur les modifications d’articles d’une table. Ces flux permettent aux applications de ne capturer que les changements au moment même de leur application. Cela permet d’agir en réaction à ces changements.
Tarification, support et test de DynamoDB
Pour utiliser DynamoDB, l’utilisateur doit bénéficier d’un compte AWS. Lorsque les tables DynamoDB sont créées ou mises à jour, l’utilisateur doit aussi indiquer la capacité à prendre en compte la lecture et l’écriture. Le service réserve ainsi les ressources adéquates pour répondre aux besoins en matière de capacité de traitement. La tarification repose sur un forfait horaire calculé en fonction des ressources provisionnées.
Amazon DynamoDB est un data store indexé ; l’espace disque occupé par la donnée sera supérieur à sa taille brute lors de son chargement. Le service facture les données, en ajoutant à la taille brute de la donnée chargée un surplus de 100 octet par article qui compte pour l’index. Il n’est pas nécessaire de provisionner du stockage avec DynamoDB, car le service facture uniquement ce qui est utilisé. Notons que les 25 premiers Go sont gratuits, puis il faut compter 0,25$ par Go et par mois par la suite. Les premiers 2,5 millions de requêtes en lecture sur Dynamo Streams sont aussi gratuits. Après, cela sera facturé 0,02$ toutes les 100 000 requêtes. AWS Simple Monthly Calculator peut estimer le montant de la facture.
Toutes les offres de support AWS englobent un nombre illimité d’incidents. Cela est facturé au mois, sans engagement sur le long terme. Il n’y a pas de frais minimum à engager ; l’entreprise ne paie que ce qu’elle utilise. Les entreprises et les développeurs peuvent choisir parmi ces différentes offres de support :
- Basic avec un service client 24/7 ;
- Developer, qui ajoute à l’offre précédente des bonnes pratiques, et un temps de réponse garanti en moins de 12 heures ;
- Business. Cette offre comprend aussi le support d’APIs et un temps de réponse inférieur à une heure ;
- Enterprise. Cela donne un accès direct à un gestionnaire de compte, permet de contrôler l’infrastructure et propose un temps de réponse en moins de 15 minutes.
Il est enfin à noter qu’AWS propose une autre base de données NoSQL à son catalogue : SimpleDB. Elle cible davantage ceux qui n’ont pas besoin des performances et des capacités de dimensionnement de DynamoDB.