C'est quoi une base de données NOSQL ?
NoSQL signifie “Not Only SQL”. Ce terme désigne l’ensemble des bases de données qui s’opposent à la notion relationnelle des SGBDR.
NoSQL ne vient pas remplacer les Bases de données relationnelles mais proposer une alternative ou compléter les fonctionnalités des SGBDR pour donner des solutions plus intéressantes dans certains contextes.
L’augmentation exponentielle des information numériques fait apparaître des ensembles de données qui deviennent tellement volumineux qu’il est difficile (voire impossible) de le traiter avec des temps de réponses convenables via des outils traditionnels.
Un des points les plus intéressant est la possibilité de distribuer la base de données sur plusieurs serveurs, ce qui est très difficile dans le cas des bases de données traditionnelles.
Tout le monde n’est pas Facebook et n’a pas des milliards d’informations à traiter. Le NoSQL peut être intéressant dans les cas suivants :
- Garantir des performances dans un contexte de grande volumétrie, notamment grâce à la distribution sur plusieurs serveurs
Grande flexibilité du modèle. Possibilité d’utiliser autre chose qu’un modèle figé ou les propriétés sont définies à l’avance,
Attention aux inconvénients :
- Le schéma flexible apporte une plus grande liberté et permet de stocker de façon optimale des ensembles de données dont les entrées peuvent être très disparates. Mais en contrepartie, le langage permettant d’effectuer des requêtes vers le système NoSQL est beaucoup moins riche et la complexité intrinsèque de la requête est déplacée du SQL vers la logique de l’application elle-même
La distribution aisée de l’ensemble des données et des requêtes permet d’éviter d’avoir à acquérir un serveur hors de prix afin d'accommoder le nombre croissant de requêtes ou de données. La contrepartie se situe au niveau de la consistance des données. Les systèmes NoSQL les plus populaires ne respectent pas l’ensemble des propriétés A.C.I.D. comme le fait un système relationnel classique. Cela se traduit en pratique par un effort supplémentaire dans certains cas pour s’assurer de la cohérence des données.
Les bases CLE/VALEUR
Ce type de bases de données peut être vu comme une gigantesque table associative clé/valeur éventuellement partitionnée sur plusieurs instances.
Les structures de données ne sont pas contraintes par un schéma.
Réputées performantes et capables de gérer un volume important de données, les bases clé/valeur sont par exemple adaptées à :
- la collecte événements (jeux en ligne),
- la gestions de traces (mesure d’audience)
- la gestions de profils utilisateurs des sites de forte audience (commerce électronique)
Dans un modèle clé/valeur, on stocke les entités mais pas les relations entre elles. On pourrait faire des ajustements en dénormalisant le modèle, mais l’application devra alors maintenir elle-même la cohérence des données en cas de mise à jour ou suppression. Plus la modélisation métier est complexe, moins une base de type clé/valeur est adaptée.
Les bases orientées DOCUMENT
Elles ont vocation à stocker des données semi-structurées, c’est-à-dire dont la structure n’est pas contrainte par un schéma mais dont le contenu est néanmoins formaté. L’unité de stockage est un document, généralement au format JSON ou XML.
Ce type de base trouvera naturellement sa place dans les systèmes de gestion documentaire (CMS) tant le modèle s’y prête bien mais est également adapté dans les cas d’usage suivants :
- archivage / stockage de traces applicatives
- statistiques et analyse temps-réel
- plateforme de commerce électronique (souvent en association avec un SGBDR
Les bases orientées COLONNE
Dans une base de données relationnelle, une table est un ensemble de données organisées en colonnes dont le nombre est fixe quel que soit le nombre d’enregistrements. Lorsque l’on insère un enregistrement dans cette table, on spécifie une valeur pour chaque colonne.
Dans un SGBD orienté lignes, les données seront stockées de la manière suivante : 1,Doe,John,8000;2,Smith,Jane,4000;3,Beck,Sam,1000;
Dans un SGBD en colonnes, les mêmes données seront stockées de la manière suivante : 1,2,3;Doe,Smith,Beck;John,Jane,Sam;8000,4000,1000;
L'un des principaux avantages d'une base de données en colonnes est une exécution particulièrement rapide des opérations en colonnes, notamment MIN, MAX, SUM, COUNT et AVG.
Il est aussi possible d’ajouter des colonnes dynamiquement.
C’est idéal pour les statistiques, les consolidations en volume.
Ces bases ne sont pas faites pour le relationnel, et la mise à jour d’un enregistrement peut être très coûteuse.
Les bases orientées GRAPHE
Fondées sur la théorie des graphes, elles sont conçues pour modéliser des structures de données relationnelles aussi diverses qu’un réseau social, un réseau ferroviaire ou l’organisation d’une entreprise .
Les bases de données relationnelles sont tout à fait adaptées pour gérer ce type de structures mais elles atteignent leurs limites sur le champ de la performance quand la profondeur du graphe et le volume de données à gérer sont importants. Sur ce point, les bases de données orientées graphe surclassent les SGBDRs.
Dans le monde des bases orientées graphe, tout est affaire de noeuds, de relations et de propriétés. Les propriétés portent aussi bien sur les noeuds que les relations.
Ce modèle est très adapté pour gérer des données sociales ou spatiales, mais également financières.
Créé par Twitter, FlockDB est disponible sous licence libre depuis 2010. Pour information, le cluster FlockDB de Twitter gère plus de 13 milliards de relations et supporte jusqu’à 20 000 écritures par seconde.