Introduction au NoSQL (et de Redis) ou le compte rendu du NoSQL User Group Paris de Février 2010

Je suis depuis quelque temps ce qui se passe du côté du NoSQL, un terme apparu récemment dans la bouche des architectes. En effet, le Java n’est rien sans un système de stockage. En l’état actuel des choses, on voit à cela deux solutions: le système de fichiers ou la base de données relationnelles telle qu’Oracle. Mais il existe d’autres alternatives! Ce 16 Février avait lieu une nouvelle session du NoSQL User Group à Paris, chez Octo Technology, avec comme invité Tim Anglade et Frank Denis. Le mouvement NoSQL prône le fait que la base de données ne se résume pas aux deux solutions que je viens de citer. Il vient à montrer qu’il existe des outils plus adaptés à certaines problématiques fonctionnelles de stockage. Aujourd’hui, Tim Anglade nous a expliqué ce qu’était l’écosystème du NoSQL: ses tenants et ses aboutissants. Frank Denis nous a quand à lui fait part de son expérience avec Redis, un intéressant système de gestion de base de données open source parmi d’autres, en phase avec cette mouvance.

Le Branding du NoSQL

Tim Anglade nous a fait part pendant une intéressante heure de la NoSQL sphere. Tim participe à de nombreux événements NoSQL et va co-organiser une conférence NoSQL Europe à Londres au mois d’Avril.

Le départ du NoSQL

Un peu d’histoire: le modèle des bases relationnelles, le concept le plus utilisé actuellement, a été mis sur le devant de la scène en 1970 par IBM. Oracle, IBM DB2, MySQL sont basés d’ailleurs là-dessus et dominent la couche persistance de nos applications depuis plusieurs décennies. Et ils le méritent, car le SQL fournit un écosystème solide. Néanmoins, le développeur n’a pas forcément envie d’organiser ses données dans des structures rigides et n’a pas toujours besoin de relationnel dans ses données. Les propriétés ACID peuvent devenir une contrainte: c’est là que le NoSQL fait surface.

Les propriétés ACID sont quatre propriétés essentielles d’un sous-système de traitement de transactions d’un système de gestion de base de données. Le mot ACID est un acronyme référant aux propriétés suivantes :

  • Atomicité : une transaction doit soit être complètement validée ou complètement annulée.
  • Cohérence : une transaction ne peut pas laisser la base de données dans un état incohérent.
  • Isolation : une transaction ne peut voir aucune autre transaction en cours d’exécution.
  • Durabilité : après que le client ait été informé du succès de la transaction, les résultats de celle-ci ne disparaîtront pas.

Source: Wikipédia

Ses Principes

Afin d’expliquer ce qu’est le NoSQL, expliquons ce qu’il n’est pas. Le NoSQL n’est pas:

  • Anti Base de données
  • Anti SQL: certains veulent même faire dire que NoSQL veut dire « Not Only SQL« 
  • Un langage: il existe différents type de SGBD NoSQL qui ont chacune leur propres principes
  • et encore moins un standard: on peut faire le parallèle du branding NoSQL avec le branding du Web 2.0 au milieu des années 2000
  • n’est pas forcément synonyme de gros volume de stockage ou de « scalability« 

Le NoSQL n’invente pas forcément des choses nouvelles. Elle remet aussi au gout du jour des concepts phagocytés par les SGBDR. Un principe que l’on retrouve souvent, en revanche, est le système clef => données.

Les différentes familles de SGBD NoSQL

a- Les bases orientées Documents

Ce sont des bases de données utilisées plutôt pour la gestion de données type documents. Le principe est de regrouper au même endroit, toutes les données. Tim a comparé ces bases aux annuaires LDAP.

Les serveurs NoSQL suivant implémentent cette logique: CouchDB, MongoDB

b- Les Bases Clef->Valeur

Ces bases sont des sortes de grosses HashMap. Pour chaque clef est stocké une valeur.

Les serveurs NoSQL suivant implémentent cette logique: Tuple space, Hbase, Memcachedb, Project Voldemort, Redis, SimpleDB

c- Les Bases Hiérarchiques

Ces bases sont utilisées pour gérer des ensembles ainsi que des sous ensembles. Les bases de données géographique utilisent souvent ce modèle.

