MongoDB World is back in NYC June 7 - 9!MongoDB World is back in NYC June 7 - 9!

Qu’est-ce que le NoSQL ?

Déployez un cluster NoSQL gratuitement
Essayez une base de données NoSQL avec Atlas
 Qu’est-ce que NoSQL ?

Les bases de données NoSQL (ou « not only SQL ») stockent les données différemment des tables relationnelles. Les bases de données NoSQL sont disponibles dans différents types en fonction de leur modèle de données, dont les principaux sont document, clé-valeur, orientée colonnes et graphique. Elles fournissent des schémas flexibles et s’adaptent facilement à de grandes quantités de big data et à des charges d’utilisateurs élevées.

Dans cet article, vous apprendrez ce qu’est une base de données NoSQL, pourquoi (et quand !) vous devriez en utiliser une, et comment démarrer.

 Sommaire
 Qu'est-ce qu'une base de données NoSQL ?

Le terme « base de données NoSQL » est couramment employé pour désigner toute base de données non relationnelle. Certaines personnes disent que le terme « NoSQL » signifie « non-SQL », tandis que d'autres pensent qu’il signifie « pas seulement SQL ». Quoi qu’il en soit, la plupart s’accordent à dire que les bases de données NoSQL stockent les données de manière plus naturelle et plus flexible. NoSQL, contrairement à SQL, est une approche de la gestion des bases de données, tandis que SQL n’est qu’un langage de requête, semblable aux langages de requête des bases de données NoSQL.

 Types de bases de données : NoSQL

Au fil du temps, quatre grands types de bases de données NoSQL ont émergé : les bases de données de documents, les bases de données clé-valeur, les magasins orientés colonnes et les bases de données graphiques. De nos jours, les bases de données multimodèles sont aussi de plus en plus utilisées.

 Bases de données orientées documents

Une base de données orientée document stocke des données dans des documents de manière comparable aux objets JSON (JavaScript Object Notation). Chaque document contient des paires de champs et de valeurs. Les valeurs peuvent être de différents types, notamment des chaînes, des nombres, des valeurs booléennes, des tableaux ou d’autres objets. Les bases de données de documents offrent un modèle de données flexible, parfaitement adapté aux ensembles de données semi-structurées et généralement non structurées. Elles prennent également en charge les structures imbriquées, ce qui facilite la représentation de relations complexes ou de données hiérarchiques.

MongoDB et Couchbase sont des exemples de bases de données de documents. Un document standard est semblable à ce qui suit :

 Bases de données clé-valeur

Un magasin clé-valeur est un type de base de données plus simple où chaque élément contient des clés et des valeurs. Chaque clé est unique et associée à une seule valeur. Elles sont utilisées pour la mise en cache et la gestion de session et offrent des performances élevées en lecture et en écriture, car elles stockent généralement les éléments en mémoire. Amazon DynamoDB et Redis en sont deux exemples. Voici une vue simple de données stockées dans une base de données clé-valeur :

 Magasins orientés colonnes

Les magasins orientés colonnes stockent les données dans des tables, des lignes et des colonnes dynamiques. Les données sont stockées dans des tables. Toutefois, contrairement aux bases de données SQL traditionnelles, les magasins orientés colonnes sont flexibles, différentes lignes pouvant comporter différents ensembles de colonnes. Ces bases de données peuvent utiliser des techniques de compression de colonne pour réduire l’espace de stockage et améliorer les performances. La taille importante des lignes et des colonnes permet une récupération efficace des données disparates et volumineuses. Apache Cassandra et HBase sont des exemples de magasins orientés colonnes. Voici un exemple classique de la façon dont les données sont stockées dans une structure orientée colonnes :

nameidemaildobcity
Foo bar12345foo@bar.comSome city
Carn Yale34521bar@foo.com12-05-1972

 Bases de données graphiques

