Bases NoSQL : laquelle choisir pour quels besoins ?

Bases NoSQL : laquelle choisir pour quels besoins ? Cassandra, MongoDB, Couchbase ou Elasticsearch diffèrent par leur approche et leurs technologies. Certaines de ces bases privilégient la volumétrie, d'autres la vitesse d'exécution. Explications.

Né au milieu des années 2000, le mouvement NoSQL connaît un succès qui ne va que croissant. Popularisés par les GAFA – Facebook est à l'origine de Cassandra puis de HBase, les serveurs de données NoSQL se caractérisent par des architectures distribuées. A la différence des bases dites relationnelles (ou SGBDR), elles peuvent ainsi mieux répondre aux problématiques du big data.

Avant de se lancer tête baissée dans le déploiement d'un serveur NoSQL, une entreprise devra se poser plusieurs questions. Qu'est-ce qui est recherché en premier ? La vitesse ? La volumétrie ? La recherche multicritères ? En fonction des réponses, elle s'orientera vers l'une ou l'autre des grandes familles de base NoSQL.

Comparatif des bases de données NoSQL

Bases

Année de lancement

Schéma de données

Editeur / prestataire de support

Positionnement

Cassandra 2008 Orienté colonnes DataSax (ex Riptano) Adoptée par les géants du web et les start-up, Cassandra permet de gérer de gros volumes de données.
Couchbase 2010 Orienté documents Couchbase A la différence de MongoDB, Couchbase dispose d'un outil de requêtage normalisé SQL qui facilite sa prise en mains par des développeurs rompus aux bases SQL.
Elasticsearch 2004 Index inversé Elasticsearch Connu avant tout pour son moteur de recherche distribué, Elasticsearch tire sa force de l'indexation et de l'analyse des données.
HBase 2006 Orienté colonnes Hortonworks Souvent comparé à Cassandra, HBase joue la carte de la très forte volumétrie. Un produit complexe qui exige un gros travail de structuration.
MongoDB 2007 Orienté documents MongoDB Base NoSQL la plus populaire, MongoDB est saluée pour la souplesse de sa structure et sa capacité à répondre à un grand nombre de besoins.
Redis 2009 Clé-valeur Redis Labs Base de données en mémoire, Redis privilégie la vitesse d'exécution. En contrepartie, ses capacités de requêtage sont limitées.
Riak 2009  Clé-valeur Basho Technologies Riak se présente comme une sorte de Redis évolué en étendant les capacités de requêtage via des index secondaires.

Un prérequis : comprendre les 4 types de schéma de données

  • La base orientée clé-valeur. "Sur le principe d'un dictionnaire dont la porte d'entrée est le mot, les bases orientées clé-valeur vont accéder à une valeur de données unique", explique Rudi Bruchez, consultant indépendant. "Cela peut-être un compte-client pour valider un panier sur un site d'e-commerce." En plaçant ces données en mémoire, ces bases sont recherchées pour leur vitesse d'exécution. En revanche, elles ne permettent pas de faire des requêtes multicritères sophistiquées.
  • La base orientée documents. Evolution des bases clé-valeur, les moteurs orientés documents n'associent plus une clé à une valeur mais à un document dont la structure reste libre. Pour cela, ils s'appuient sur le très populaire format d'échange de données Json (JavaScript Object Notation). Les bases orientés documents sont souvent saluées pour la souplesse de leur structure.
  • La base orientée colonnes. Contrairement aux moteurs orientés documents à la structure libre, les bases en colonnes stockent les données par colonnes. Cette structure permet en outre d'ajouter plus facilement une colonne à une table. Ces bases sont plébiscitées pour leur capacité à monter en charge et à accueillir une forte volumétrie de données.
  • L'index inversé. Popularisé par le moteur de recherche de Google, les index inversés sont représentés dans ce comparatif par ElasticSearch. Basé sur la bibliothèque d'indexation open source Lucene et le format Json, ElasticSearch permet de structurer les données à la manière d'une base orientée documents tout en profitant d'excellentes capacités de requêtage.

Au-delà de ces quatre familles de technologie, d'autres critères de choix rentrent en ligne de compte. Si toutes les solutions retenues pour notre comparatif sont open source, des éditeurs proposent à côté de la version communautaire, une offre propriétaire et payante aux fonctions étendues. Elle s'accompagne le plus souvent de services complémentaires : support, administration, supervision, sauvegarde… Pour Christophe Parageaud, architecte big data chez Ippon Technologies, "le recours à ces solutions payantes peut être déterminant dans la phase de conduite de changement". HBase exige de gros efforts à fournir pour structurer les données, puis lors du dimensionnement des grappes de serveurs. Les bases NoSQL sont, par ailleurs, connues pour enchaîner les versions à un rythme soutenu. Un versioning qui peut être difficile à encaisser sans accompagnement. A défaut de passer par l'option payante, une entreprise doit pouvoir s'appuyer sur les groupes de discussions d'une communauté dynamique. Pour vous faire une idée du nombre d'utilisateurs de chaque technologie, DB-Engines publie tous les mois un classement des bases de données selon leur popularité.