d- Les Bases Orientées Graphes

On utilise ces bases pour gérer un graphe: comme les liaisons entre membres d’un réseau social. Neo4J est sans doute la base la base répondant le mieux à cette description.

e- Les Bases Dimensionnels

Principalement basées sur les travaux de Google BigTable. L’idée est de stocker qu’un seul type de données, dans ce qu’on pourrait appeler des « tables de deux colonnes ». Ce genre de serveur permettent de calculer très rapidement certaines statistiques.

Les serveurs NoSQL suivant implémentent cette logique: Cassandra, Hypertable.

f- Les Bases orientées objet

Les bases de données objets est un concept qui est loin d’être récent. Hélas ce genre de projet est handicapé par sa polyvalence, car cela créée des systèmes plutôt lourds.

Le futur du NoSQL

Le NoSQL n’est pas une solution à tous nos problèmes de stockage de données. Chaque SGBD répond à une problématique particulière. Il manque une certaine polyvalence chez certaines d’entre elles. L’avenir viendra peut-être des solutions traditionnelles (Oracle, MySQL, etc.) qui ajouteront ces possibilités ou des serveurs de bases NoSQL « hybrides ». A l’heure actuel, coupler plusieurs SGBD NoSQL ne serait pas la meilleure solution architecturale. Mais coupler une base NoSQL à une base SGBDR, comme nous sommes habitués, permettrait une meilleure acceptation du système au sein d’un projet ou d’une entreprise.

« Ce n’est pas parce qu’on a un marteau que tout doit ressembler à un clou »

Tim Anglade à propos de l’utilisation in Real Life du NoSQL

Néanmoins, le NoSQL est très jeune, peut-être trop jeune pour rentrer en entreprise. Bien que certaines bases comme MongoDB soient très matures, il faudra peut-être attendre une dizaine d’années avant de voir ce concept utilisé fréquemment par des applications critiques.

Les slides de présentation de Tim

Redis: une base de données Key-Value

Frank quand à lui nous a présenté RedisRedis est un serveur de données inspiré de Memcached. Un petit mot sur Frank: Frank Denis est développeur chez Skyrock. Il travaille notamment sur la plateforme sociale de cette radio qu’on ne présente plus. Franck nous a fait une présentation très technique (malheureusement écourtée par le temps) sur sa base NoSQL favorite. Je vous présenterai donc ici, ses avantages et ses inconvénients. Pour plus de détails tel que des noms d’outils et certains trucs et astuces, je vous laisserai consulter ses slides.

Franck décrit Redis comme un projet hyper actif … et donc hyper instable… Néanmoins, il l’utilise en production, en plus de sa base de données traditionnelle pour la décharger. Coté performance, Redis est plus lent et plus gourmand que Memcached… Mais ces deux projets son différents. En effet, Redis a une couche de persistance que Memcached n’a pas. Ce qui lui donne deux avantages indéniables:

  • Redis peut se substituer à un SGBD classique
  • En cas de crash les serveurs de  bases de données ne tiendraient pas forcément le fait de reconstituer leur cache (c’est le cas à Skyrock.com).

Mais rendons à César, ce qui est à César, Redis a des performances proches de Memcached. Il sait passer inaperçu quand on ne lui demande rien. Son système de persistance journalisé participe aux bonnes performances globales.

Un autre avantage de Redis sont ses fonctionnalités de sélection de données. Ses fonctions ne sautent pas au yeux d’un ingénieur travaillant sur des systèmes d’informations financières, mais elles prennent tout leur sens aux yeux d’un développeur de réseaux sociaux. Je vous laisse encore fois, lire ses slides à ce sujet.

Les slides de présentation de Franck

Et le Prochain NoSQL User Group

Ce NoSQL User Group était un petit sucés. A vu d’œil, il y avait une bonne trentaine de participants. L’ambiance était assez studieuse (vous pouvez le constater au ton de ce billet, très différent de mon dernier compte rendu du Paris JUG, plus festif). Ce groupe d’utilisateurs étant très récent, sa formule de deux présentations va peut-être être modifié en une seule présentation suivie de questions/réponses/discussions… A confirmer par son organisateur Olivier Malassi.

Liens: