Module 1Exploiter les fonctionnalités des bases de données NoSQL MongoDB
Chapitre 1 sur 7
Découvrir les bases de données NoSQL
Ce qu'est le NoSQL, la comparaison avec les bases relationnelles, le schéma libre, l'architecture distribuée, le théorème CAP, BASE contre ACID, et les quatre types de bases NoSQL.
- ≈ 135 min
- 5 leçons
- 5 vidéos
- 3 exercices
- TP
Objectifs
Avec ce chapitre, tu sauras…
- définir le concept de base de données NoSQL ;
- comparer les bases de données traditionnelles (SQL) et NoSQL ;
- recenser les caractéristiques des bases NoSQL (sans schéma, distribuées, CAP, BASE) ;
- recenser les quatre types de bases NoSQL : clé / valeur, document, colonne, graphe ;
- comparer ces types et comprendre pourquoi on choisit MongoDB.
Leçon 1
Définir le concept de bases de données NoSQL
Des SGBD relationnels… au NoSQL
Un SGBD a toujours deux missions : stocker les données et retrouver les données.
Les SGBD relationnels (SGBDR : MySQL, Oracle, SQL Server…) rangent des données bien structurées, de types simples (textes, entiers…), dans des tables : les colonnes sont les propriétés, les lignes sont les données. Ils reposent sur le modèle relationnel d'Edgar Codd et ont prouvé leur efficacité pendant des décennies grâce à :
- une séparation logique et physique (on manipule des tables sans savoir comment elles sont rangées sur le disque) ;
- une forte structuration des données et un fort typage ;
- une représentation tabulaire ;
- un langage déclaratif : le SQL (on dit ce qu'on veut, pas comment le chercher) ;
- des contraintes qui assurent l'intégrité des données (clés primaires, clés étrangères…) ;
- une forte cohérence transactionnelle (les transactions de la partie 1).
Mais les SGBDR montrent leurs limites face aux 3V du Big Data :
| Le « V » | Le problème pour le relationnel |
|---|---|
| Volume : des quantités énormes de données | le relationnel, très transactionnel, ne lutte pas efficacement contre des volumes très importants |
| Vélocité : des données qui arrivent très vite | chaque écriture vérifie les contraintes, ce qui ralentit |
| Variété : des données de toutes formes | les données sont parfois incompatibles avec la rigidité du schéma relationnel et ses contraintes |
Le NoSQL
- NoSQL veut dire Not Only SQL (« pas seulement du SQL ») : une nouvelle manière de gérer les données, sans respecter forcément le modèle relationnel.
- Le NoSQL accepte de nouveaux types de données : XML, collections d'objets, triplets…
- Il relâche certaines contraintes lourdes du relationnel (structure fixe, langage d'interrogation, cohérence stricte) pour favoriser la distribution sur plusieurs serveurs.
- Le NoSQL ne remplace pas les bases SQL : il les complète, par exemple pour le stockage réparti.
Définition
Le mouvement est parti des besoins Big Data des géants du web :
| Entreprise | Sa base NoSQL |
|---|---|
| BigTable (dont s'inspire HBase) | |
| Cassandra | |
| Amazon | DynamoDB |
Les serveurs NoSQL ont des architectures distribuées : les données sont réparties sur plusieurs machines. C'est ce qui leur permet de répondre aux problèmes du Big Data.
Les avantages du NoSQL
- Le format repose souvent sur des paires clé-valeur, beaucoup plus simples à mettre en œuvre.
- On peut stocker directement les objets des langages de programmation : listes, collections d'objets, tableaux de valeurs…
- La plupart des bases NoSQL sont open source, sans droits de licence.
- On étend très facilement la base : il suffit d'ajouter des serveurs.
- Les données sont regroupées par unités logiques, pas dans des tables, ce qui facilite leur manipulation.
Exemple : pour avoir les informations du client d'une commande, pas besoin de jointure entre les tables client et commande : le client est rangé dans la commande.
Les inconvénients du NoSQL
- Pas de clé étrangère : aucun mécanisme ne vérifie la cohérence des données. C'est au programme de le faire.
- Le NoSQL n'est pas adapté aux applications qui exigent des transactions sûres et fiables (la gestion bancaire, par exemple).
- Les requêtes SQL et NoSQL ne sont pas compatibles : il faut apprendre un nouveau langage de requêtes.
Vidéo · À regarder
FRBase de données : Introduction au NoSQL
Algomius · YouTube
Ce que tu vas voir (15 min) : les chapitres « Les limites du modèle relationnel », « Qu'est-ce que le NoSQL ? », « Les avantages du NoSQL », « Les inconvénients du NoSQL ». Le formateur explique les limites du modèle relationnel face aux gros volumes, définit le NoSQL, puis présente ses avantages et ses inconvénients : c'est le contenu de cette section.
Leçon 2
Comparer les bases de données traditionnelles et NoSQL
Tableau: SQL ou NoSQL ?
| Base de données SQL | Base de données NoSQL |
|---|---|
| Les données sont dans des tables de n lignes. | Les données sont des collections de paires clé-valeur, de documents, de graphes… |
| Elles respectent un schéma strict et standard. | Elles n'ont pas de schéma standard. |
| Plus de charge → on renforce un seul serveur (processeur, RAM, SSD…) : scalabilité verticale. | Plus de charge → on ajoute des serveurs : scalabilité horizontale. |
| La montée en charge n'est pas prévue nativement : elle peut compromettre l'intégrité transactionnelle. | La montée en charge est automatique : si un serveur tombe en panne, un autre le remplace sans interrompre le service. |
| Intégrité assurée par les propriétés ACID (Atomicité, Cohérence, Isolation, Durabilité). | Repose sur les propriétés BASE (Basically Available, Soft state, Eventually consistent), voir la section 3. |
| Recommandée pour sa structure et ses schémas prédéfinis, mais mal adaptée aux données hiérarchiques. | Recommandée pour les données semi-structurées ou non structurées. |
| La plus adaptée aux applications transactionnelles intensives : stable, atomique, cohérente. | Préférée pour les ensembles de données volumineux et hiérarchiques. |
Tableau: Résumons
| NoSQL | SQL |
|---|---|
| De meilleures performances, car il ne gère pas toutes les règles de cohérence. | Un langage unifié (SQL) : on retrouve la même logique d'une base SQL à l'autre. |
| Optimisé pour d'énormes volumes de données. | Une meilleure fiabilité et cohérence, au détriment de la performance quand les données deviennent volumineuses. |
SQL et NoSQL stockent et retrouvent tous les deux de l'information, mais ils ne servent pas les mêmes objectifs. Les opposer n'a pas vraiment de sens : on choisit selon le besoin.
Vidéo · À regarder
FRBase de données : Introduction au NoSQL
Algomius · YouTube
Ce que tu vas voir (2 min) : le chapitre « SQL contre NoSQL ». Une comparaison rapide entre SQL et NoSQL, comme le tableau de cette section.
Leçon 3
Recenser les caractéristiques des bases de données NoSQL
Les bases NoSQL ont six caractéristiques générales :
- un modèle de données sans schéma (schema free) ;
- une architecture distribuée ;
- les propriétés BASE au lieu d'ACID ;
- des langages qui ne sont pas uniquement du SQL ;
- la manipulation de données de structures complexes ou imbriquées ;
- de bonnes performances sur des volumes de données qui grandissent très vite (cas des applications web).
1. Le modèle sans schéma (schema free)
- En relationnel, on modélise d'abord les entités et les associations, puis on en déduit le schéma de la base.
- Cette démarche est rigide : il faut savoir dès le départ comment l'application va évoluer, ce qui est rarement le cas aujourd'hui.
- Les bases NoSQL utilisent des données dénormalisées : au lieu de relations entre tables, on intègre les informations liées dans le même enregistrement (document). On interagit avec les données sans requêtes complexes.
Exemple : des articles (posts) et leurs commentaires.
| En SQL : 2 tables | En NoSQL : 1 seule structure |
|---|---|
Posts(id, titre) et Commentaires(id, #idPosts, texte) | Posts(id, titre, commentaires) |
| P1 Titre1 ; P2 Titre2 | P1 Titre1 [comment1, comment3] |
| C1 P1 comment1 ; C2 P2 comment2 ; C3 P1 comment3 | P2 Titre2 [comment2] |
En SQL, pour afficher un article avec ses commentaires, il faut une jointure. En NoSQL, les commentaires sont dans l'article :
{ "id": "P1", "titre": "Titre1", "commentaires": ["comment1", "comment3"] }2. L'architecture distribuée
- Le volume de données et les traitements des organisations modernes ne tiennent plus sur une seule machine, même très puissante.
- Solution : distribuer le travail sur plusieurs machines, puis regrouper et agréger les résultats de chaque machine en un résultat final. C'est le principe de MapReduce (Google, 2003-2004).
- Les bases traditionnelles ne permettent pas facilement ce type d'architecture.
- Les bases NoSQL sont conçues pour répartir les données et leurs traitements sur de multiples nœuds (serveurs) : c'est le partitionnement horizontal (on parle aussi de sharding).
- Problème : on ne peut pas avoir en même temps une disponibilité parfaite, une tolérance au partitionnement et une cohérence parfaite. Il faut toujours sacrifier un aspect au profit des autres.
Le théorème CAP
On obtient donc trois familles : CA (cohérence + disponibilité), CP (cohérence + partitionnement) et AP (disponibilité + partitionnement).
3. BASE au lieu d'ACID
Les propriétés ACID ne s'appliquent pas, ou pas complètement, dans un contexte NoSQL distribué. Les bases NoSQL reposent plutôt sur les propriétés BASE :
| Propriété | Signification |
|---|---|
| Basically Available (basiquement disponible) | la base garantit la disponibilité des données, quelle que soit la charge |
| Soft state (état souple) | la base n'a pas à être cohérente tout le temps : son état peut changer pendant les mises à jour ou l'ajout / retrait de serveurs, sans que cela nuise à ses performances |
| Eventually consistent (cohérente à terme) | les nœuds n'ont pas besoin d'avoir exactement les mêmes données à chaque instant : ils se synchronisent dès que possible |
Les bases NoSQL privilégient en général la disponibilité à la cohérence : AP plutôt que CP.
Vidéo · À regarder
FRBase de données : Introduction au NoSQL
Algomius · YouTube
Ce que tu vas voir (5 min) : les chapitres « Étendre une base NoSQL », « Associer les données en NoSQL ». Le formateur montre comment on étend une base NoSQL en la répartissant sur plusieurs serveurs, puis comment on associe les données sans jointure : c'est l'architecture distribuée et le modèle sans schéma de cette section.
Leçon 4
Recenser les types de bases de données NoSQL
Il existe quatre types de bases NoSQL.
1. Les bases de données clé-valeur
- C'est le type le plus simple.
- Les données sont des couples (clé, valeur).
- La valeur peut être une valeur simple, un objet sérialisé…
- Grâce à sa simplicité, ce type traite efficacement un très grand nombre de requêtes.
- Il est très pratique pour stocker les profils des utilisateurs.
| Clé | Valeur |
|---|---|
| Ahmed | type: Formateur; spec: Dev digital; modules: M102, M104, M106, M203 |
| Sanaa | type: Stagiaire; filière: Dev digital; groupe: DD203; niveau: 2A |
| Kamal | type: Stagiaire; filière: Infra digitale; niveau: 1A |
La base ne « comprend » pas la valeur : elle la range et la rend quand on lui donne la clé, comme un vestiaire avec ses tickets numérotés.
Exemples : DynamoDB (Amazon), Berkeley DB (Oracle, utilisée par RPM, SVN…), Voldemort (LinkedIn, et pas le sorcier de Harry Potter), Riak, Redis.
2. Les bases de données orientées document
- C'est une évolution du type clé-valeur.
- La valeur est un document dont la structure est libre.
- Les documents sont au format JSON ou XML.
- Avantage : pas de jointures pour reconstruire une information, car tout est dans le document.
{ "type": "Formateur", "spec": "Dev digital", "modules": ["M102", "M104", "M106", "M203"] }{ "type": "Stagiaire", "filiere": "Dev digital", "groupe": "DD203", "niveau": "2A", "option": "Mobile" }{ "type": "Stagiaire", "filiere": "Infra digital", "niveau": "1A" }Cette fois, la base lit l'intérieur de la valeur : on peut chercher « tous les stagiaires de niveau 2A ».
Exemples : MongoDB (Adobe, Bosch, Cisco, eBay…), CouchDB (Apache ; Disney, PayPal, Ryanair…), RavenDB (plateformes .NET / Windows).
3. Les bases de données orientées colonne
- Ce type change la représentation traditionnelle en lignes.
- Une requête peut se concentrer sur les colonnes utiles sans lire les autres.
- Il est adapté aux systèmes qui font de gros calculs analytiques : comptages, moyennes, sommes…
Exemple. La représentation traditionnelle, en lignes, laisse beaucoup de cases vides :
| Id | Type | Spécialité | Niveau | Filière | Groupe | Option | Module |
|---|---|---|---|---|---|---|---|
| Ahmed | Formateur | Dev Digital | M102, M104, M106, M202 | ||||
| Sanaa | Stagiaire | 2A | Dev Digital | DD203 | Mobile | ||
| Kamal | Stagiaire | 1A | Infra Digitale | ||||
| Laila | Formateur | Infra Digitale | M105, M107, M201 |
La représentation par colonnes range chaque colonne à part, avec seulement les valeurs qui existent :
| Colonne Type | Colonne Filière | Colonne Module | Colonne Option |
|---|---|---|---|
| Ahmed : Formateur | Sanaa : Dev Digital | Ahmed : M102 | Sanaa : Mobile |
| Sanaa : Stagiaire | Kamal : Infra Digitale | Ahmed : M104 | |
| Kamal : Stagiaire | Ahmed : M106 | ||
| Laila : Formateur | Ahmed : M202 | ||
| Laila : M105, M107, M201 |
Pour compter les formateurs, la base lit seulement la colonne Type.
Exemples : BigTable (Google), HBase (Apache), Cassandra (Apache, créée par Facebook). Le résumé cite aussi Spark SQL et Elasticsearch : ce sont plutôt un moteur de calcul et un moteur de recherche, qui utilisent un stockage par colonnes.
4. Les bases de données orientées graphe
- Elles reposent sur la théorie des graphes : des nœuds (les objets) reliés par des arcs (les relations).
- Elles sont conçues pour les données fortement connectées, avec un nombre de relations inconnu à l'avance (les réseaux sociaux, par exemple).
- C'est le type le plus proche du monde réel.
Exemple : les nœuds Ahmed (Formateur), Sanaa et Kamal (Stagiaires), Laila (Formatrice) sont reliés aux nœuds Dev Digital, Infra Digitale, Mobile et aux modules M102, M105, M201, M202. On peut demander : « quels stagiaires suivent un module enseigné par Ahmed ? » en suivant les arcs.
La principale solution est Neo4j.
Vidéo · À regarder
FRBase de données : Introduction au NoSQL
Algomius · YouTube
Ce que tu vas voir (24 min) : les chapitres « Les grandes familles de bases NoSQL », « Le modèle clé-valeur », « Le modèle orienté colonnes », « Le modèle document », « Le modèle graphe ». Le formateur présente les grandes familles de bases NoSQL, puis détaille chaque modèle avec un exemple : clé-valeur, orienté colonnes, document et graphe, dans le même ordre que la section.
Leçon 5
Comparer les différents types de bases de données NoSQL
| Riak (clé / valeur) | MongoDB (document) | Cassandra (colonne) | HBase (colonne) | |
|---|---|---|---|---|
| Coût | + | ++ | ++ | ++ |
| Cohérence | + | ++ | + | + |
| Disponibilité | ++ | + | ++ | ++ |
| Langage d'interrogation | ++ | ++ | + | ++ |
| Points forts | très disponible, langage de requêtes performant, adapté au cloud | la plus populaire, structure souple, bonnes performances, favorise la cohérence | solution mature et populaire, excellente pour les grands volumes et les bases distribuées | destinée aux données volumineuses, privilégie la disponibilité à la cohérence, mais langage réduit |
Pourquoi choisir MongoDB ?
MongoDB vient de humongous (« gigantesque ») : une base de données gigantesque. C'est la base NoSQL la plus populaire, grâce à ces points forts :
- elle est orientée document et open source ;
- elle se met à l'échelle automatiquement (scalabilité automatique) ;
- elle assure une haute performance et une bonne disponibilité ;
- elle se place du côté CP du théorème CAP : elle choisit la cohérence et la résistance au partitionnement ;
- elle communique facilement avec les langages courants (Java, JavaScript, PHP, Python…) ;
- elle fonctionne sur plusieurs plateformes (machine virtuelle, cloud…) ;
- elle garde les fonctionnalités essentielles des bases relationnelles (index, requêtes riches, agrégations, transactions).
Sa popularité vient de son adoption massive par les développeurs du monde entier, et de sa facilité d'intégration dans toute application qui manipule des documents ou des objets. Le classement DB-Engines (db-engines.com) la place en tête des bases orientées document.
Vidéo · À regarder
FRBase de données : MongoDB - Installation
Algomius · YouTube
Ce que tu vas voir (5 min) : le chapitre « Mongo, c'est quoi ? ». Le formateur présente MongoDB : une base orientée document, ses points forts et son vocabulaire de départ.
TP · Préparer la boutique en NoSQL
Dans la partie 1, la boutique eshop_app_db avait les tables clients, categorie, produit, commandes et ligne_commande. Sur papier :
- Dessine comment tu rangerais une commande de Zaki Fatima (2 produits : un PC portable HP à 7 490 DH et une souris à 120 DH) en un seul document JSON.
- Quelles jointures SQL disparaissent ?
- Quelle information est maintenant dupliquée si Fatima passe une deuxième commande ?
Exercices
QCM : découvrir le NoSQL
1NoSQL signifie…
2Les 3V du Big Data sont…
3Ajouter des serveurs pour absorber la charge, c'est la scalabilité…
4Le théorème CAP dit qu'une base distribuée garantit au plus…
5Le « E » de BASE signifie…
6Le type NoSQL le plus simple est…
7MongoDB est une base orientée…
8Pour un réseau social (amis d'amis), le type le plus adapté est…
9Neo4j est une base…
10Un inconvénient du NoSQL est…
SQL ou NoSQL ?
Pour chaque besoin, dis si tu choisirais plutôt une base SQL ou NoSQL, et quel type de NoSQL le cas échéant. Justifie en une phrase.
- Les comptes bancaires et les virements d'une banque.
- Le panier et la session de millions de visiteurs d'un site (lecture très rapide par identifiant).
- Un catalogue de produits très variés (un téléphone n'a pas les mêmes caractéristiques qu'un tee-shirt).
- Les relations « ami de » et « suit » d'un réseau social.
- Des statistiques de ventes sur des milliards de lignes (sommes et moyennes par colonne).
Le théorème CAP
Une application de réservation de places de concert tourne sur deux serveurs, à Casablanca et à Agadir. Le réseau entre les deux est coupé pendant 10 minutes. Explique ce qui se passe si la base est CP, puis si elle est AP. Laquelle choisirais-tu pour éviter de vendre deux fois la même place ?
L'essentiel du chapitre
À retenir
- NoSQL = Not Only SQL : des bases qui n'utilisent pas le modèle relationnel, nées au milieu des années 2000 pour le Big Data (Volume, Vélocité, Variété).
- Avantages : simple, objets stockés directement, open source, ajout de serveurs facile, pas de jointures. Inconvénients : pas de clé étrangère, cohérence à gérer dans le programme, requêtes incompatibles avec SQL.
- SQL : schéma strict, scalabilité verticale, ACID. NoSQL : sans schéma, scalabilité horizontale, BASE.
- CAP : Cohérence, Disponibilité, résistance au Partitionnement ; on en garde deux au plus. MongoDB est CP.
- Quatre types : clé-valeur (Redis, DynamoDB, Riak), document (MongoDB, CouchDB), colonne (HBase, Cassandra), graphe (Neo4j).