Une base de données graphique stocke les données sous la forme de nœuds et d'arêtes. Les nœuds stockent généralement des informations sur les personnes, les lieux et les objets (comme les noms), tandis que les arêtes stockent des informations sur les relations entre les nœuds. Ce mécanisme fonctionne bien pour les données fortement connectées, où les relations ou les schémas ne sont pas toujours évidents au départ. Les bases de données graphiques Neo4J et Amazon Neptune en sont des exemples. MongoDB fournit également des fonctionnalités de balayage de graphe à l’aide de l’étape $graphLookup du pipeline d’agrégation. Voici un exemple de la façon dont les données sont stockées :

Exemple de base de données de graphiques.
 Bases de données multimodèles

Les bases de données multimodèles prennent en charge plusieurs types de modèles de données NoSQL afin que les développeurs puissent choisir en fonction des exigences de leur application. Ces bases de données disposent d’un moteur de base de données unifié qui peut gérer plusieurs modèles de données au sein d’une instance de base de données. CosmosDB et ArangoDB en sont des exemples.

 Comparaison rapide des types de bases de données : NoSQL

Chacune des bases de données NoSQL offre des fonctionnalités différentes. Par exemple, les bases de données graphiques peuvent mieux convenir à l’analyse des relations complexes et des schémas entre les entités, tandis que les bases de données de documents offrent un moyen plus souple et plus naturel de stocker et d’extraire de grands volumes de données de types comparables à ceux des documents. Le choix de la base de données dépend du cas d’utilisation que vous souhaitez développer.

Comparaison des types de bases de données NoSQL.

Pour en savoir plus, lisez l’article Comprendre les différents types de bases de données NoSQL.

 Bref historique des bases de données NoSQL

Les bases de données NoSQL sont apparues à la fin des années 2000, lorsque le coût du stockage a considérablement diminué. L’époque où il fallait créer un modèle de données complexe et difficile à gérer pour éviter la duplication des données est révolue. Bases de données NoSQL optimisées pour la productivité des développeurs.

.
Alors que les coûts de stockage diminuaient rapidement, la quantité de données que les applications devaient stocker et interroger augmentait. Ces données étant de formes et de tailles différentes – structurées, semi-structurées et non structurées – il devenait quasiment impossible de définir le schéma à l’avance. Les bases de données NoSQL permettent aux développeurs de stocker d’énormes quantités de données non structurées, ce qui leur offre une grande flexibilité.
Bref historique des bases de données NoSQL.

Au début des années 2000, un article publié par Google à propos de BigTable, la base de données orientée colonnes, a décrit toutes les possibilités qu'offre un système de stockage distribué. L’année 2009 a été marquée par l’essor des bases de données NoSQL, avec l’arrivée de deux bases de données orientées documents, MongoDB et CouchDB.

Dans les années 2010, différents types de bases de données NoSQL sont apparus et l’adoption de NoSQL s’est généralisée, les entreprises étant de plus en plus axées sur les données.

En outre, le Manifeste Agile gagnant en popularité, les ingénieurs en informatique repensaient la manière dont ils développaient les logiciels. Ils ont dû s’adapter rapidement à l’évolution des exigences, itérer et apporter des modifications à l’ensemble de leur pile logicielle, jusqu’à la base de données. Les bases de données NoSQL leur ont offert cette flexibilité.

Le cloud computing étant aussi en plein essor, les développeurs ont commencé à utiliser des clouds publics pour héberger leurs applications et leurs données. Ils souhaitaient pouvoir distribuer les données sur plusieurs serveurs et dans plusieurs régions afin de rendre leurs applications résilientes, les répartir au lieu de les augmenter et les géolocaliser de manière intelligente. Certaines bases de données NoSQL, comme MongoDB Atlas, fournissent ces fonctionnalités.

