Bases de données NoSQL
Mehdi MUNIM
Mehdi MUNIM, [Link]@[Link] 1
Objectifs du cours (cf. IA School)
➢ Comprendre le NoSQL (not only SQL) et son intérêt
➢ Prendre en main MongoDB
○ Installation local
○ Interface graphique (Studio3T)
○ Shell MongoDB
○ Opérations CRUD (Create, Read, Update, Delete)
○ Agrégation
➢ Découvrir des concepts plus avancés :
○ ReplicaSet & Sharding
○ Bases de données orientées colonnes
○ BDD clés-valeurs
○ BDD graphe (Neo4j)
Mehdi MUNIM, [Link]@[Link] 2
Organisation des 3 journées
5 activités :
- TP1 : Prise en main, fonctionnalités
- TP2 : Mise en application
- TP3 : ReplicaSet
- TP4 : Mini-projet
- Exposés
Mehdi MUNIM, [Link]@[Link] 3
Pourquoi le NoSQL ?
Mehdi MUNIM, [Link]@[Link] 4
Les 3V du Big Data Raison 1
● Volume de données :
Les entreprises collectent des quantités
massives de données provenant de sources
diverses.
● Variété des données :
Les données ne sont plus seulement
structurées, mais aussi semi-structurées et non
structurées (texte, images, vidéos, etc.).
● Vitesse de génération des données :
Les données sont générées à un rythme
effréné, notamment avec l'essor des médias
sociaux et de l'IoT.
Mehdi MUNIM, [Link]@[Link] 5
Limites des bases de données relationnelles Raison 2
● Scalabilité limitée :
Difficulté à gérer de très grandes quantités de
données et à faire face à une forte charge.
● Rigidité du schéma :
Les schémas rigides des bases de données
relationnelles peuvent être contraignants pour les
applications modernes.
● Performance limitée :
Les bases de données relationnelles peuvent être
moins performantes pour les requêtes analytiques et
les opérations sur de grands ensembles de données.
Mehdi MUNIM, [Link]@[Link] 6
Solution : NoSQL
NoSQL (Not Only SQL) désigne une variété de systèmes de gestion
de bases de données non relationnelles.
Caractéristiques principales:
➢ Pas de schéma fixe prédéfini, les données peuvent avoir des
structures différentes.
➢ Capacité à gérer des volumes de données massifs et un trafic
important en ajoutant des serveurs.
➢ Haute disponibilité et tolérance aux pannes grâce à la
distribution des données.
Mehdi MUNIM, [Link]@[Link] 7
Cas d’usage du NoSQL
Applications web et mobiles à grande échelle :
Lorsque vous devez gérer un grand nombre d'utilisateurs et de données, avec une forte charge et des besoins
de scalabilité.
Réseaux sociaux :
Pour modéliser les relations entre les utilisateurs et gérer les interactions sociales.
Internet des objets (IoT) :
Pour stocker et analyser les données générées par des millions de capteurs et d'appareils connectés.
Analyse de données et Big Data :
Pour traiter et analyser de grands ensembles de données, identifier des tendances et extraire des
informations.
Mehdi MUNIM, [Link]@[Link] 8
Bases de Données NoSQL
Mehdi MUNIM, [Link]@[Link] 9
4 types de NoSQL
Mehdi MUNIM, [Link]@[Link] 10
Base de données clé-valeur (1)
Mehdi MUNIM, [Link]@[Link] 11
Bases de Données Clé-Valeur
Principe : Stockage simple et efficace basé sur une association unique entre une clé et
une valeur. Un immense dictionnaire où chaque mot (clé) a une définition (valeur).
Fonctionnement :
● Chaque donnée est stockée avec une clé unique qui permet de la retrouver
rapidement.
● Les valeurs peuvent être de n'importe quel type (texte, nombre, image, objet
sérialisé, etc.).
● Opérations basiques : GET (lire une valeur), PUT (écrire une valeur), DELETE
(supprimer une valeur).
Mehdi MUNIM, [Link]@[Link] 12
Cas d’utilisation
● Cache : Stockage de données fréquemment accédées en mémoire pour
améliorer les performances des applications.
● Sessions : Gestion des sessions utilisateur dans les applications web.
● Files d'attente : Gestion des tâches asynchrones.
● Panier d'achat : Stockage temporaire des articles sélectionnés par les
utilisateurs.
Mehdi MUNIM, [Link]@[Link] 13
Exemple : Session utilisateur
"1001" -> {"nom": "Jean Dupont", "email": "[Link]@[Link]", "age": 30}
"1002" -> {"nom": "Marie Martin", "email": "[Link]@[Link]", "age": 28}
"5001" -> {"nom": "Smartphone", "prix": 599.99, "stock": 100}
"5002" -> {"nom": "Ordinateur portable", "prix": 999.99, "stock": 50}
"abc123" -> {"id_utilisateur": 1001, "heure_connexion": "2024-11-29T[Link]Z"}
Mehdi MUNIM, [Link]@[Link] 14
Exemple : Session utilisateur valeur (objet avec attributs)
"1001" -> {"nom": "Jean Dupont", "email": "[Link]@[Link]", "age": 30}
"1002" -> {"nom": "Marie Martin", "email": "[Link]@[Link]", "age": 28}
"5001" -> {"nom": "Smartphone", "prix": 599.99, "stock": 100}
"5002" -> {"nom": "Ordinateur portable", "prix": 999.99, "stock": 50}
"abc123" -> {"id_utilisateur": 1001, "heure_connexion": "2024-11-29T[Link]Z"}
clé (identifiant unique)
Mehdi MUNIM, [Link]@[Link] 15
Exemples de bases de données
Mehdi MUNIM, [Link]@[Link] 16
Base de données en graphe (2)
Mehdi MUNIM, [Link]@[Link] 17
Bases de Données Orientées Graphes
Représentation des données sous forme de :
- nœuds (entités)
- relations (liens entre les entités).
Les nœuds et les relations peuvent avoir des propriétés.
Idéal pour modéliser des réseaux et des relations complexes.
Mehdi MUNIM, [Link]@[Link] 18
Modélisation
● Identifier les entités (nœuds) et les relations.
● Définir les propriétés des nœuds et des relations.
● Exemple :
Utilisateur Utilisateur
Nom Nom
Âge Ami Âge
Mehdi MUNIM, [Link]@[Link] 19
Base de
données Films
Mehdi MUNIM, [Link]@[Link] 20
Autres cas d’utilisation
➢ Réseaux sociaux :
Modélisation des relations entre les utilisateurs.
➢ Recommandations :
Analyse des connexions pour proposer des produits ou des services pertinents.
➢ Détection de fraude :
Identification de schémas suspects dans les transactions.
➢ Gestion de la connaissance :
Représentation des relations entre les concepts et les idées.
Mehdi MUNIM, [Link]@[Link] 21
SGBD Orientés Graphe
Mehdi MUNIM, [Link]@[Link] 22
Base de données en colonnes (3)
Mehdi MUNIM, [Link]@[Link] 23
Bases de Données en Colonnes
Principe : Stockage des données par colonnes plutôt que par lignes (comme dans
les bases de données relationnelles). Optimisé pour les requêtes analytiques et le
traitement de grands volumes de données.
Fonctionnement :
● Accès rapide aux données d'une même colonne.
● Compression efficace des données.
● Agrégations rapides sur de grands ensembles de données.
Mehdi MUNIM, [Link]@[Link] 24
Cas d’utilisation
➢ Analyse de données :
Exploration de grands ensembles de données pour identifier des tendances.
➢ Entrepôts de données :
Stockage de données historiques pour l'analyse et le reporting.
➢ Applications financières :
Analyse des transactions, détection de fraude.
Mehdi MUNIM, [Link]@[Link] 25
Modélisation
● Organiser les données en tables avec des familles de colonnes.
● Définir les clés de ligne pour accéder aux données.
Mehdi MUNIM, [Link]@[Link] 26
Mehdi MUNIM, [Link]@[Link] 27
SGBD orientés colonnes
Mehdi MUNIM, [Link]@[Link] 28
Base de données en document (4)
Mehdi MUNIM, [Link]@[Link] 29
Bases de Données Orientées Documents
Principe : Stockage de documents contenant des données semi-structurées,
souvent au format JSON ou XML. Chaque document est indépendant et peut
avoir une structure différente.
Fonctionnement :
● Les documents sont regroupés en collections.
● Chaque document a un identifiant unique.
● Flexibilité : Pas besoin de définir un schéma fixe pour tous les documents.
Mehdi MUNIM, [Link]@[Link] 30
Cas d’utilisation
➢ Applications web et mobiles :
Stockage de données utilisateur, de contenu, de produits.
➢ Gestion de contenu (CMS) :
Stockage d'articles, de blogs, de commentaires.
➢ E-commerce :
Gestion des catalogues produits, des commandes, des clients.
Mehdi MUNIM, [Link]@[Link] 31
Modélisation
● Représenter les données sous forme de documents JSON ou XML.
● Organiser les documents en collections logiques.
● Exemple : { "nom": "Produit A", "description": "...", "prix": 19.99 }
Mehdi MUNIM, [Link]@[Link] 32
2 documents d’une collection “étudiants”
Mehdi MUNIM, [Link]@[Link] 33
2 documents d’une collection “étudiants”
Les documents sont
indépendants
Mehdi MUNIM, [Link]@[Link] 34
SGBD Orientés Document
Mehdi MUNIM, [Link]@[Link] 35
Zoom sur MongoDB
humongous (en) : énorme, gigantesque
Mehdi MUNIM, [Link]@[Link] 36
Introduction à MongoDB
MongoDB est une base de données NoSQL qui stocke les données dans des documents flexibles,
similaires à des objets JSON (BSON)
⇒ Largement utilisée par les développeurs pour sa facilité d'utilisation et sa scalabilité.
Avantages Clés :
● Schéma flexible : Pas besoin de structure de données fixe.
● Scalabilité : Gère facilement de gros volumes de données.
● Haute disponibilité : Réplication pour la tolérance aux pannes.
● Performance : Requêtes rapides et efficaces.
Mehdi MUNIM, [Link]@[Link] 37
Structure des Données
Documents : Unités fondamentales de stockage, contenant des paires clé-valeur.
● Format BSON (Binary JSON) : Similaire à JSON, mais plus efficace.
● Exemple :
{ "nom": "Jean Dupont", "age": 30, "ville": "Paris" }
Collections : Groupes de documents, comme des tables dans SQL, mais sans schéma fixe.
● Exemple : "utilisateurs", "produits", "commandes".
Mehdi MUNIM, [Link]@[Link] 38
Opérations de Base (CRUD)
MongoDB Query Language (MQL) : Langage de requête puissant et flexible.
Opérations CRUD :
● Création (Create) : [Link]()
● Lecture (Read) : [Link].find()
● Mise à Jour (Update) : [Link]()
● Suppression (Delete) : [Link]()
Mehdi MUNIM, [Link]@[Link] 39
Interface graphique via Studio3T
Mehdi MUNIM, [Link]@[Link] 40
Installation de MongoDB : [Link]
Installation de Studio3T : [Link]
Mehdi MUNIM, [Link]@[Link] 41
TP1 - Prise en main de MongoDB :
[Link]
Mehdi MUNIM, [Link]@[Link] 42
Agrégation en MongoDB
Mehdi MUNIM, [Link]@[Link] 43
Introduction à l'agrégation
Définition :
L'agrégation est un framework puissant dans MongoDB qui permet de traiter des
données et de renvoyer des résultats calculés.
Fonctionnement :
L'agrégation utilise un pipeline d'étapes qui transforment les documents étape par
étape.
Analogie :
Imaginez une chaîne de production dans une usine. Chaque étape du pipeline
transforme les documents, comme les ouvriers transforment les matières premières en
produits finis.
Mehdi MUNIM, [Link]@[Link] 44
Étapes d'agrégation courantes
$match : Filtre les documents en entrée du pipeline.
$group : Groupe les documents par un champ spécifié et calcule des valeurs agrégées
(somme, moyenne, etc.).
$sort : Trie les documents en fonction d'un ou plusieurs champs.
$unwind : Décompose un tableau en documents individuels.
$project : Sélectionne ou transforme des champs dans les documents.
$limit : Limite le nombre de documents dans la sortie.
$skip : Ignore un nombre spécifié de documents dans la sortie.
Mehdi MUNIM, [Link]@[Link] 45
Nombre d'hommes et de femmes dans votre base de données :
[Link]([
{ $group: { _id: "$gender", nombre: { $sum: 1 } } }
])
● $group: Cette étape regroupe les documents en fonction de la valeur du champ spécifié dans _id. Ici, on
regroupe par genre ($gender).
● _id: "$gender": On indique que le regroupement se fait sur le champ gender.
● nombre: { $sum: 1 }: Pour chaque groupe, on compte le nombre de documents. $sum: 1 ajoute 1 au
compteur pour chaque document du groupe.
Mehdi MUNIM, [Link]@[Link] 46
TP2 - À vous maintenant !
[Link]
Mehdi MUNIM, [Link]@[Link] 47
Mise au point : Replica Set
Mehdi MUNIM, [Link]@[Link] 48
Introduction aux Replica Sets
Un Replica Set est un groupe de serveurs MongoDB qui maintiennent le même
ensemble de données, assurant la redondance et la haute disponibilité.
Tolérance aux pannes :
Si un serveur tombe en panne, le Replica Set continue de fonctionner sans interruption
de service.
Composants :
● Nœud primaire : Reçoit toutes les écritures.
● Nœuds secondaires : Répliquent les données du nœud primaire et peuvent servir
les lectures.
Mehdi MUNIM, [Link]@[Link] 49
Mehdi MUNIM, [Link]@[Link] 50
Fonctionnement des Replica Sets
Les nœuds secondaires reçoivent un flux continu des opérations effectuées sur le nœud
primaire et les appliquent à leurs propres données (réplications)
Si le nœud primaire tombe en panne, une élection a lieu pour choisir un nouveau nœud
primaire parmi les nœuds secondaires.
Pour augmenter la capacité de lecture, les applications peuvent lire les données depuis
les nœuds secondaires.
Mehdi MUNIM, [Link]@[Link] 51
Avantages des Replica Sets
➢ Minimise les interruptions de service en cas de panne.
➢ Augmente la capacité de lecture en répartissant la charge sur plusieurs
serveurs.
➢ Permet d'effectuer la maintenance d'un serveur sans interrompre le service.
➢ Facilite la récupération des données en cas de sinistre majeur.
Mehdi MUNIM, [Link]@[Link] 52
Configuration d'un Replica Set
Minimum 3 nœuds :
Un Replica Set doit avoir au moins 3 nœuds (1 primaire et 2 secondaires) pour une
tolérance aux pannes optimale.
Configuration :
Utilisez la commande [Link]() dans le shell mongosh pour initialiser un Replica Set.
Ajout de membres :
Utilisez la commande [Link]() pour ajouter des nœuds au Replica Set.
Mehdi MUNIM, [Link]@[Link] 53
Sharding dans MongoDB
Mehdi MUNIM, [Link]@[Link] 54
Sharding
Le sharding est une méthode pour distribuer les données d'une collection
MongoDB sur plusieurs serveurs physiques, appelés "shards".
Avantages :
● Gérer des volumes de données massifs.
● Résistance aux pannes de serveur.
● Répartition de la charge de travail.
Mehdi MUNIM, [Link]@[Link] 55
Composants clés
Shard :
Un serveur MongoDB qui stocke une partie des données shardées.
Mongos (Routeur) :
Un processus qui agit comme un intermédiaire entre l'application cliente et les shards.
Il dirige les requêtes vers le shard approprié.
Config Servers :
Stockent les métadonnées du cluster sharded, notamment la configuration des shards
et le mappage des données.
Mehdi MUNIM, [Link]@[Link] 56
App Server :
Router (mongos) :
Ce sont les serveurs d'applications
qui utilisent la base de données Le routeur mongos agit
MongoDB. Ils peuvent être comme un intermédiaire entre
multiples et se connectent au les applications et les shards.
cluster via les routeurs. Il reçoit les requêtes des
applications et les dirige vers le
shard approprié.
Shard :
Un shard est un serveur
MongoDB qui stocke une
partie des données shardées. Config Servers :
Un cluster sharded doit avoir
au moins deux shards. Les serveurs de configuration
Chaque shard peut stockent les métadonnées du
également être un Replica cluster sharded.
Set pour la redondance et la Ils sont généralement configurés
tolérance aux pannes. en tant que Replica Set pour la
haute disponibilité.
Mehdi MUNIM, [Link]@[Link] 57
Clé de shard
Clé de shard : Un champ ou un ensemble de champs qui détermine comment les
documents sont répartis entre les shards.
⇒ Le choix de la clé de shard a un impact important sur les performances et l'efficacité
du sharding.
Stratégies de sharding :
● Sharding basé sur la plage : Les documents sont répartis en fonction de la plage
de valeurs de la clé de shard.
● Sharding basé sur le hachage : La clé de shard est hachée pour distribuer les
documents de manière aléatoire.
Mehdi MUNIM, [Link]@[Link] 58
Opérations courantes
shardCollection : Convertir une collection non shardée en une collection shardée.
addShard : Ajouter un nouveau shard à un cluster existant.
removeShard : Supprimer un shard d'un cluster.
balancer : Rééquilibrer les données entre les shards pour une distribution optimale.
Mehdi MUNIM, [Link]@[Link] 59
Quand utiliser le sharding ?
➢ Gros volumes de données :
Lorsque la taille des données dépasse la capacité d'un seul serveur.
➢ Charge élevée :
Lorsque le trafic de lecture/écriture est important et nécessite une distribution de
la charge.
➢ Besoin de haute disponibilité :
Lorsque la continuité de service est critique et que la tolérance aux pannes est
essentielle.
Mehdi MUNIM, [Link]@[Link] 60
TP3 - ReplicaSet sur MongoDB :
[Link]
Mehdi MUNIM, [Link]@[Link] 61
Mini-Projet - API Rest via MongoDB :
[Link]
Mehdi MUNIM, [Link]@[Link] 62
Ressources
Sites Web
● NoSQL Database Guide par ScyllaDB
● NoSQL Databases Explained par Riak
● What Is NoSQL? par Couchbase
Livres
● "Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement" par Luc Perkins,
Eric Redmond, et Jim Wilson
● "NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence" par Pramod J. Sadalage et Martin
Fowler
● "Cassandra: The Definitive Guide" par Jeff Carpenter et Eben Hewitt
Mehdi MUNIM, [Link]@[Link] 63