# Bases de données clé-valeur

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 appelée aujourd'hui dictionnaire ou table de hachage.
Les dictionnaires contiennent une collection d'objets, ou d'enregistrements, qui comportent à leur tour 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 qui est utilisée pour trouver les données dans la base de données.
Les bases de données clés-valeurs fonctionnent d'une manière très différente des bases de données relationnelles (BDR) plus connues.
Les BDR pré définissent la structure des données dans la base de données comme une série de tableaux contenant des champs avec des types de données bien définis. L'exposition des types de données au programme de la 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 collection opaque unique, 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 tels que la programmation orientée objet.
Étant donné que les valeurs optionnelles ne sont pas représentées par des espaces ou des paramètres d'entrée, comme dans la plupart des bases de données régionales, les bases de données clés-valeurs utilisent souvent beaucoup moins de mémoire pour stocker la même base de données, ce qui peut fournir des gains de performance 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 l'évolution rapide vers l'informatique en nuage après 2010 a conduit à une renaissance dans le cadre du mouvement NoSQL plus large. Certaines bases de données orientées graphe, comme ArangoDB, sont également des bases de données clé-valeur en interne, ajoutant le concept des relations (pointeurs) entre les enregistrements comme un type de données de première classe.

## Types

Les bases de données clé-valeur peuvent utiliser des modèles de cohérence allant de la cohérence éventuelle à la sérialisation. Certaines prennent en charge l'ordonnancement des clés.
Certains conservent les données en mémoire (RAM), tandis que d'autres utilisent des SSD ou des HDD.
Chaque entité (enregistrement) est un ensemble de paires clé-valeur. Une clé a plusieurs composants, spécifiés sous forme de liste ordonnée. La clé principale identifie l'enregistrement et se compose des premiers éléments de la clé. Les composants suivants sont appelés clés mineures.
Cette organisation est similaire à la spécification d'un chemin de répertoire dans un système de fichiers (par exemple, /Majeur/mineur1/mineur2/). 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 un dbm (database manager), qui est 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 clé unique (une clé primaire). Les implémentations modernes incluent sdbm, GNU dbm, et Berkeley DB. Bien que le dbm précède le concept de NoSQL et soit rarement mentionné dans le discours moderne, il est utilisé par de nombreux logiciels.