En raison de la croissance exponentielle de la numérisation, les entreprises collectent aujourd’hui autant de données non structurées que possible. Pour être en mesure d’analyser et d’obtenir des informations exploitables en temps réel à partir du big data, les entreprises ont besoin de solutions modernes qui vont au-delà du simple stockage. Elles ont besoin d’une plateforme qui facilite l'évolutivité, la transformation, et la visualisation des données, qui permet de créer des tableaux de bord, des rapports et des graphiques, et de travailler avec l’IA et des outils de business intelligence pour accélérer la productivité. En raison de leur nature flexible et distribuée, les bases de données NoSQL comme MongoDB excellent dans ces tâches.

 Fonctionnalités d'une base de données NoSQL

Les bases de données NoSQL sont flexibles, évolutives et distribuées. Différents types de bases de données NoSQL ont leurs propres caractéristiques uniques.

Illustration des fonctionnalités NoSQL.

Dans l'ensemble, les bases de données NoSQL présentent les caractéristiques suivantes :

Conformité BASE

Les bases de données NoSQL sont conformes au modèle BASE (Basic Availability Soft State Eventual Consistency) qui donne la priorité à la disponibilité plutôt qu’à la cohérence. La disponibilité de base fait référence à la capacité du système à tolérer une défaillance partielle (comme la perte d’un nœud). L’état souple signifie que le système autorise des incohérences temporaires avant d’atteindre automatiquement la cohérence au fil du temps. La conformité BASE garantit une haute disponibilité, un traitement plus rapide des données, l’évolutivité et la flexibilité. Cependant, il est possible de configurer MongoDB pour assurer la conformité ACID multidocuments.

Apprenez-en davantage sur les avantages des bases de données NoSQL.

 Exemple de base de données relationnelle vs base de données NoSQL

Considérons un exemple de stockage d’informations concernant un utilisateur et ses loisirs. Nous devons stocker le prénom, le nom, le numéro de téléphone portable, la ville et les loisirs d’un utilisateur.

Dans un système de gestion de base de données relationnelle (SGBDR), nous créerions probablement deux tables : une pour les utilisateurs et une pour les loisirs.

Afin de récupérer toutes les informations associées à un utilisateur et à ses loisirs, les informations des tables Utilisateurs et Loisirs devront être regroupées.

Le modèle de données que nous concevons pour une base de données NoSQL dépend du type de base de données NoSQL que nous choisissons. Examinons comment stocker les mêmes informations concernant un utilisateur et ses loisirs dans une base de données de documents comme MongoDB.

Pour récupérer toutes ces informations, un seul document peut être extrait de la base de données. Aucune jointure n’est nécessaire, ce qui permet d’accélérer les requêtes.

RDBMS et NoSQL (Document)

Pour voir une version plus détaillée de cet exemple de modélisation de données, consultez l'article Comparaison des termes et concepts SQL avec MongoDB.

 Différences entre les bases de données SGBDR et NoSQL

Il existe de nombreuses différences entre les systèmes de gestion de bases de données relationnelles et les bases de données non relationnelles. L’une des principales différences est la manière dont les données sont modélisées dans la base de données. Voici les principales différences entre chaque fonctionnalité :

 Modélisation des données

NoSQL : les modèles de données varient en fonction du type de base de données NoSQL utilisée (par exemple, clé-valeur, documents, graphique ou orientée colonne), et sont adaptés aux données semi-structurées et non structurées.

SGBDR : un SGBDR utilise une structure de données tabulaires, les données étant représentées sous la forme d’un ensemble de lignes et de colonnes ; ce modèle convient aux données structurées.

 Schéma

NoSQL : fournit un schéma flexible dans lequel chaque ensemble de paires document/ligne/colonne/clé-valeur peut contenir différents types de données. Il est plus facile de modifier le schéma, si nécessaire, du fait de sa flexibilité.

SGBDR : schéma fixe dans lequel chaque ligne doit contenir les mêmes types de colonnes prédéfinies. Il est difficile de modifier le schéma une fois les données stockées.

 Langage de requête

NoSQL : varie en fonction du type de base de données NoSQL utilisé. Par exemple, MongoDB utilise MQL, et Neo4J utilise Cypher.

