✨ Demoday ✨ Découvrez les projets finaux de nos apprenants !
✨ Demoday ✨ Découvrez les projets finaux de nos apprenants !
✨ Demoday ✨ Découvrez les projets finaux de nos apprenants !
Je m'inscris

NoSQL : pourquoi utiliser une base de données non-relationnelle ?

Le NoSQL est une des bases de données les plus utilisées dans le Big Data. Sa simplicité et sa flexibilité en font un outil puissant pour les Data Analysts.

Mis à jour le
15/5/2024

NoSQL est un système de base de données qui est dit "non relationnel". L’appellation "NoSQL" est une abréviation de "Not Only SQL". Il s’agit d’une base de données non-structurée, c'est-à-dire qu'elle ne suit pas de schéma de construction fixe. Aujourd’hui les bases NoSQL sont majoritairement utilisées par les applications web qui gèrent de grandes quantités de données en temps réel (Big Data).

Histoire de NoSQL

L’histoire du NoSQL commence en 1998. Carlo Strozzi est le premier à utiliser le terme (qu’il prononce d’ailleurs “nosequeel”). Cette appellation fait référence à un système alternatif aux bases de données relationnelles.

NoSQL est un système de base de données non relationnelles. Cette solution légère et open-source permet d’organiser les données plus librement, sans forcément respecter la structure contraignante des bases de données relationnelles. Grâce à la communauté d’utilisateurs du système, NoSQL a évolué vers un accès et une utilisation simplifiés.

Cette idée est restée en suspens jusqu’à ce que des poids lourds comme Google ou Facebook se mettent à engranger de grandes quantités de données. Afin de résoudre leur problème, les GAFAM se sont penchés sur les travaux de Carlo Strozzi et se sont mis à développer des bases de données NoSQL. 

A partir de là, les innovations s'enchaînent :

  • En 2005, Google lance la base de données Google Bigtable,
  • En 2007 Amazon lance Amazone Dynamo,
  • En 2008 Facebook rend open-source Cassandra.

Le modèle développé par Facebook devient un must-have chez les adeptes de base de données non relationnelles. Son apprentissage et son développement faciles sont des atouts pour les nouveaux adeptes.

Aujourd’hui des bases de données indépendantes comme MongoDB se sont développées pour permettre un paramètre large de choix pour les Data Analysts.

Quand et pourquoi utiliser une base de données NoSQL ?

Les limites des SBDR à l’ère du Big data

Contrairement au NoSQL, le SQL suit un schéma fixe :

  • Tables : Un tableau qui contient des colonnes.
  • Colonnes : Contiennent les informations majeures de la base de données.
  • Clés : Permettent de créer le schéma relationnel entre les différentes tables.

Ces bases de données sont massivement utilisées, cependant elles demandent beaucoup de ressources. Ce problè

me de ressource devient majeur lors d’emploi de base de données en Big Data.

Les compagnies comme Facebook gèrent plusieurs terabytes de données par jour. Si ces données étaient stockées en SGBDR alors Facebook devrait constamment grossir la taille des ses serveurs. Cela revient à augmenter le nombre de CPU (Processeurs), le nombre de RAM et de disques durs. On appelle cela le Scaling-Up (Développement Verticale en Français). Malheureusement, ce processus est coûteux et donne des bases de données lentes. 

Vertical scaling

Cependant, comme Facebook possède beaucoup de serveurs, la possibilité de stocker les BDD sur plusieurs serveurs est un avantage. Heureusement, les BDD NoSQL ont cette capacité car elles sont non structurées. On appelle ce processus le Scaling-Out (Développement horizontal).

Horizontal scaling

Le choix entre une base de données relationnelle et non-relationnelle est une décision extrêmement importante pour une entreprise de tech. Choisir entre NoSQL et SQL dépend beaucoup de la variété des données qui se trouve dans le dataset.

Les avantages de NoSQL

Les bases de données NoSQL apportent une grande série d'avantages

NoSQL est une base de données distribuée. Cela signifie que les données peuvent être stockées sur des serveurs différents en local ou en cloud. Cette caractéristique est un avantage majeur aujourd’hui. Effectivement, le cloud permet de mettre à disposition facilement et pour pas cher une grande quantité de serveurs.

La distribution permet aussi de répliquer les données sur plusieurs serveurs. Cela permet de réduire la latence et la charge de travail des data centers pour les utilisateurs. On parle de disponibilité de la donnée, ce qui donne au NoSQL une excellente performance.

