Qu’est ce que NoSQL?

NoSQL désigne une famille de systèmes de gestion de base de données (SGBD) qui s’écarte du paradigme classique des bases relationnelles. Ils sont apparus pour résoudre les problème du Big data.

Bases de données relationnelles

NoSQL est un système de stockage des données utilisé dans le Big data. Avant d’aborder ce sujet, faisant un flashback sur les bases de données relationnelles ou SGBDR.

Les bases de données de données relationnelles sont basées sur trois éléments :

  • Structure de données : Dans les SGBDR, les données sont enregistrées dans des tables constituées des lignes et de colonnes.
  • Des contraintes : Tous les enregistrements possèdent impérativement les mêmes colonnes. Un SGBDR contient la description de toutes les contraintes qu’il s’agisse de limites sur des valeurs numériques, de la syntaxe admise pour les chaines de caractères ou d’intégrités des références.
  • Des opérations : elles définissent comment on lit les données, comment on les mis à jour et comment les supprime. Dans les SGBDR, elles sont définies par le langage SQL.

Les SBGDR gèrent les transactions. Une transaction correspond par exemple à un transfert d’argent bancaire ou à la réservation d’un billet d’avion et d’une chambre d’hôtel. Réalisée comme une succession d’opération sur une ou plusieurs bases de données, son rôle est de garantir que, soit toutes les opérations qu’elle englobe sont effectuée avec succès, soit aucune opération n’est effectuée. Les transactions, tout comme les contraintes d’intégrité imposées par le schéma du SGBDR, contribuent ainsi à garantir la cohérence des données hébergées.

En résumé, les mécanismes de schémas (structure et contrainte) et de transactions assurent la cohérence des données au sein d’un SGBDR. Par ailleurs l’existence d’un langage déclaratif comme SQL permet un découplage logique entre les données et les applications qui les utilisent.

Pourquoi les bases de données NoSQL ?

Les plateformes des applications e-business à grande échelle comme Amazon et les réseaux sociaux comme Twitter et Facebook sont assurées par la mise en œuvre d’architecture distribuées sur des centaines voire des milliers de machines. Grâce à cette architecture, ces plateformes bénéficient d’une grande performance et d’une haute disponibilité. Dans un tel contexte, parvenir à parfaite intégrité des données et une stricte isolation des transactions est extrêmement difficile et coûteux. Le volume des échanges d’information nécessaires pour parvenir à une synchronisation parfaite des nœuds SGBDR distribué limite en effet le nombre de serveurs à quelques dizaines.

Il convient d’ajouter le caractère souvent non structuré du Big data qui met en cause le modèle de donnée structuré des SGBDR. Des informations précieuses ne demandes qu’à être analysés sont aujourd’hui enregistrées sur des fichiers logs, des feuilles d’Excel, des mails.

En résumé, un haut de niveau de cohérence des données pénalise les performances ou la disponibilité d’une base de données.

Qu’est-ce que les bases de données NoSQL ?

Voici les priorités auxquelles les bases de données NoSQL répondent :

  • Distribuer les traitements et le stockagesur des centaines voire des milliers de nœuds constitués de serveurs.
  • Donner la priorité aux performances et à la disponibilité sur l’intégrité des données
  • Traiter efficacement les données non structurées ou seulement partiellement structurées.

Les systèmes de base de données NoSQL ont les caractéristiques suivantes :

  • Ce sont des systèmes clusterisables et permettant une monté en charge.
  • Ils sont en règle générale dépourvus de schéma. Ces systèmes n’exigent pas des données structurées.
  • Ils sont dépourvus de transactions au sens habituel du terme.
  • Ils sont non relationnels dans le sens où ils n’offrent pas de jointures.
  • Beaucoup de ces systèmes sont aujourd’hui proposés en open source.

Différentes catégories base de données NoSQL

La catégorisation des systèmes de bases de données NoSQL n’est pas aisée, cependant ils peuvent être classés en catégories suivantes :

  1. Les entrepôts clé-valeur.
  2. Les bases orientées documents.
  3. Les bases orientées colonnes.
  4. Les bases de données orientées graphes.

Les entrepôts clé-valeur

Un entrepôt clé-valeur peut être envisagé comme une collection de tables de hachage. C’est-à-dire comme une collection de couples clé-valeur sur disque dur. La valeur en question peut être un morceau d’information (de type binaire blob) sans aucune structure.

Exemples de SGBD : Redis, Amazon SimpleDB, Memcached

Le stockage de données de session utilisateur est cas d’utilisation d’un entrepôt clé-valeur. De manière similaire, le stockage des préférences ou des profils des utilisateurs ou encore les association entre client et paniers d’achat des sites e-commerce .

Les bases orientées documents

Les bases de données orientées documents différent peu des bases de données à clé-valeur dont les valeurs sont des documents semi-structurés. Ces documents sont au format de type XML, JSON ou similaire.

Exemples de SGBD : MongoDB, Couchbase, Amazon DynamoDB

Pour exemple d’usage, les applications d’e-commerce dont les produits varient trop souvent pour être au moyen d’un schéma stable.  Aussi, les applications qui manipulent naturellement des documents comme les systèmes de gestion de contenu et les plateformes de blogs.

Les bases orientées colonnes

Les bases de données orientées colonnes possèdent une structure bien particulière. Cette structure est de colonnes dont les noms peuvent soit statiques , ils sont alors partagés par tous les enregistrements d’une collection de colonnes, soit dynamiques, c’est-à-dire qu’ils peuvent varier d’un enregistrement à l’autre au sein d’une telle collection.

Exemples de SGBD :  Cassandra, Hbase

Ce type de base orientée colonnes est idéal pour stocker les blogs avec leurs publications, leurs liens, les rétroliens ainsi que les commentaires associés.

Les bases de données orientées graphes

Les bases de données orientées graphes permettent de créer des nœuds puis de créer des associations entre eux et de les modifier par la suite. Les autres types de bases de données NoSQL (clé-valeur, orientée documents, orientée colonnes) regroupe les données au sein d’agrégats, alors que les bases de données orientées graphiques les éclatent autant que possible dans un graphe.

Exemple de SGBD orienté graphes : Neo4j

Les domaines métiers qui s’expriment naturellement à l’aide de graphes sont éligibles à l’utilisation de bases orientées graphes.