Cassandra pour les acteurs du web

Initialement développée par Facebook (qui l'a publiée en open source en 2008), Apache Cassandra fait figure de star dans le monde web. Cette base NoSQL orientée colonnes a été adoptée par Apple, Netflix ou Spotify. "Cassandra peut gérer de grands volumes de données et privilégie les performances notamment en lecture. Elle nécessite toutefois un réel travail de normalisation", estime Rudi Bruchez. Au-delà des géants du web, Cassandra peut, selon lui, convenir aux jeunes pousses en raison de ses capacités de dimensionnement. "Les start-up n'ont pas de visibilité sur le succès que rencontrera ou non leur application et donc sur la taille de leur base de données", pointe l'expert.

Couchbase, un outil de requêtage "SQL like"

Lancée en 2010 par des anciens du projet d'infrastructure distribuée Memcached, Couchbase se caractérise par une architecture type maître-maître. Cette base orientée documents privilégie la cohérence des données aux performances pures. Couchbase dispose d'un outil de requêtage normalisé SQL baptisé N1QL (qui se prononce Nickel). Ce qui peut faciliter sa prise en mains par des développeurs rompus aux bases SQL. Avec une solution de cache intégrée, Couchbase vise les applications web. C'est la seule solution NoSQL de notre comparatif à proposer une offre pour mobiles (Couchbase Lite).

Elasticsearch, la force du moteur de recherche

Elasticsearch est avant tout connu pour son moteur de recherche distribué. Il utilise la bibliothèque d'indexation open source Lucene tout comme Apache Solr à qui il est souvent comparé. Cet outil permet de stocker et analyser des données, structurées ou non, comme des textes libres ou des logs systèmes. Projet open source développé en Java sous licence Apache, Elasticsearch est associé à deux autres produits open source : le visualiseur de données Kibana et l'outil d'extraction, de transformation et de chargement de données (ETL) Logstash.

HBase, pour les très gros volumes

Autre rejeton de la famille Apache, HBase est souvent opposé à Cassandra. Il s'agit là encore d'une base orientée colonnes. Basée sur une architecture maître-esclave et s'inspirant de BigTable de Google, elle peut gérer d'énormes quantités de données, plus encore que Cassandra. Pour Christophe Parageaud, HBase est une base un peu à part car intimement liée à Hadoop dont elle est un sous-projet. Elle s'installe d'ailleurs sur son système de fichiers distribué HDFS. "Destinée aux fortes volumétries, HBase privilégie d'avantage les possibilités de requêtage à la cohérence des données", ajoute Christophe Parageaud. Produit complexe, HBase exige un gros travail de structuration.

MongoDB, la plus populaire

Développée depuis 2007 par la société du même nom, MongoDB est la base NoSQL la plus populaire selon le palmarès de DB-Engines. Basé sur une architecture de type maître-esclave, ce moteur orienté documents est reconnu  pour la souplesse de sa structure. "Pas besoin de préstructurer les données, il suffit de créer des collections d'y mettre des éléments Json sans avoir besoin de dire comment les organiser", observe Rudi Bruchez. Pour Christophe Parageaud, "MongoDB est une base générique qui répond à 80% des besoins couverts par une base relationnelle traditionnelle, à l'exception du transactionnel."

Redis, pour la vitesse

Sorte de Memcached en plus évolué, Redis est une base de données en mémoire, reposant sur le principe de clé-valeur. En rendant les données facilement accessibles, elle privilégie la vitesse d'exécution. Revers de la médaille, cette base n'est pas taillée pour les gros volumes et ses capacités de requêtage sont limitées. Elle ne gère pas la recherche multicritères. Redis se destine aux applications nécessitant une haute disponibilité et une faible latence, notamment dans l'e-commerce. Distribué sous licence BSD et écrit en code C, c'est le seul moteur de cette sélection à gérer le transactionnel. Lancé en 2009, le projet est sponsorisé par VMware.

Riak, pour la tolérance aux pannes

Distribué sous licence Apache et inspiré de Dynamo, Riak est un système de gestion de base de données orienté clé-valeur. Sorte de version évoluée de Redis, il développe les capacités de requêtage en offrant la possibilité, via des index secondaires, d'aller requêter dans la valeur. Basho Technologies, l'éditeur qui développe Riak, fait de la tolérance aux pannes et de la haute disponibilité ses chevaux de bataille. Il propose des solutions taillées spécifiquement pour le stockage dans le cloud (Riak CS) et pour l'internet des objets avec la prise en compte des time series (Riak TS).

A lire aussi : 

"Big Data ou l'analyse de données en masse - JDN"