
Le NoSQL regroupe de nombreuses bases de données, récentes pour la plupart, qui se différencient du modèle SQL par une logique de représentation de données non relationnelle. Leurs principaux avantages sont les performances et leur capacité a traiter de très grands volumes de données.
Ces bases de données proposent une nouvelle représentation de l’information. En s’affranchissant des contraintes ACID (atomicité, cohérence, isolation, durabilité - cf. article de Wikipedia "Transaction Informatique") du modèle SQL, elles ont le très gros avantage de fournir une architecture technique où il suffit de rajouter des serveurs pour gagner en performance sans trop se poser de questions.
En revanche, dans les projets, il ne faut pas opposer ces deux approches mais bien souvent les faire cohabiter ! Cette technologie (le NoSQL) ne vise finalement pas à remplacer les SGBD traditionnels mais plutôt à les compléter en déportant une partie de la charge vers le midle-tiers (dans les architectures web classiques).
1 - Clé - valeur : La représentation la plus simple. Cette structure est très adaptée à la gestion de caches ou pour fournir un accès rapide aux informations. Elle fonctionne comme un grand tableau associatif et retourne une valeur dont elle ne connaît pas la structure.
2 - Document : Ajoute au modèle clé-valeur, l’association d’une valeur à structure non plane, c’est-à-dire qui nécessiterait un ensemble de jointures en logique relationnelle.
3 - Colonne : Autre évolution du modèle clé-valeur, il permet de disposer d'un très grand nombre de valeurs sur une même ligne, permettant ainsi de stocker les relations de type one-to-many. Contrairement au système Clé-Valeur, celui-ci permet d’effectuer des requêtes par clé.
4 - Graphe : Permet la modélisation, le stockage et la manipulation de données complexes liées par des relations non-triviales ou variables.
A part être une super nouvelle techno pour Geek qui se la racontent, c'est la notion de "fit to code". Le NoSQL permet de stocker les informations d'une manière qui colle mieux à leur représentation. Exemple :