Ch’ti JUG : Lili et Cassandra
Le 12 décembre s’est tenu dans les locaux de l’IUT A de Lille une session du Ch’ti JUG sur Lili et Cassandra deux outils autour des bases de données NoSql. La présentation de Lili a été faite par Stevens Noel et celle sur Cassandra par Jérémy Sevellec.
Ayant déjà écrit un post sur la session sur le NoSQL, je ne reparlerais pas de Cassandra (bien que la présentation fut plus complète et fort intéréssante), vous pouvez retrouver mon post sur le NoSQL ici : Ch’ti JUG : NoSQL
La présentation de Lili par Stevens Noel commença tout d’abord par un rappel de ce qu’est le NoSQL, du pourquoi de l’utilisation du NoSQL et de la notion de BigData. Il explique pourquoi on a eu besoin des bases de données NoSQL par la problématique du BigData : le problème du BigData c’est :
- Quand un serveur BDD relationnel ne suffit plus à hébergé une base de donnée
- Quand les performances en écritures ne sont plus suffisante
- Quand les indexes poses des problèmes car ils représentent une optimisation figé (on ne peut changer un index dynamiquement)
- Quand on a besoin de possibilité de scaling horizontal (plusieurs serveur)
Quand on est dans une ou plusieurs de ces problématique, alors les BDD relationnels standard ne suffisent plus, c’est la problématique du BigData donc les bases de données NoSQL apportent une solution.
Lili est une solution complète basée sur un ensemble de composants open source tournant autour des problématiques NoSQl, vous trouverez des informations détaillée de la solution sur son site : http://www.lilyproject.org/lily/index.html. Les différents composants peuvent tous être utilisé de sur plusieurs nœud (tout l’interêt du NoSQL est d’utiliser plusieurs serveur au lieu d’un unique) Lili se chargeant de l’orchestration.
Le principe de Lili est de fournir un ensemble de composant pour résoudre toutes les problématiques d’accès a des données de type BigData :
- Un DataStore
- Un système d’entrepôt de donnée (DWH)
- Une partie Analitics
Ceci via un ensemble de briques OpenSource mise bout à bout et communiquant ensemble via ZooKeeper :
- HBase : base de données NoSQL basée sur Hadoop (Utilisation de la distribution Cloudera de HBase)
- MapReduce : calcul distribué sur les données NoSQL
- Solr : indexage et requêtage des données NoSQL
Grâce à ça, Lili permet le stockage, l’indexation et la recherche des données en NoSQL de manière scalable et en temps réel!
Quelques explications sur les principales briques utilisés :
- Hadoop : disque virtuel distribué, fiable et tolérant aux panes : l’Hadoop Distributed File System (HDFS)
- MapReduce : calculs distribués sur plusieurs serveurs des données stocké dans l’HDFS. Tolérant aux panes (si un noeud tombe, le calculs est repris par un autre). Le calcul est localisé sur le serveur contenant la donnée. Attention MapReduce n’est pas interactif, le calcul est de type batch.
- HBase : BDD NoSQL interactive au dessus de l’HDFS. On peut simplifier en la présentant en tant que RAM au dessus du Disque Dur qu’est Hadoop.
Lili intègre tout ça et offre par là un système complet et simple d’utilisation :
- DataModel : les données NoSQL de HBase ne sont que des tableaux de byte, Lili intègre un système de modèle de données haut-niveau typé et permettant de réaliser des liens entre les données (relation sans contrainte, la validité des liens n’étant pas vérifié automatiquement par la BDD)
- Version : les objets dans Lili peuvent être versionné (avec différente stratégie au niveau du stockage ou non des différentes versions des objets)
- API : deux API existent, une Java : AVRO et une via REST
- Indexation : via Solr, un projet lui-même basé sur Apache. Les index doivent être configuré manuellement puis ils sont créé à chaud et mis à jour à chaud à chaque insertion/suppression/mise à jour des données. On peut utiliser plusieurs indexes de manière concurrentiel. Les index sont partitionné automatiquement sur les différents nœuds.
- Recherche : via Solr
- Consistence
- Pas de Master : les nœud se découvrent automatiquement, l’accès à un nœud par l’API Java fait découvrir les autres à l’API.
Une démo fort intéressante a terminé la présentation, la distribution de Lili contient des scripts permettant de lancer toutes les briques nécessaires sur une machine de développement et plein d’exemple simple pour commencer à l’utiliser.
Maintenant, il ne vous reste plus qu’à télécharger la distribution et à vous amuser avec 😉