Tout comprendre sur les bases de données NoSQL

Data & Co

comprendre-le-no-sql

Les bases de données NoSQL (littéralement Not Only SQL) sont des systèmes de gestion de données non relationnels, qui ne nécessitent pas de schéma fixe. Plus faciles à scaler, elles sont particulièrement utilisées pour faciliter le stockage de grosses quantités de données. Logiquement, on les retrouve donc dans les projets de Big Data et le développement d’applications Web en temps réel (comme Twitter, Facebook ou encore Google). Plutôt que d’utiliser uniquement la syntaxe SQL pour stocker et extraire des données, chaque type de base de données NoSQL englobe un large éventail technologique.  

C’est d’ailleurs ce dernier qui leur permet de prendre en charge des données qui peuvent être structurées ou non, voire polymorphes. Pour mieux comprendre leurs avantages et différents cas d’usage, nous vous proposons de plonger dans les 4 types de base de données NoSQL les plus couramment utilisés.  

Pourquoi utiliser un type précis de base de données NoSQL ?  

L’objectif des bases de données NoSQL

L’objectif derrière chaque type de base de données NoSQL est de faciliter le stockage et le traitement de volumes massifs de données. Un enjeu de taille lorsque l’on sait que des géants comme Google, Facebook ou Amazon collectent quotidiennement plusieurs téraoctets de données utilisateur ! 

 

Pour résoudre les problèmes engendrés par le Big Data, ils pourraient se contenter d’augmenter la capacité de leur système, en mettant à niveau leur matériel existant. Mais le hic, c’est que cette méthode est très coûteuse ! L’alternative consiste donc à répartir la charge pesant sur chaque base de données sur plusieurs hôtes, et ce chaque fois que la charge augmente. C’est ce que l’on appelle la mise à échelle.  

 

Caractéristiques des bases de données NoSQL

Les bases de données NoSQL sont par nature non relationnelles. Elles sont donc plus évolutives que les bases de données relationnelles, car spécifiquement conçues pour les applications Web. 

Les deux caractéristiques distinctives de tout type de base de donnée NoSQL sont :  

  • Leur caractère non-relationnel : les bases de données NoSQL ne suivent jamais le modèle relationnel. Ce qui leur permet notamment de travailler avec des agrégats de données autonomes (ou des BLOB). Ainsi, elles ne nécessitent ni mappage, ni normalisation des données ; 
  • Le “sans schéma” : les bases de données NoSQL sont “sans schéma” (ou ont des schémas assouplis). Elles permettent ainsi d’obtenir des structures de données hétérogènes dans le même domaine. 

 

Il existe quatre types principaux de bases de données NoSQL. Elles peuvent être :  

  • Orientées document (Document database) ; 
  • Paire clé-valeur (Key-value stores) ; 
  • Orientées colonnes (Column-oriented databases) ; 
  • Orientées graph (Graph databases). 

 

Voyons quelles sont les spécificités de chacune, leurs avantages et inconvénients ainsi que leurs principaux cas d’usage que vous pouvez vous approprier ! 

 

Le type de base de données NoSQL orienté document (Document database)  

Ce type de base de données NoSQL orientée document stocke, comme son nom l’indique, les données dans des documents JSON, BSON ou XML. Les documents peuvent être imbriqués, et des éléments particuliers indexés pour une interrogation plus rapide. 

Les documents peuvent être stockés et récupérés sous une forme beaucoup plus proche des objets de données utilisés dans les applications. Cela signifie que ce type de base nécessite un travail de traduction moindre! 

Les bases de données orientées document sont populaires auprès des développeurs, car elles offrent la possibilité de retravailler leur structure selon les besoins. Elles sont donc plus modulables et permettent de développer des applications évolutives, mieux à même de s’adapter aux besoins de leurs utilisateurs. Cette flexibilité accélère le développement car, de fait, les données deviennent du code.   

Les avantages de ce type de base sont les suivants : 

  • Le modèle est à la fois simple et puissant ;  
  • Elle est plus évolutive ; 
  • Elle offre des formats ouverts.  

 

Quant aux inconvénients, il ne faut pas oublier que :  

  • Cette base ne convient pas aux données relationnelles, autrement dit il n’est pas possible de lier des données ensemble. 
  • Les interrogations sont limitées aux clés et aux index.

 

Principaux cas d’utilisation 

Les principales bases de données orientées document sont MongoDB, CouchDB, Lotus Notes. Leur usage principal se concentre sur les actions suivantes : 

  • La gestion des profils d’utilisateurs : leur caractère flexible permet aux utilisateurs de stocker différents types d’informations ; 

 

  • La gestion du contenu : la collecte et le stockage de toutes les données sont facilités par ce type de base de donnée NoSQL. Elle permet donc la création de nouveaux types de contenus, notamment des images, des vidéos, des commentaires, etc. On les utilise ainsi souvent pour les plateformes de blog.  

 

Les bases de données de type paire clé/valeur (Key-value stores) 

C’est le type de base de données NoSQL le plus simple. Chaque élément de donnée est stocké sous la forme d’une paire clé-valeur composée d’un nom d’attribut (ou « clé ») et d’une valeur.  

En un sens, une base clé-valeur fonctionne peu ou prou comme une base de données relationnelle. Ceci dit, la principale différence est qu’elle n’a que deux colonnes : la clé ou le nom de l’attribut (par exemple, le pays) et la valeur (par exemple, la France). 

Les avantages d’une base de type key-value stores sont les suivants : 

  • Sa simplicité ; 
  • Son caractère évolutif ;  
  • Sa prise en charge de plusieurs types de valeurs (JSON, XML, schémas flexibles) ; 
  • La capacité qu’elle a d’accélérer le développement ;  
  • Son aspect idéal pour les bases au sein desquelles les données n’ont pas vraiment de liens entre elles.  

 