SGBDR : ce système utilise un langage de requête structuré (SQL).

 Évolutivité

NoSQL est conçu pour le scaling vertical et horizontal.

SGBDR : un SGBDR est conçu pour le scaling vertical. Cependant, il permet d'étendre les capacités limitées du scaling horizontal.

 Relations de données

NoSQL : les relations peuvent être imbriquées, explicites ou implicites.

SGBDR : les relations sont définies par des clés étrangères et accessibles à l'aide de jointures.

 Type de transaction

NoSQL : les transactions sont soit ACID, soit conformes au modèle BASE.

SGBDR : les transactions sont conformes au modèle ACID.

 Performances

NoSQL : convient au traitement en temps réel, à l’analyse big data et aux environnements distribués.

SGBDR : adapté aux workloads transactionnels et aux lectures intensives.

 Cohérence des données

NoSQL : offre une grande cohérence des données.

SGBDR : offre une cohérence finale dans la plupart des cas.

 Calcul distribué

NoSQL : l’une des principales raisons de l’introduction de NoSQL était le calcul distribué ; les bases de données NoSQL prennent en charge le stockage de données distribuées, le scaling vertical et horizontal via le partitionnement, la réplication et le clustering.

SGBDR : les SGBDR prennent en charge le calcul distribué par le biais du clustering et de la réplication. Cependant, ces systèmes sont moins évolutifs et flexibles car ils n’ont pas été conçus à l'origine pour prendre en charge une architecture distribuée.

 Tolérance aux pannes

NoSQL : NoSQL intègre une tolérance aux pannes et une haute disponibilité grâce à la réplication des données.

SGBDR : les SGBDR utilisent des mécanismes de réplication, de sauvegarde et de récupération. Cependant, comme ils sont spécifiquement conçus pour ces mécanismes, il peut être nécessaire d’implémenter des fonctionnalités supplémentaires comme la reprise après sinistre lors du développement de l’application.

 Partitionnement des données

NoSQL : s’effectue par le biais du sharding et de la réplication.

SGBDR : prend en charge le partitionnement basé sur des tables et l’élimination des partitions.

Apprenez-en davantage sur le partitionnement des données.

 Mappage de données aux objets

NoSQL : NoSQL stocke les données de différentes manières, par exemple sous forme de documents JSON, de magasins orientés colonnes ou de paires clé-valeur. Il fournit une abstraction via les frameworks ODM (mappage données-objets) pour travailler avec les données NoSQL de manière orientée objet.

SGBDR : s’appuie davantage sur le mappage des données aux objets, de sorte que l'intégration entre les colonnes de la base de données et le code de l’application orienté objet est transparente.

Pour en savoir plus sur les différences entre les bases de données relationnelles et les bases de données NoSQL, lisez l'article Bases de données NoSQL vs SQL.

 Cas d’utilisation NoSQL

Les systèmes de base de données NoSQL sont utilisés dans presque tous les secteurs, pour l’analyse en temps réel, la gestion de contenu, les applications IoT, les systèmes de recommandation, la détection des fraudes, la gestion des catalogues de produits et de nombreuses autres activités. Les cas d’utilisation vont des plus critiques (par exemple, le stockage de données financières et des dossiers médicaux) à d’autres plus légers (par exemple, le stockage des relevés IoT d’une litière intelligente pour chat).

 Quand faut-il utiliser NoSQL ?

Au moment de faire leur choix, les décideurs recherchent généralement un ou plusieurs des critères suivants qui les amènent à sélectionner une base de données NoSQL :

  • Développement Agile rapide
  • Stockage de données structurées et semi-structurées
  • Énormes volumes de données
  • Exigence d’une architecture de scaling horizontal
  • Paradigmes d’application modernes tels que les microservices et les flux de transactions en temps réel

