
Une base de données clé-valeur , ou magasin clé-valeur , est un paradigme de stockage de données conçu pour stocker, récupérer et gérer des tableaux associatifs et une structure de données plus communément connue aujourd'hui sous le nom de dictionnaire ou table de hachage . Les dictionnaires contiennent une collection d' objets , ou enregistrements , qui à leur tour contiennent de nombreux champs différents , chacun contenant des données. Ces enregistrements sont stockés et récupérés à l'aide d'une clé qui identifie de manière unique l'enregistrement et est utilisée pour rechercher les données dans la base de données .
Les bases de données clé-valeur fonctionnent d'une manière très différente des bases de données relationnelles (RDB) plus connues. Les RDB prédéfinissent la structure des données dans la base de données sous la forme d'une série de tables contenant des champs avec des types de données bien définis . L'exposition des types de données au programme de base de données lui permet d'appliquer un certain nombre d'optimisations. En revanche, les systèmes clé-valeur traitent les données comme une seule collection opaque, qui peut avoir des champs différents pour chaque enregistrement. Cela offre une flexibilité considérable et suit de plus près les concepts modernes comme la programmation orientée objet . Étant donné que les valeurs facultatives ne sont pas représentées par des espaces réservés ou des paramètres d'entrée, comme dans la plupart des RDB, les bases de données clé-valeur utilisent souvent beaucoup moins de mémoire pour stocker les mêmes données, ce qui peut entraîner des gains de performances importants dans certaines charges de travail.
Les performances, le manque de normalisation et d'autres problèmes ont limité les systèmes clé-valeur à des utilisations de niche pendant de nombreuses années, mais le passage rapide au cloud computing après 2010 a conduit à une renaissance dans le cadre du mouvement NoSQL plus large . Certaines bases de données graphiques , telles qu'ArangoDB , [ sont également des bases de données clé-valeur en interne, ajoutant le concept des relations ( pointeurs ) entre les enregistrements comme type de données de première classe.
Types et exemples
Les bases de données clé-valeur peuvent utiliser des modèles de cohérence allant de la cohérence éventuelle à la sérialisabilité . Certaines prennent en charge le classement des clés.
Certains conservent les données en mémoire (RAM) , tandis que d'autres utilisent des disques SSD ou des disques rotatifs .
Chaque entité (enregistrement) est un ensemble de paires clé-valeur. Une clé comporte plusieurs composants, spécifiés sous forme de liste ordonnée. La clé principale identifie l'enregistrement et se compose des principaux composants de la clé. Les composants suivants sont appelés clés mineures. Cette organisation est similaire à une spécification de chemin de répertoire dans un système de fichiers (par exemple, /Major/minor1/minor2/). La partie « valeur » de la paire clé-valeur est simplement une chaîne non interprétée d'octets de longueur arbitraire.
Le système Unix fournit dbm (gestionnaire de base de données), une bibliothèque de 1979 écrite à l'origine par Ken Thompson . Elle est également portée sur Microsoft Windows , fournie par des langages de programmation tels que Perl pour Win32 . Le dbm gère des tableaux associatifs de données arbitraires en utilisant une seule clé (une clé primaire). Les implémentations modernes incluent sdbm, GNU dbm et Berkeley DB . Bien que dbm précède le concept de NoSQL et soit rarement mentionné dans le discours moderne, il est utilisé par de nombreux logiciels.
Un exemple plus récent de base de données clé-valeur est RocksDB qui est utilisé comme moteur de stockage pour d'autres systèmes de gestion de base de données tels qu'ArangoDB . D'autres exemples incluent Aerospike (base de données) , Amazon DynamoDB , Memcached , Redis et ScyllaDB .