En revanche, cette base peut aussi s’avérer contraignante : 

  • Vous devrez créer vos propres clés étrangères ; 
  • Elle n’est pas vraiment adaptée aux données complexes ni aux opérations autres que CRUD (Create, Read, Update Delete) ;  
  • Elle présente un manque de capacités de numérisation. 

     

    Principaux cas d’utilisation 

    Les paires clé/valeur les plus populaires sont : Dynamo DB, Redis, BerkleyDB. 

     Elles permettent notamment de gérer efficacement les éléments suivants : 

    • Le stockage des informations de session, afin de sauvegarder et de restaurer des sessions d’utilisateur ;  

     

    • Les préférences utilisateur, pour stocker les données spécifiques à un utilisateur particulier ;  

     

    • Les paniers e-commerce et recommandations de produits. Ce type de base de donnée NoSQL permet de gérer facilement la perte de nœuds de stockage et fait évoluer rapidement le Big Data lors d’une vente en ligne. Il peut également proposer des recommandations produit basées sur les données comportementales d’un internaute.

      Les bases de données orientées colonnes (Column-oriented databases)  

      A l’inverse des bases de données relationnelles, qui stockent et lient les données en ligne, une base de données orientée colonnes est organisée en…Un ensemble de colonnes ! 

      Cela signifie que lorsque vous souhaitez exécuter des analyses sur un petit nombre de colonnes, vous pouvez lire ces colonnes directement. Ce qui vous permet d’éviter de consommer trop de mémoire en traitant des données non pertinentes.    

      Les colonnes regroupent généralement des données similaires et bénéficient d’une compression plus efficace. C’est ce qui rend leur lecture encore plus rapide.   

      Ce type de base de donnée NoSQL permet donc d’agréger plus facilement la valeur d’une colonne donnée et est particulièrement plébiscitée pour l’analyse de données. Un bon point qui se fait malheureusement au détriment de la cohérence. L’écriture de toutes les colonnes nécessite en effet plusieurs évènements sur le même disque.  

       

      Les avantages des bases de données orientées colonnes sont intéressants :  

      • Elles permettent de prendre en charge des données semi-structurées ;  
      • Les données sont naturellement indexées ; 
      • Ce modèle de base est évolutif. 

       

         En revanche, ce type de base ne convient pas aux données relationnelles. 

        Principaux cas d’utilisation  

        Les bases de données orientées colonnes les plus utilisées sont Google Bigtable, Cassandra, HBase.  

        En ce qui concerne les principaux cas d’utilisation, les bases orientées colonnes sont généralement utilisées pour :

        • Le suivi de colis, ou tout événement dont le statut est amené à changer régulièrement ; 

         

        • La récupération et l’analyse de données en temps réel. Et notamment les données issues de capteurs ou utilisées pour l’Internet des Objets. 

          Les bases de données orientées graph (Graph databases) 

          Une base de données orientée graph se concentre sur la relation entre les éléments de données. Chaque élément est stocké sous forme de nœud et les connexions entre ces derniers sont appelées liens ou relations.   

          Dans ce type de base NoSQL, les connexions sont des éléments de première classe, stockées directement. Alors que dans les bases de données relationnelles, ces liens sont implicites, et utilisent des données pour exprimer les relations.  

          Une base de données orientée graph est optimisée pour capturer et rechercher les connexions entre les éléments de données. Elle permet donc d’éviter la surcharge associée à la jointures de plusieurs tables dans une database SQL. Par contre, très peu de systèmes peuvent survivre uniquement sur des requêtes graphiques. Elles sont donc généralement exécutées en parallèle d’autres databases plus traditionnelles. 

          Pour ce qui est de leurs avantages, on peut citer : 

          • La puissance et l’agilité ;  
          • Les données connectées sont indexées localement ; 
          • Leur capacité à fournir de l’ACID (Atomicité, Cohérence, Isolation, Durabilité) ;  
          • Des résultats en temps réel. 

          En revanche, les bases de données orientées graph sont souvent difficiles à mettre à l’échelle (même si elles peuvent évoluer).  

           

          Principaux cas d’utilisation  

          Les principales bases de données orientées graph sont : Neo4j, OrientDB, Allegrograph. 

          On retrouve les bases orientées graph dans les usages suivants : 

          • Les réseaux sociaux : par exemple, pour représenter les relations entre abonnés sur Twitter ou Instagram ;  

           

          • Les moteurs de recommandation ciblés de produits ou de connexions de type “amis” ; 

           

          • Les bases de données logistique, pour suivre tous les processus, de la conception à la vente ; 

           

          • L’évaluation des risques : notamment la détection des fraudes et la recherche de pannes. 

           

           

            Les bases de données NoSQL offrent une alternative au Système de Gestion des données relationnelles. Le meilleur moyen de déterminer quel type utiliser est donc de vous interroger sur les exigences qui ne sont pas satisfaites par votre système actuel. Dans le cas contraire (si ce dernier répond bien aux besoins de votre entreprise et projet digital), mieux vaut peut-être vous en tenir là ! 

            Nous vous recommandons néanmoins de faire le grand saut si vos données changent régulièrement et ne sont pas structurées. Les bases de données NoSQL seront également plus adaptées si votre volume de données est amené à augmenter en continu. Et donc que le scaling de votre base de données actuelle est nécessaire pour les prendre en charge !  

             

            Pour approfondir le sujet

            Connect

            Pour recevoir nos derniers articles sur la Data et l'Intelligence Artificielle, abonnez vous à Connect, l’email qui fait du bien à vos données.

            Le Pont Learning