Choisir entre relationnel (SQL) et NoSQL - Amazon DynamoDB

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.

Choisir entre relationnel (SQL) et NoSQL

Aujourd'hui, les applications ont des besoins plus exigeants que par le passé. Par exemple, un jeu en ligne peut démarrer avec quelques utilisateurs seulement et une très petite quantité de données. Cependant, si le jeu devient un succès, il peut facilement dépasser les ressources du système de gestion de la base de données sous-jacente. Il est fréquent que les applications web aient des centaines, des milliers ou des millions d'utilisateurs simultanés, avec des téraoctets ou plus de nouvelles données générées par jour. Les bases de données de telles applications doivent gérer des dizaines (voire des centaines) de milliers de lectures et d'écritures par seconde.

Amazon DynamoDB convient parfaitement à ces types de charges de travail. En tant que développeur, vous pouvez commencer à petite échelle et augmenter progressivement votre utilisation au fur et à mesure que votre application gagne en popularité. DynamoDB se met à l'échelle en toute transparence pour gérer un très grand nombre d'utilisateurs et des quantités considérables de données.

Pour en savoir plus sur la modélisation des bases de données relationnelles traditionnelles et sur la façon de l'adapter à DynamoDB, consultez Bonnes pratiques de modélisation des données relationnelles dans DynamoDB.

Le tableau suivant présente quelques différences générales entre un système de gestion de base de données relationnelle (SGBDR) et DynamoDB.

Caractéristiques Système de gestion de base de données relationnelle (SGBDR) Amazon DynamoDB
Charges de travail optimales Requêtes ad hoc ; entreposage de données ; traitement analytique en ligne (OLAP). Applications web, y compris les réseaux sociaux, les jeux, le partage des fichiers multimédia et l'Internet des objets (IoT).
Modèle de données Le modèle relationnel nécessite un schéma bien défini, dans lequel les données sont normalisées en tables, lignes et colonnes. De plus, toutes les relations sont définies entre tables, colonnes, index et autres éléments de base de données. DynamoDB est sans schéma. Chaque table doit avoir une clé primaire pour identifier de façon unique chaque élément de données, mais aucune contrainte similaire ne s'applique aux attributs autres que de clé. DynamoDB peut gérer des données structurées ou semi-structurées, y compris des documents JSON.
Accès aux données SQL constitue la norme pour le stockage et la récupération de données. Les bases de données relationnelles offrent un riche ensemble d'outils pour simplifier le développement d'applications de base de données, mais tous ces outils utilisent SQL. Vous pouvez utiliser le AWS Management Console AWS CLI, le ou NoSQL WorkBench pour travailler avec DynamoDB et effectuer des tâches ad hoc. PartiQL, un langage de requête compatible SQL, vous permet de sélectionner, d'insérer, de mettre à jour et de supprimer des données dans DynamoDB. Les applications peuvent utiliser les kits de développement AWS logiciel (SDKs) pour travailler avec DynamoDB à l'aide d'interfaces basées sur des objets, centrées sur le document ou de bas niveau.
Performances Les bases de données relationnelles étant optimisées pour le stockage, les performances dépendent généralement du sous-système du disque. Les développeurs et les administrateurs de base de données doivent optimiser les requêtes, les index et les structures de table afin d'atteindre des performances de pointe. DynamoDB étant optimisé pour le calcul, les performances dépendent principalement du matériel sous-jacent et de la latence réseau. En tant que service géré, DynamoDB vous dispense, ainsi que vos applications, de ces détails d'implémentation, si bien que vous pouvez vous concentrer sur la conception et la génération d'applications robustes hautement performantes.
Dimensionnement Il est plus facile d'agrandir avec un matériel plus rapide. Il est également possible pour les tables de base de données de s'étendre sur plusieurs hôtes d'un système distribué, mais cela nécessite des investissements supplémentaires. Les bases de données relationnelles possèdent une taille maximale pour le nombre de fichiers et leur taille, ce qui impose des limites supérieures sur l'évolutivité. DynamoDB est conçu pour monter en charge à l'aide de clusters distribués de matériel. Cette conception permet un débit accru sans augmentation de la latence. Les clients spécifient leurs exigences de débit et DynamoDB alloue des ressources suffisantes pour répondre à ces exigences. Il n'y a aucune limite supérieure sur le nombre d'éléments par table, ni sur la taille totale de la table.