Une plus grande flexibilité

De plus, NoSQL par sa nature propre est une base de données non structurée. C’est-à-dire qu’un utilisateur de NoSQL se verra à disposition d’une grande sélection de types de bases de données pour optimiser l’exploitation de ses données. 

Chaque type de base de données apporte des avantages d’utilisations qui rendent la vie des Data Analyst beaucoup plus simple ! (Clé/valeur pour les inventaires, Graphe pour les données à dominante relationnelle, Colonnes pour les données de type tables dynamiques etc… voir plus bas).

Cette capacité de NoSQL à s’adapter à tous les types de data lui donne une grande flexibilité. Pas besoin de structurer les données, de les ranger puis de les extraire pour les utiliser. Ici elles sont directement utilisables, ce qui permet d’avoir des développements agiles et rapides pour des applications web ou logiciels.

Cet avantage est non négligeable aujourd’hui. Les entreprises de la Tech mettent l’accent sur des cycles de développement rapide et itératif qui demandent des technologies agiles.

Une interface ergonomique

Finalement, les interfaces de support qui permettent d’utiliser les bases de données NoSQL sont lisibles et faciles d’utilisation. Cela s’oppose au SQL qui reste un langage de programmation de requête. Le NoSQL, lui, passe par une interface très ergonomique qui permet de travailler plus vite et de manière plus efficace pour les Data Analysts.

 {{banniere-article}}

Les inconvénients de NoSQL

Malgré ses nombreux avantages, NoSQL n’est pas non plus une technologie miracle. Son utilisation apporte aussi des inconvénients.

Pas de standardisation

L’inconvénient majeur des bases de données NoSQL est l’absence de règles de standardisation. En effet, les données sont dé-normalisées et traitent avec des enregistrements (Documents par exemple pour le type de données document) sur les serveurs contrairement au SQL qui marche par référencement

C’est un problème car beaucoup d’utilisateurs préfèrent des données normalisées. Celles-ci permettent d’éviter les anomalies et les duplications de données.

Par exemple, les transactions financières utilisent des règles de normalisations très strictes. Utiliser des données non normalisées peut engendrer un risque d’erreur dans les transactions (une anomalie) qui pourrait avoir un impact très grave pour les utilisateurs.

Un système limité

Ensuite, le NoSQL ne s’associe pas avec une utilisation complexe des requêtes. Il fonctionne très bien sur une table mais pour manipuler plusieurs tables, il est vite limité. En effet, le NoSQL ne peut pas faire de jointures complexes (qui sont nécessaires pour manipuler plusieurs tables). De plus, il ne peut pas imbriquer les requêtes WHERE comme le fait le SQL pour extraire des informations très spécifiques dans la database.

Prenons un exemple. Souvent les informations sont stockées dans des tables différentes

  • Une table “Employés” avec le nom et le prénom des salariés d’une entreprise.
  • Une autre “Coordonnées” qui contient leurs coordonnées. On ajoute une clé pour faire la relation avec “Employés”.

Pour extraire des informations sur les salariés en prenant en compte leurs coordonnées il faudra réaliser une jointure entre les deux tables. Si tu dois multiplier les jointures avec encore plus de tables, le NoSQL est dépassé. Pour en savoir plus, consulte notre page dédiée aux différences entre SQL et NoSQL.

Finalement, même si le NoSQL apporte beaucoup d’avantages, le SQL reste l’outil aujourd’hui le plus abouti pour les Data Analysts. C’est pour cela que Databird forme les Analystes à l’utilisation des bases de données relationnelles. Toi aussi deviens un membre de la grande famille des Databirdies !



Les différents types de bases de données non relationnelles

Les bases de données non relationnelles NoSQL ne suivent pas de schéma fixe comme le SQL mais possèdent différents types de technologies qui ont chacune un domaine d’application spécifique.

Il existe quatre types de bases de données NoSQL :

  1. Bases de données orientées Clé-valeur
  2. Bases de données orientées Colonnes
  3. Bases de  données Graph-Based
  4. Bases de données orientées Document
Types de base de données NoSQL

Bases de données orientées clé/valeur(s)

L’idée derrière cette base de données est de stocker la donnée sous forme d’un couple clé/valeur(s).

  •  La clé représente une information numérique ou écrite sur la donnée.
  •  La valeur est la donnée en elle-même. 

