Une base de données clé-valeur est un type de base de données non relationnelle, également appelée base de données NoSQL, qui utilise une méthode clé-valeur simple pour stocker des données. Elle stocke les données sous forme de paires clé-valeur dans lesquelles une clé sert d'identifiant unique. Les clés et les valeurs peuvent se présenter sous toutes les formes, des objets simples aux objets composés complexes. Valeur clé : les bases de données clé-valeur sont hautement divisibles et permettent une mise à l'échelle horizontale à des échelles que d'autres types de bases de données ne peuvent pas atteindre.

Quels sont les avantages des bases de données clé-valeur ?

Les bases de données relationnelles (bases de données SQL) traditionnelles stockent les données sous forme de tables contenant des lignes et des colonnes. Elles imposent une structure rigide aux données et ne sont pas idéales pour tous les cas d'utilisation. En revanche, les bases de données clé-valeur sont des bases de données NoSQL. Elles permettent des schémas de base de données flexibles et des performances améliorées à grande échelle pour certains cas d'utilisation. Les avantages du stockage clé-valeur incluent :

La capacité de mise à l'échelle

Étant donné que chaque requête utilisateur nécessite une interaction avec les données, les bases de données peuvent souvent devenir un obstacle aux performances des applications. Plusieurs stratégies pour résoudre le problème, telles que la réplication et le partitionnement, ajoutent de la complexité au code de l'application. De nombreuses bases de données clé-valeur fournissent un support intégré pour les fonctionnalités de mise à l'échelle avancées. Elles mettent à l'échelle horizontalement et distribuent automatiquement les données sur les serveurs afin de réduire les goulots d'étranglement sur un seul serveur.

La simplicité d'utilisation

Les bases de données clé-valeur suivent le paradigme orienté objet qui permet aux développeurs de mapper des objets du monde réel directement à des objets logiciels. Plusieurs langages de programmation, tels que Java, suivent le même paradigme. Au lieu de mapper leurs objets de code à plusieurs tables sous-jacentes, les ingénieurs peuvent créer des paires clé-valeur correspondant à leurs objets de code. Cela rend le stockage clé-valeur plus intuitif à utiliser pour les développeurs.

Les performances

Les bases de données clé-valeur traitent des opérations de lecture-écriture constantes avec des appels au serveur peu onéreux. Une latence améliorée et un temps de réponse réduit offrent de meilleures performances à grande échelle. Elles sont basées sur des structures simples à table unique plutôt que sur plusieurs tables interdépendantes. Contrairement aux bases de données relationnelles, les bases de données clé-valeur n'ont pas à effectuer des jointures de tables gourmandes en ressources, ce qui les rend beaucoup plus rapides.

Quels sont les cas d'utilisation des bases de données clé-valeur ?

Vous pouvez utiliser des systèmes de base de données clé-valeur comme base de données principale pour votre application ou pour répondre à des besoins spécifiques. Vous trouverez quelques exemples de cas d'utilisation de base de données clé-valeur ci-dessous.

Gestion de session

Une application orientée session telle qu'une application web ouvre une session lorsqu'un utilisateur se connecte à une application, puis ferme la session lorsque l'utilisateur se déconnecte ou lorsque la session expire. Pendant cette période, l'application stocke tous les attributs de la session utilisateur dans la mémoire principale ou dans une base de données. Les données de session peuvent inclure des informations sur le profil d'utilisateur, des messages, des données et des thèmes personnalisés, des recommandations, des promotions ciblées et des remises.

Chaque session utilisateur possède un identifiant unique. Les données de session sont uniquement interrogées par une clé primaire. Ainsi, un magasin clé-valeur rapide est idéal dans ce contexte. En général, les frais généraux par page liés aux bases de données clé-valeur sont inférieurs à ceux associés aux bases de données relationnelles.

Panier d'achat

Un site Web d'e-commerce peut recevoir des milliards de commandes en quelques secondes pendant la période des achats de Noël. Les bases de données clé-valeur peuvent gérer la mise à l'échelle de grandes quantités de données et de grands volumes de changements d'état tout en répondant aux besoins de millions d'utilisateurs simultanés grâce à un traitement et à un stockage distribués. Le stockage de données clé-valeur intègre également une capacité de redondance, ce qui lui permet de gérer la perte de nœuds de stockage.

