Par Maxime Jumelle
CTO & Co-Founder
Publié le 18 mars 2022
Catégorie Data Engineering
Le NoSQL est une famille de bases de données qui ont la particularité de prendre en charge un modèle de données non relationnelles. À l'opposé des bases de données traditionnelles dites SQL, les bases NoSQL ont fait leur apparition avec le Big Data, dès lors qu'il fallait pour stocker, historiser et requêter sur des volumétries très importantes. Au sein de cette famille, on retrouve plusieurs modèles qui répondent à des besoins différents.
Dans cet article, nous allons détailler le fonctionnement de chaque modèle de la famille NoSQL, présenter quelques exemples d'outils/services populaires, et expliquer leurs avantages.
NoSQL (pour Not Only SQL) est un terme qui fut inventé au tout début des années 2000. À cette époque, la très grande majorité des bases de données étaient de type SQL, c'est-à-dire avec des modèles de données relationnelles, organisées sous forme de tables. Ce modèle relationnel a été très étudié et très utilisé au sein des entreprises.
Mais avec l'avènement du Big Data, ces bases de données ont commencé à présenter des lacunes.
C'est alors que de nouvelles bases de données ont vu le jour pour pallier les faiblesses du SQL. On peut citer notamment HBase de la fondation Apache, sortie en 2006, ou de Neo4j, la base graphe sortie en 2000. À la suite, de nombreuses entreprises ont développé leurs propres bases de données comme DynamoDB pour Amazon, CosmosDB pour Microsoft ou encore BigTable pour Google : la mouvance NoSQL est née.
À lire aussi : découvrez notre formation Data Engineer
Comme évoqué, la principale différence avec le modèle SQL vient dans l'absence d'un modèle relationnelle, ce qui signifie que les données ne sont plus matérialisées et représentées par des tables. Cette absence (ou flexibilité, en fonction des modèles) de schéma de données permet de faire évoluer l'architecture de la base de données avec le temps, ce qui est beaucoup plus difficile dans un contexte SQL.
Les bases de données NoSQL sont également pensées pour la mise à l'échelle. Elles ont la possibilité d'être distribuées, ce qui permet à la fois de supporter de grandes charges de travail (milliers de lectures/écritures par seconde) tout en assurant une haute disponibilité, grâce aux mécanismes de réplication de données.
En contrepartie, chaque outil utilise son propre langage de requête : là où la plupart des bases de types SQL supportent à 90% le langage SQL, avec le NoSQL, chaque base de données dispose de son propre langage de requête. Il est donc plus difficile de changer de base de données NoSQL, car cela revient à repenser son architecture et modifier l'utilisation du langage de requêtes.
Parmi les bases dites NoSQL, nous retrouvons plusieurs modèles de bases de données.
Le choix du modèle de base NoSQL dépend principalement des besoins et du cas d’usage. Si l’on doit souvent manipuler des données temporelles, on se dirigera vers une base adaptée pour les séries temporelles. À l’inverse, les bases orientées colonnes peuvent être intéressants dans les situations où l’on doit gérer des articles ECommerce par exemple.
Les bases orientées colonnes peuvent être vues comme une extension des tables relationnelles. On y retrouve le principe des tables et des colonnes.
La principale différence avec le modèle relationnel est que les colonnes (schéma des tables) ne sont pas identiques à chaque ligne. Elles utilisent souvent des clés (clés primaires et clés de tri) pour requêter efficacement dessus.
Cela va optimiser l’espace de stockage car l’historisation peut être effectuée sur une seule ligne. L'autre particularité vient aussi des valeurs possibles : dans une colonne, on peut avoir des structures plus élaborées que simplement des nombres ou des textes. Il est possible d'avoir des structures d'objets ou des listes comme valeurs.
Les bases orientées colonnes sont pensées pour la volumétrie : de ce fait, les tables peuvent facilement contenir des dizaines de millions de lignes avec des centaines de colonnes différentes.
Néanmoins, cela empêche certaines fonctionnalités historiquement présentes dans le modèle relationnel d’être présente. Par exemple, avec Cassandra, il n’est pas possible d’effectuer des jointures.
Les bases orientées colonnes sont adaptées lorsque les données sont très volumineuses et que de nombreux événements surviennent.
Elles gardent, dans leur forme, un certain lien avec les bases relationnelles. De nombreux services Cloud proposent des bases orientées colonnes, comme Amazon DynamoDB ou Google BigTable.
Dans les bases orientées documents, on considère des collections de documents, où chaque document contient une liste de champs clé/valeur. Le format utilisé dans les documents est principalement le JSON ou le XML.
Chaque document possède sa propre structure, ce qui permet d’être très flexible au sein d’une même collection. Notons qu'il est possible d’ajouter des schémas de données pour obliger un minimum de structure.
Il faut les utiliser lorsqu'il n’y pas de relations entre les documents et les collections.
S’il y a une cohérence assez forte entre les données (colonnes plus ou moins similaires), on préférera utiliser une base NoSQL orientée colonnes.
À lire aussi : découvrez notre formation Data Engineer
Les bases orientées clé/valeur sont utilisées pour le stockage temporaire de données ou pour un accès rapide sans requêtes complexes.
Chaque donnée est référencée par une clé : c’est à partir de cette référence que l’on y accède. Le principe est très similaire aux systèmes de stockage d’objets où on accède aux objets via une clé.
Contrairement aux autres bases NoSQL, celles-ci sont plus faciles à utiliser mais leurs usages sont limités. En effet, il n’est pas possible d’effectuer des requêtes poussées sur ces bases.
La principale utilisation des bases NoSQL orientées clé/valeur concerne la mise en cache d’informations.
Les bases de données NoSQL sont aujourd'hui omniprésentes dans les entreprises de toutes tailles. Elles se révèlent particulièrement efficaces dans les situations suivantes.
Un des autres avantages des bases NoSQL est qu’elles ne nécessitent pas autant de modélisation en amont que les bases SQL. En raison de leur flexibilité,
Vous souhaitez vous former au Data Engineering ?
Articles similaires
7 févr. 2024
Pendant de nombreuses années, le rôle des Data Engineers était de récupérer des données issues de différentes sources, systèmes de stockage et applications tierces et de les centraliser dans un Data Warehouse, dans le but de pouvoir obtenir une vision complète et organisée des données disponibles.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
4 déc. 2023
Pour de nombreuses entreprises, la mise en place et la maintenant de pipelines de données est une étape cruciale pour avoir à disposition d'une vue d'ensemble nette de toutes les données à disposition. Un des challenges quotidien pour les Data Analysts et Data Engineers consiste à s'assurer que ces pipelines de données puissent répondre aux besoins de toutes les équipes d'une entreprise.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
14 nov. 2023
Pour améliorer les opérations commerciales et maintenir la compétitivité, il est essentiel de gérer efficacement les données en entreprise. Cependant, la diversité des sources de données, leur complexité croissante et la façon dont elles sont stockées peuvent rapidement devenir un problème important.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
60 rue François 1er
75008 Paris
Blent est une plateforme 100% en ligne pour se former aux métiers Tech & Data.
Organisme de formation n°11755985075.
Data Engineering
IA Générative
MLOps
Cloud & DevOps
À propos
Gestion des cookies
© 2024 Blent.ai | Tous droits réservés