Pour faire plus simple, on labellise la donnée (la valeur) avec une clé.

Par exemple, prenons une grosse base de données Big Data : l’ensemble des posts Twitter postés en une journée.

Cette BDD contient donc énormément de textes et d’informations sur les profils de ceux qui ont posté les textes. Ces textes forment un gros bloc de données. Ce qu’on veut c’est découper ce bloc en plein de petits textes qui seront stockés sur des serveurs. 

Cependant, il est important de labelliser ces petits blocs pour pouvoir les ré-agencer correctement. On veut éviter de perdre des mots au milieu d’une phrase par exemple ou de perdre un post. Chaque morceau contient donc une valeur et est labélisé par une clé. La fonction qui découpe le bloc est appelée fonction de hachage (ou hash-function) car elle hache les données.

Voici un exemple de clé/valeur ci-dessous :

Clé Numéro de Série Valeur
39BM-5644-4NM 1001111001100100

Ensuite, quand on veut récupérer une valeur il suffit de récupérer sa clé. NoSQL s’occupe de la trouver dans la BDD et de fournir à l’utilisateur.

Cette base de données a pour avantage de pouvoir stocker un grand nombre de données en Cloud dans plusieurs serveurs différents car celle-ci est légère et facile à récupérer grâce à sa clé. Cela rend l’utilisation de la base de données extrêmement flexible et rapide

La base clé-valeur(s) s’utilise quand vous pouvez vous permettre de gérer des données facilement séparables par une fonction de hachage comme ci-dessus.

Bases de données orientées colonnes

Ce type de base donnée ressemble aux bases de données relationnelles mais s’adapte mieux que celle-ci aux manipulations et aux ajouts.

Premièrement, un problème existe dans les bases de données relationnelles : dans chaque table le nombre de colonnes est fixé pour toutes les lignes (la table est un rectangle). Si une ligne ne possède pas de valeur dans une colonne alors on stocke la valeur NULL. En NoSQL, les colonnes sont dynamiques, chaque ligne peut avoir un nombre différent de colonnes sans pour autant qu’apparaisse la valeur NULL.

Ensuite, toutes les colonnes d’une table (en NoSQL on parle de famille de colonnes) sont stockées dans le même fichier, avec un nombre fixe de lignes. Cela permet de ne pas télécharger l’intégralité de la table à chaque fois que l’on veut appeler une ligne de cette table;  on appelle les quelques colonnes qui concernent une ligne. 

Effectivement, quand on fait du SQL pour faire des requêtes on a besoin de l’intégralité de la Table. Même pour appeler une seule ligne. Alors qu’en NoSQL on a juste besoin de faire une requête sur une ligne et celle-ci sera directement extraite dans le Cloud. Cela permet un gain de performance très conséquent !

Par exemple voici deux familles de colonnes (Tables) ; une qui contient les identités des employés d’une entreprise et l’autre leurs coordonnées personnelles :

Nosql colonne

Tu remarqueras ici que certaines personnes ont juste leur nom et prénom. Tandis que d’autres ont aussi un suffixe. Si cette table avait été relationnelle alors il aurait fallu mettre NULL au suffixe de Mick Jameson. Idem pour l'adresse de Jack Michael. Les colonnes sont dynamiques ! Pour le reste, l’utilisation de la clé est la même que pour le SQL.

L’avantage est de pouvoir gérer des données qui sont proches des tables de bases relationnelles sans avoir à subir les lourdeurs de celles-ci. Ces bases de données s’utilisent bien quand tu dois manipuler des données avec des clés et des colonnes.

Database Graph-Based

La base de données orientée Graphe est une base de données composée de nœuds et de bords

  • Les nœuds représentent la valeur de la donnée 
  • Les bords représentent les relations qu’entretiennent les nœuds les uns par rapport aux autres. 

Les bords peuvent avoir un direction comme sur l’exemple ci-dessous. Ce type de données permet d’effectuer une analyse rapide des relations qu’entretiennent les données.

L’exemple le plus célèbre est celui des réseaux sociaux : dans ce type de base les profils sont des nœuds et les amitiés sont des bords. Un appel sur un profil permet directement d’identifier les cercles de connaissance d’une personne.

Mais prenons un exemple un peu moins conventionnel mais plus applicable dans une entreprise. Disons que nous disposons d’une liste d’employés et de services au sein de l’entreprise. De plus, nous savons dans quel service travaillent les employés. Et enfin, avec quels services ils interagissent. Nous pouvons créer un graphe à partir de ces informations.