Consultez les articles Quand utiliser les bases de données NoSQL et Explorer les exemples de bases de données NoSQL pour des informations plus détaillées sur les critères énumérés ci-dessus.

 Idées reçues sur les bases de données NoSQL

Au fil des ans, de nombreuses idées fausses concernant les bases de données NoSQL se sont répandues au sein de la communauté des développeurs. Dans cette section, nous abordons deux des idées reçues les plus courantes.

 Idée reçue : les données relationnelles sont mieux adaptées aux bases de données relationnelles

L'idée courante selon laquelle les bases de données NoSQL ou les bases de données non relationnelles ne stockent pas correctement les données relationnelles est fausse. Les bases de données NoSQL peuvent stocker des données relationnelles, mais elles les stockent différemment des bases de données relationnelles.

En fait, par rapport aux bases de données relationnelles, beaucoup considèrent que la modélisation des données relationnelles dans les bases de données NoSQL est plus facile que dans les bases de données relationnelles, car les données associées n’ont pas besoin d’être réparties entre les tables. Les modèles de données NoSQL permettent d’imbriquer des données connexes dans une structure de données unique.

 Idée reçue : les bases de données NoSQL ne prennent pas en charge les transactions ACID

L'idée courante selon laquelle les bases de données NoSQL ne prennent pas en charge les transactions ACID est une autre idée fausse. Certaines bases de données NoSQL, comme MongoDB, prennent en charge les transactions ACID.

Notez que la manière dont les données sont modélisées dans les bases de données NoSQL peut éliminer le besoin de transactions impliquant plusieurs enregistrements dans de nombreux cas d’utilisation. Prenons l’exemple précédent où nous avons stocké des informations concernant un utilisateur et ses loisirs à la fois dans un modèle relationnel et dans un magasin de documents. Pour garantir que ces informations sont toutes actualisées ensemble dans une base de données relationnelle, nous devons utiliser une transaction pour mettre à jour les enregistrements dans deux tables. Pour faire de même dans un magasin de documents, nous pouvons mettre à jour un seul document, sans nécessiter de transaction multi-enregistrements.

Pour en savoir plus sur les idées reçues, lisez l'article Tout ce que vous savez sur MongoDB est faux.

 Tutoriel sur les requêtes NoSQL

Vous pouvez commencer avec MongoDB, la base de données NoSQL la plus populaire au monde, selon DB-Engines. Le moyen le plus simple de démarrer avec MongoDB est MongoDB Atlas. Atlas est la base de données entièrement gérée en tant que service de MongoDB. Atlas propose un niveau gratuit à vie, que vous pouvez utiliser pour explorer le produit. Consultez le tutoriel MongoDB Atlas pour commencer.

Pour continuer à interagir avec vos données, vous pouvez utiliser Atlas Data Explorer pour insérer de nouveaux documents, modifier des documents existants et supprimer des documents.

Lorsque vous êtes prêt à lancer des requêtes plus avancées qui agrègent vos données, créez un pipeline d’agrégation. Le framework d’agrégation est un outil incroyablement puissant pour l’analyse de vos données. Pour en savoir plus, suivez le cours gratuit de MongoDB University MongoDB Aggregation.

Lorsque vous souhaitez visualiser vos données, consultez la page MongoDB Atlas Charts. Les Charts vous permettent de créer des tableaux de bord remplis de visualisations de vos données.

 Résumé

Les bases de données NoSQL offrent de nombreux avantages, notamment des modèles de données flexibles, un scaling horizontal, des requêtes ultra-rapides et une facilité d’utilisation pour les développeurs. Les bases de données NoSQL sont disponibles dans une variété de types, notamment des magasins de documents, des bases de données clé-valeur, des magasins orientés colonnes, des bases de données graphiques et des bases de données multimodèles.

MongoDB est la base de données NoSQL la plus populaire au monde. Apprenez-en davantage sur MongoDB Atlas, et essayez la version gratuite.

