Billets d'expert

Icon Article Base de données Non Relationnel : NoSQL

Base de données Non Relationnel : NoSQL

Publication : 6 décembre, 2011

NoSQL (Not Only SQL) désigne une catégorie de bases de données proposant des alternatives au langage SQL et au modèle relationnel utilisés dans les bases de données traditionnelles. Les bases de données NoSQL sont apparues il y a quelques années pour répondre aux besoins des sites à fort trafic comme Google, Amazon ou Facebook, de disposer de bases de données plus adaptées au stockage d'un volume massif de données. Elles offrent de meilleures performances en lecture/écriture que les bases de données relationnelles et possèdent une grande évolutivité (en terme de scalabilité horizontale). En contrepartie, elles ne possèdent pas toutes les propriétés ACID (Atomicity, Consistency, Isolation, Durability) qui garantissent la fiabilité d'une base de données. NoSQL ne remplace donc pas le modèle relationnel mais offre des solutions intéressantes dans certaines situations où les performances priment sur la cohérance des données.

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.