Moteur de stockage des métadonnées

Votre stockage clé-valeur peut servir de couche de stockage sous-jacente pour des niveaux d'accès aux données plus élevés. Par exemple, vous pouvez mettre à l'échelle le débit et la simultanéité pour les charges de travail multimédias et de divertissement telles que le streaming vidéo en temps réel et le contenu interactif. Vous pouvez également créer votre plateforme de jeu avec les données des joueurs, l'historique des sessions et les tableaux de classement pour des millions d'utilisateurs simultanés.

Mise en cache

Vous pouvez utiliser une base de données clé-valeur pour stocker temporairement des données afin de les récupérer plus rapidement. Par exemple, les applications de réseaux sociaux peuvent stocker des données fréquemment consultées, telles que le contenu des fils d'actualités. Les systèmes de mise en cache des données en mémoire utilisent également le stockage clé-valeur pour accélérer les réponses des applications.

Comment fonctionnent les bases de données clé-valeur ?

Les bases de données clé-valeur fonctionnent en organisant toutes les données sous la forme d'un ensemble de paires clé-valeur. La clé peut être vue comme une question et la valeur comme la réponse à la question. Dans l'exemple ci-dessous, la clé primaire est composée de deux clés, Product ID et Type. La clé Product ID est la clé de partition qui décrit la partition dans laquelle l'article sera stocké. La clé Type est la clé de tri qui détermine l'ordre dans lequel les éléments seront stockés sur le disque. La combinaison de la clé de partition et de la clé de tri forme une clé primaire unique, qui correspond à une valeur unique dans la base de données.

Dans cet exemple, le livre d'objets de données possède des attributs tels que le titre, l'auteur et la date de publication. Chaque objet de données du livre possède une clé appelée BookID. Vous pouvez lier directement la clé BookID et l'objet de livre associé dans le stockage clé-valeur. Vous pouvez également récupérer des données en recherchant la clé BookID dans la table. De plus, chaque élément possède son propre schéma, ce qui rend le stockage clé-valeur très flexible pour les données de structures variées.

Schéma montrant un exemple de données stockées sous forme de paires clé-valeur dans DynamoDB

Quelles sont les fonctionnalités des bases de données clé-valeur ?

En fonction de la solution que vous choisissez, votre stockage clé-valeur peut fournir plusieurs fonctionnalités supplémentaires, comme indiqué ci-dessous.

Support pour les types de données complexes

Le stockage clé-valeur prend en charge des types de données définis tels que les entiers et le texte. Mais il prend également souvent en charge des objets plus complexes tels que des tableaux, des dictionnaires imbriqués, des images, des vidéos et des données semi-structurées. En fournissant à la base de données davantage d'informations sur vos données, il est possible d'optimiser davantage le stockage et les performances des requêtes.

Pas besoin de jointures de tables

Les bases de données clé-valeur n'ont pas besoin d'effectuer des jointures de tables gourmandes en ressources. Leur flexibilité permet de regrouper toutes les informations nécessaires dans une seule table. C'est l'une des raisons pour lesquelles le stockage clé-valeur fonctionne si bien.

Clés triées

Le stockage clé-valeur peut trier les clés afin que les données soient stockées de manière systématique et pour implémenter le partitionnement. Par exemple, les clés peuvent être triées :

  • alphabétiquement ou numériquement ;
  • chronologiquement ;
  • par taille des données.

Prenons l'exemple d'un stockage clé-valeur qui utilise l'adresse e-mail du client comme clé unique. Les adresses e-mail peuvent être triées par ordre alphabétique, de sorte que toutes les données des listes d'e-mails A-J sont stockées sur le serveur 1, les données des listes K-S sur le serveur 2, etc.

Prise en charge des clés secondaires

Certains stockages clé-valeur vous permettent de définir au moins deux clés ou index secondaires distincts pour accéder aux mêmes données. Par exemple, vous pouvez stocker les données des clients par adresse e-mail et numéro de téléphone clés.

Réplication

De nombreux stockages clé-valeur offrent une prise en charge intégrée de la réplication en copiant automatiquement les données sur plusieurs nœuds de stockage. Cela facilite la restauration automatique en cas de sinistre ; vous avez toujours vos données en cas de panne du serveur.

