Base de données Non Relationnel : NoSQL
Publication : 6 décembre, 2011
Fonctionnement
Les bases de données NoSQL sont basées sur le théorème de CAP, dont les trois principes sont les suivants :
- cohérance (Consistency) : tous les clients voient les mêmes données au même instant.
- haute disponibilité (Availability) : les données restent accessibles même si un problème survient. Cela est possible si une redondance des données est mise en place.
- tolérance du partitionnement (Partition tolerance) : le système tolère le partitionnement des données, c'est-à-dire la répartition des données sur plusieurs périphériques dans le but d'améliorer les performances.
Pour un système de données partagées, seuls deux de ces principes peuvent être respectés. La plupart des systèmes NoSQL existant privilégient les deux derniers principes, au prix d'un relâchement des contraintes de cohérance des données. C'est pourquoi en général, les données pour lesquelles la cohérance est importante sont stockées dans des bases de données relationnelles, tandis que les données restantes, pour lesquelles la cohérance importe moins, sont stockées dans des bases de données NoSQL.
Types de bases de données NoSQL
Il existe 4 principaux types de bases de données NoSQL :
- bases de données orientées graphe : ce modèle de base de données stocke les données sous forme de graphes. Il permet de faciliter la représentation de relations et propriétés du monde réel et convient particulièrement au stockage des données des réseaux sociaux.
- bases de données clé-valeur : les données sont stockées dans une table de hashage, sous forme de couples clé-valeur. La valeur est une simple information, comme une chaîne de caractères.
- bases de données orientées document : les données sont stockées sous forme de couples clé-valeur. La valeur est un document contenant des données structurées, en XML ou en JSON par exemple. Cela permet de récupérer via une seule requête un ensemble structuré de données (donc facilement exploitable) sans devoir effectuer de jointures qui seraient nécessaires si on utilisait une base de données relationnelle.
- bases de données orientées colonnes : ce modèle utilise en apparence des tables similaires à celles utilisées dans les bases de données relationnelles, à la différence près que le nombre de colonnes est dynamique et peut varier entre deux entrées de la table. Cela permet d'éviter de stocker des valeurs NULL dans la table pour compléter des cellules non utilisées. Ce modèle est très adapté pour stocker un grand nombre d'enregistrements mais l'absence de clé étrangère qui permettent de représenter des relations entre plusieurs enregistrements dans les bases de données relationnelles, rend les mises à jour très fastidieuses, là où une requête aurait suffit avec une base de données relationnelle.
Exemples de bases de données NoSQL
La solution majeure pour la gestion des bases de données orientées graphe est Neo4J. Pour les bases de données clé-valeur, on peut citer Voldemort (Linkedin), Dynamo (Amazon) et Redis. Parmi les systèmes utilisant des bases de données orientées document, on trouve MongoDB, RavenDB, et CouchDB (Apache). Enfin, BigTable (Google), HBase (Apache) et Cassandra (Apache) utilisent des bases de données orientées colonnes.
Chez Iguane Solutions
Iguane Solutions utilise différentes bases de données NoSQL en fonction de ses besoins. Les bases de données NoSQL mises en place chez Iguane Solutions comptent Cassandra, Memcached, MongoDB, CouchDB, Tokyo Cabinet et Kyoto Cabinet. Elles peuvent servir à stocker certaines données des clients d'Iguane Solutions, des données statistiques, des données de session ou être utilisées comme systèmes de cache afin d'améliorer les performances.