Ici, les nœuds peuvent être soit des services dans l’entreprise, soit des employés. Il existe deux types de bords : « Travaille dans » et « A des relations avec ». On remarquera qu’ici les bords sont orientés entre les employés et les services :

Nosql graph based

Un graphe est beaucoup plus clair qu’une liste de noms non ? La force principale de ce système est sa lisibilité. Il en est de même pour les ordinateurs. Ils auront plus de facilité à comprendre les informations de la database et leurs relations.

Ce système de BDD a l'avantage d'être compatible avec les algorithmes de parcours de graphe. Ces algorithmes permettent d'explorer les données de manière extrêmement efficace, c'est pourquoi ce système est particulièrement adapté aux besoins des réseaux sociaux (entre autres).

Si ta database peut se construire sous la forme d’un graphe comme pour des profils de réseaux sociaux alors l’application de cette base de données est parfaite !

Bases de données orientées document

L’idée est ici de stocker les données en clé/valeur(s) mais la valeur est un document qui contient toutes les informations de la data. En général, la valeur est un document JSON qui est très utilisé par les Data Analysts mais elle peut aussi être un document XML, YAML, BSON ou même TXT.

Cela revient à digitaliser une bibliothèque de dossiers.

Prenons un exemple: disons que le manager d’un magasin de produits informatiques doit gérer son stock de produits. Sans informatique, il aurait toute une pile de documents concernant ces produits dans son bureau, une bibliothèque de dossiers.

Documents classés

Dans cette image de la bibliothèque, chaque dossier contient les informations d’un produit. La clé est inscrite sur le devant du dossier. La clé peut être le numéro de série du produit. L’intérieur du dossier est une série de feuilles qui contiennent toutes les infos de chaque produit : Prix, Nom, Couleur, Types, etc …

Ce que fait la BDD, c’est exactement la même chose mais de manière digitalisée sur des serveurs en Cloud. Un exemple de clé/document est donné ci-dessous.

Clé Numéro de Série Valeur
39BM-5644-4NM {Nom :"Asus Zenbook", Prix : 1200.00, Couleur : Gris métal, Type : PC

L’avantage est le même que pour la base clé/valeur(s) ; avec ce type de base de données on peut stocker une grande quantité de données sur plusieurs serveurs différents et venir les récupérer au travers de requêtes qui appelleront les clés de chaque document. On utilise ce type de base de données quand on peut stocker les données sous formes de documents qui regroupent toutes les informations la concernant comme dans l’exemple ci-dessus.

Qu’est-ce qu’un système de base de données NoSQL ?

Depuis le début de l’article nous parlons de la base de données NoSQL. Cependant, cette BDD est une théorie d’utilisation et quand on veut passer à la pratique, on doit utiliser un système de base de données NoSQL.

Ce système est un logiciel qui nous permet d'employer les BDD. Tu peux voir ça comme une interface homme-machine. Quand un ouvrier veut utiliser une machine, il ne va pas directement la manipuler. Il va utiliser une interface ou un PC pour l’amorcer.

Il existe une grande série de systèmes de base de données. C’est comme faire le choix entre un PC, un MAC ou un LINUX. On choisit son système en fonction de ses besoins et de ses préférences d’utilisation. Cependant, il existe un certain consensus parmi les Data Analysts concernant les meilleurs systèmes. Être capable d’apprivoiser les meilleurs systèmes est un avantage non négligeable.

Effectivement, lors d’un entretien d'embauche, si tu montres que tu connais le système utilisé par la boite alors c’est bouclé !

Voici  les systèmes de base de données NoSQL les plus utilisés :

  • MongoDB : Il s’agit d’une database NoSQL open source orientée document. MongoDB utilise des documents de type JSON pour stocker toutes les données.
  • Cassandra : Il a été développé sur Facebook pour la recherche dans les boîtes de réception. Cassandra est un système de stockage de données distribué pour le traitement de très grandes quantités de données structurées de type Big Data.
  • Redis : Redis est la plus célèbre base clé-valeur.
  • Oracle NoSQL Database Cloud Service : ce système permet de gérer les modèles de base de données clé-valeurs, colonnes et documents
Faites un premier pas dans la data avec nos cours gratuits
Démarrer
Difficulté :