Partitionnement

Le partitionnement est la façon dont vous distribuez les données entre les nœuds. De nombreuses bases de données clé-valeur proposent des options de partitionnement par défaut. Certaines offrent également la possibilité de définir les paramètres d'entrée de vos partitions. Par exemple, vous pouvez partitionner les clés numériques en groupes de 1 000. Les bases de données clé-valeur avancées fournissent également un support automatique pour la distribution de votre base de données clé-valeur sur plusieurs emplacements géographiques. Cela améliore la disponibilité et la fiabilité des applications, car vous pouvez répondre aux requêtes à proximité de l'emplacement de l'utilisateur.

Support ACID

L'atomicité, la cohérence, l'isolation et la durabilité (ACID) sont des propriétés de base de données qui garantissent l'exactitude et la fiabilité des données en toutes circonstances. Par exemple, si vous apportez plusieurs modifications à vos données dans une séquence, l'atomicité nécessite que toutes les modifications soient effectuées dans l'ordre. Si un changement échoue, tout échoue.

Les bases de données clé-valeur avancées fournissent un support natif côté serveur pour ACID. L'apport, par les développeurs, de modifications radicales et coordonnées au niveau de plusieurs éléments au sein des tables et entre elles est facilité. Grâce à cette prise en charge des transactions, les développeurs peuvent étendre les avantages en matière d'échelle, de performances et d'exploitation à une plus grande quantité de charges de travail critiques.

Quelles sont les limites des bases de données clé-valeur ?

Les bases de données clé-valeur nécessitent quelques compromis, comme pour tous les choix technologiques.

Absence de requêtes complexes

Étant donné que les bases de données clé-valeur ne prennent pas en charge les requêtes complexes, les développeurs doivent contourner ce problème dans le code. Les opérations relatives aux données se font principalement par le biais de termes de langage de requête simples tels que get, put et delete. Il existe des limites quant à la capacité de filtrer et de trier les données avant d'y accéder.

Mauvaise gestion du schéma

La conception d'un stockage clé-valeur n'impose pas de schéma aux développeurs. Tout le monde peut modifier le schéma dans le programme de base de données. Les équipes de développement doivent planifier de manière systématique le modèle de données afin d'éviter les problèmes à long terme. L'absence d'un schéma précis signifie également que l'application est responsable de l'interprétation correcte des données qu'elle consomme, souvent appelée « schéma à la lecture ».

Comment AWS peut-il prendre en charge vos besoins en matière de bases de données clé-valeur ?

Amazon DynamoDB est l'une des bases de données clé-valeur les plus populaires. Elle est conçue pour exécuter des applications hautes performances à n'importe quelle échelle. C'est une base de données multi-régions et multi-activités entièrement gérée qui fournit les fonctionnalités suivantes :

  • une capacité de mise à l'échelle illimitée, y compris jusqu'à zéro, avec une latence constante de l'ordre de quelques millisecondes ;
  • sans serveur, sans mises à niveau de version, sans fenêtres de maintenance et sans serveurs ni logiciels à gérer ;
  • une disponibilité de 99,999 % grâce aux tables globales DynamoDB, qui fournissent une réplication active-active afin que vous puissiez créer des applications distribuées dans le monde entier avec des performances de lecture locales ;
  • une sécurité et une fiabilité élevées grâce au chiffrement par défaut au repos, à la récupération ponctuelle, à la sauvegarde et à la restauration à la demande, etc.
  • une facilité d'utilisation grâce aux intégrations à de nombreux services AWS, notamment la compatibilité avec Amazon DynamoDB Accelerator (DAX), l'importation/exportation en masse depuis Amazon S3, Amazon Kinesis Data Streams, Amazon Cloudwatch, etc.

Grâce à ce didacticiel détaillé sur la création et l'interrogation d'une table NoSQL, vous pouvez être opérationnel avec DynamoDB en 10 minutes. Démarrez avec les bases de données clé-valeur sur AWS en créant un compte gratuit dès aujourd'hui !

Présentation d'Amazon DynamoDB
Modélisation de données Amazon DynamoDB