Vous avez hâte d’en savoir plus maintenant que vous avez votre propre compte Atlas ? Rendez-vous sur la page MongoDB University qui vous permet de suivre une formation en ligne gratuite dispensée par des ingénieurs MongoDB et d'obtenir une certification MongoDB. Les guides de démarrage rapide sont un autre excellent point de départ ; ils vous permettront de vous familiariser rapidement avec votre langage de programmation préféré.

FAQ

Quels sont les avantages de NoSQL ?

De nombreuses bases de données NoSQL présentent les avantages suivants :

Qu’est-ce que la cohérence éventuelle ?
La cohérence éventuelle est une propriété des bases de données distribuées. Lorsque la base de données est mise à jour, la cohérence éventuelle garantit que la mise à jour est entièrement propagée sur tous les nœuds de la base de données distribuée.
Qu’est-ce que le théorème CAP ?
Le théorème CAP stipule qu’un système informatique distribué peut fournir au maximum deux des trois propriétés suivantes : crésistance, adisponibilité et ptolérance de partition.
À quoi sert le NoSQL ?

Les bases de données NoSQL sont utilisées dans presque tous les secteurs pour toute une variété de cas d’utilisation.

Le type de base de données NoSQL détermine le cas d’utilisation typique. Par exemple, les bases de données de documents comme MongoDB sont des bases de données à usage général. Les bases de données clés-valeurs sont idéales pour les grands volumes de données avec des requêtes simples. Les bases de données orientées colonnes fonctionnent bien avec les cas d’utilisation contenant de grandes quantités de données et des schémas de requêtes prévisibles. Les bases de données de graphiques excellent pour détecter et analyser les relations entre les données. Pour plus d’informations, consultez Comprendre les différents types de bases de données NoSQL.

Qu’est-ce qu’une base de données NoSQL ?
Une base de données NoSQL est une base de données qui stocke les données dans un format autre que des tables relationnelles.
Comment écrire une requête NoSQL ?
Chaque base de données NoSQL a sa propre méthode d’écriture des requêtes. Consultez la documentation interactive de MongoDB pour en savoir plus sur l’interrogation d’une base de données MongoDB.
NoSQL est-il difficile à apprendre ?

Non, les bases de données NoSQL ne sont pas difficiles à apprendre. En fait, selon de nombreux développeurs, la modélisation des données dans les bases de données NoSQL est très intuitive. Par exemple, les documents de MongoDB concordent avec les structures de données dans les langages de programmation les plus courants ; la programmation est ainsi plus rapide et plus facile.

Notez que les personnes ayant une formation et de l’expérience dans le domaine des relational databases auront probablement besoin d’un certain temps pour s’adapter à la façon de modéliser les données dans NoSQL.

JSON est-il NoSQL ?
Une base de données de documents est un type de base de données NoSQL qui stocke des données dans des documents JSON ou BSON.
Quel est le langage utilisé pour interroger les bases de données NoSQL ?
Les bases de données NoSQL couvrent une grande variété de types et d’implémentations. Par conséquent, les bases de données NoSQL peuvent être interrogées à l’aide de nombreux langages de requête et d’API. MongoDB, la base de données NoSQL la plus utilisée au monde, peut être interrogée à l’aide de MongoDB Query Language (MQL).
Existe-t-il un schéma NoSQL ?
Les bases de données NoSQL comportent généralement des schémas flexibles. Notez que certaines bases de données NoSQL comme MongoDB prennent également en charge la validation des schémas afin que les développeurs puissent verrouiller leurs schémas au niveau souhaité une fois qu’ils sont prêts.

Cet article a été écrit par Lauren Schaefer, conceptrice en développement MongoDB.

En savoir plus sur les principales différences entre les bases de données NoSQL et SQL

 Ressources NoSQL connexes
 En savoir plus

Suivez ce tutoriel avec MongoDB Atlas

Découvrez les avantages de l’utilisation de MongoDB, la première base de données NoSQL, sur le cloud.
Commencez gratuitement !