Qu'est-ce qu'une base de données NoSQL ?
Depuis plus de 20 ans maintenant, la méthode la plus communément utilisée pour stocker des informations de manière permanente est le modèle relationnel , avec les Systèmes de gestion de base de données (SGBD et SGBDR) comme MySQL, SQLite, Oracle, SQL Server ou MariaDB.
Le modèle relationnel consiste à stocker l'information dans des tables très précisément définies par leur schéma (leurs différentes colonnes, clés primaires, clés étrangères). Cela permet de ne pas stocker l'information plusieurs fois, et de pouvoir facilement consolider les données avec des requêtes SQL et des jointures.
Mais ce modèle a une limite, son schéma est statique.
Prenons par exemple un site de e-commerce qui vendrait toute sorte de choses :
- De l'électroménager (machine à laver, aspirateur...)
- Livres, DVD, Jeux vidéos
- Matériel audio/vidéo/photo, informatique
- Places de concert
- Matériel de jardin (tondeuse à gazon)
Ce site de e-commerce pourrait utiliser une table catalogue dans laquelle il stocke tous les produits qu'il vend.
Mais comment arriver à définir un schéma pour la table catalogue, qui puisse à la fois stocker une machine à laver, caractérisée par :
- son prix
- son fabricant
- son nombre de tours par minute
- le volume de son tambour
- ...
et un appareil photo reflex, caractérisé par :
- son prix
- son fabricant
- le nombre de pixels du capteur
- la taille du capteur
- la sensibilité du capteur (ISO)
- ...
Cela est très difficile à faire, soit on créé un nombre interminable de colonnes pour la table catalogue, en étant parfois obligé d'ajouter de nouvelles colonnes pour les nouveaux types de produits qui le nécessietairent, soit on utilise une parade comme le modèle Entité Attribut Valeur (EAV), au prix de performances catastrophiques du au nombre de jointures très important pour remonter les données.
Les bases de données NoSQL
C'est à partir de ce constat des limites du modèle relationnel qu'une nouvelle idée a émergé au début des années 2000, cette idée c'est de se passer du schéma, pouvant ainsi stocker des objets assez hétéroclites.
Divers projets existent, les principaux sont MongoDB, CouchDB et Cassandra (Fondation Apache), BigTable (Google) ou HBase (Facebook).
Concrètement, ce genre de base stocke des objets, dans le jargon on appelle cela des documents. Ces documents sont regroupés à l'intérieur de collections, qui sont l'équivalent des tables dans le modèle relationnel. Les relations sont appelées liens (links), et sont un peu l'équivalent des pointeurs ou du passage par référence.
MongoDB par exemple utilise un format binaire dérivé du JSON (appelé BSON) pour stocker les données.
Après avoir lu imprimer le titre du classeur excel vous en saurez d'avantage sur ce sujet.
Que signifie le terme NoSQL ?
Contrairement à ce qu'on pourrait croire au premier abord, une base de données NoSQL ne veut pas dire qu'on effectue plus de requêtes, NoSQL signifie simplement Not Only SQL. Il ne s'agit pas d'un nouveau langage de requête permettant de dialoguer avec un SGBD, il s'agit d'une nouvelle approche du stockage de données, rien que ça !
Est-ce que le NoSQL va tuer les SGBD ?
Sur internet, on peut lire beaucoup de contenus qui prédisent la disparition des SGBGR, qui seraient voués à disparaitre dans les 10 années qui viennent, remplacés par les bases NoSQL.
En réalité c'est un peu plus complexe. Même si le modèle relationnel a ses limites, il est aussi très bien adapté à certains problèmes.
Les besoins ont beaucoup évolué avec le développement d'internet et les besoins de plus en plus élaborés en terme de gestion de contenu notamment. C'est à ces nouveaux besoins que le modèle relationnel n'est pas adapté, et le NoSQL est la solution la plus adaptée pour ces nouveaux besoins.
Donc l'avenir est surement à la cohabitation entre ces deux approches, qui sont parfaitement complémentaires.
Différence entre NoSQL et SQL3
Vous avez peut-être entendu parler du SQL3, il s'agit d'une nouvelle norme apparue à la fin des années 90 pour ajouter des notions de programmation orientée objet aux SGBDR (comme Oracle notamment), avec de nouvelles fonctionnalités comme le stockage de masse et les nested tables.
Le SQL3 est en quelque sorte une tentative de paliers aux limites du modèle relationnel en ajoutant de nouvelles fonctionnalités, alors que le NoSQL est une nouvelle approche, partie de zéro ("from scratch").
Fini de lire cette page ? allez faire un tour ici : sorcière sur un balai volant, ça peut vous intéresser.