Présentation 1 : SQL vs NoSQL + Introduction
Partie 1 : Rappel SQL et ses limites
• Slide 1 : Architecture des bases de données relationnelles
• Slide 2 : Propriétés ACID (Atomicité, Cohérence, Isolation, Durabilité)
• Slide 3 : Normalisation et schémas rigides
• Slide 4 : Limites du SQL : scalabilité verticale, rigidité, performances
Partie 2 : Différences SQL vs NoSQL
• Slide 5 : Tableau comparatif : Structure des données (schéma fixe vs flexible)
• Slide 6 : Scalabilité : Verticale (SQL) vs Horizontale (NoSQL)
• Slide 7 : Transactions : ACID vs BASE (Basically Available, Soft state, Eventually
consistent)
• Slide 8 : Cas d'usage : Quand utiliser SQL vs NoSQL
Partie 3 : Caractéristiques des bases NoSQL
• Slide 9 : Définition et origine de NoSQL (Not Only SQL)
• Slide 10 : Schéma flexible et semi-structuré
• Slide 11 : Scalabilité horizontale et distribution
• Slide 12 : Haute disponibilité et réplication
Partie 4 : Le Théorème CAP
• Slide 13 : Définition du théorème CAP
◦ Consistency (Cohérence)
◦ Availability (Disponibilité)
◦ Partition tolerance (Tolérance au partitionnement)
• Slide 14 : Compromis impossibles : choisir 2 sur 3
• Slide 15 : Exemples de systèmes CP, AP, CA
Partie 5 : Types de bases NoSQL
• Slide 16 : Vue d'ensemble des 4 modèles NoSQL
• Slide 17 : Bases orientées Document (MongoDB, CouchDB)
• Slide 18 : Bases Clé-Valeur (Redis, DynamoDB)
• Slide 19 : Bases orientées Colonnes (Cassandra, HBase)
• Slide 20 : Bases de Graphes (Neo4j, OrientDB)
Partie 6 : Options de déploiement
• Slide 21 : Déploiement on-premise vs Cloud
• Slide 22 : Solutions managées (MongoDB Atlas, AWS DynamoDB, Azure
Cosmos DB)
• Slide 23 : Architectures hybrides
Partie 7 : Bases de données distribuées
• Slide 24 : Principes des systèmes distribués
• Slide 25 : Sharding (partitionnement horizontal)
• Slide 26 : Réplication et cohérence éventuelle
• Slide 27 : Stratégies de réplication (Master-Slave, Multi-Master)
Présentation 2 : Modèle Document (MongoDB)
Partie 1 : Introduction au modèle Document
• Slide 1 : Qu'est-ce qu'un document ? (JSON/BSON)
• Slide 2 : Structure hiérarchique et imbriquée
• Slide 3 : Collections vs Tables SQL
• Slide 4 : Documents vs Lignes SQL
Partie 2 : Présentation de MongoDB
• Slide 5 : Histoire et évolution de MongoDB
• Slide 6 : Architecture de MongoDB (mongod, mongos, replica sets)
• Slide 7 : Écosystème MongoDB (Atlas, Compass, Shell)
Partie 3 : Avantages de MongoDB
• Slide 8 : Flexibilité du schéma
• Slide 9 : Performance pour les lectures/écritures
• Slide 10 : Scalabilité horizontale native
• Slide 11 : Requêtes riches et indexation avancée
• Slide 12 : Support des données géospatiales
Partie 4 : Cas d'utilisation de MongoDB
• Slide 13 : Applications web et mobile
• Slide 14 : Gestion de contenu (CMS)
• Slide 15 : Catalogues de produits e-commerce
• Slide 16 : Analytique temps réel
• Slide 17 : IoT et données de capteurs
Partie 5 : Installation et configuration
• Slide 18 : Installation sur Windows/Linux/MacOS
• Slide 19 : Configuration du serveur MongoDB
• Slide 20 : MongoDB Compass (interface graphique)
• Slide 21 : MongoDB Shell (ligne de commande)
Partie 6 : Connexion et création de base
• Slide 22 : Se connecter à MongoDB
• Slide 23 : Créer une base de données
• Slide 24 : Créer une collection
• Slide 25 : Visualiser les bases et collections
Partie 7 : Comparaison avec SQL
• Slide 26 : Tableau de correspondance (Database, Table, Row, Column)
• Slide 27 : Exemple de modélisation : SQL vs Document
• Slide 28 : Dénormalisation dans MongoDB
Présentation 3 : Modèle Clé-Valeur (Redis)
Partie 1 : Introduction au modèle Clé-Valeur
• Slide 1 : Principe du modèle Clé-Valeur
• Slide 2 : Simplicité et performance
• Slide 3 : Comparaison avec une HashMap/Dictionary
Partie 2 : Présentation de Redis
• Slide 4 : Redis : REmote DIctionary Server
• Slide 5 : Architecture en mémoire (in-memory)
• Slide 6 : Persistance des données (RDB, AOF)
Partie 3 : Structures de données Redis
• Slide 7 : Strings (chaînes de caractères)
• Slide 8 : Lists (listes)
• Slide 9 : Sets (ensembles)
• Slide 10 : Sorted Sets (ensembles triés)
• Slide 11 : Hashes (tables de hachage)
• Slide 12 : Bitmaps et HyperLogLog
Partie 4 : Cas d'usage Redis
• Slide 13 : Cache applicatif (réduction de charge BDD)
• Slide 14 : Gestion de sessions utilisateur
• Slide 15 : File d'attente de messages (Queue)
• Slide 16 : Pub/Sub (publication/abonnement)
• Slide 17 : Compteurs et statistiques temps réel
• Slide 18 : Leaderboards (classements)
Partie 5 : Installation et commandes de base
• Slide 19 : Installation Redis
• Slide 20 : Redis CLI (interface ligne de commande)
• Slide 21 : Commandes SET, GET, DEL
• Slide 22 : Commandes EXPIRE, TTL (Time To Live)
• Slide 23 : Commandes pour Lists (LPUSH, RPUSH, LPOP, RPOP)
• Slide 24 : Commandes pour Sets et Hashes
Partie 6 : Exemples pratiques
• Slide 25 : Exercice 1 : Cache de profils utilisateur
• Slide 26 : Exercice 2 : Compteur de vues de page
• Slide 27 : Exercice 3 : Système de like/dislike
Partie 7 : Comparaison avec SQL
• Slide 28 : Limites du modèle Clé-Valeur
• Slide 29 : Quand utiliser Redis vs SQL
• Slide 30 : Architecture hybride : Redis + SQL
Présentation 4 : Modèle Colonnes (Cassandra)
Partie 1 : Introduction au modèle orienté Colonnes
• Slide 1 : Principe du stockage orienté colonnes
• Slide 2 : Différence avec le stockage orienté lignes (Row-based)
• Slide 3 : Column Family (famille de colonnes)
• Slide 4 : Avantages pour l'analytique et Big Data
Partie 2 : Présentation de Cassandra
• Slide 5 : Histoire de Cassandra (Facebook, Apache)
• Slide 6 : Architecture distribuée de Cassandra
• Slide 7 : Concept de nœuds et clusters
• Slide 8 : Pas de Single Point of Failure
Partie 3 : Modèle de données Cassandra
• Slide 9 : Keyspace (équivalent de Database)
• Slide 10 : Tables et Column Families
• Slide 11 : Partition Key et Clustering Key
• Slide 12 : Wide Row Pattern
Partie 4 : Caractéristiques de Cassandra
• Slide 13 : Haute disponibilité (99.99%)
• Slide 14 : Scalabilité linéaire
• Slide 15 : Tolérance aux pannes
• Slide 16 : Cohérence ajustable (tunable consistency)
Partie 5 : Cas d'usage Cassandra
• Slide 17 : Séries temporelles (Time Series)
• Slide 18 : IoT et données de capteurs
• Slide 19 : Logs et événements
• Slide 20 : Messagerie et historique de conversations
• Slide 21 : Recommandations et personnalisation
Partie 6 : CQL (Cassandra Query Language)
• Slide 22 : Syntaxe similaire à SQL
• Slide 23 : CREATE KEYSPACE et CREATE TABLE
• Slide 24 : INSERT, SELECT, UPDATE, DELETE
• Slide 25 : Limitations de CQL (pas de JOIN)
Partie 7 : Comparaison avec SQL
• Slide 26 : Tableau comparatif SQL vs Cassandra
• Slide 27 : Quand utiliser Cassandra
• Slide 28 : Exemples de grandes entreprises utilisant Cassandra (Netflix, Apple)
Présentation 5 : Modèle Graphe (Neo4j)
Partie 1 : Introduction aux bases de données de graphes
• Slide 1 : Qu'est-ce qu'un graphe ? (Nœuds et Relations)
• Slide 2 : Théorie des graphes : concepts de base
• Slide 3 : Propriétés des nœuds et des relations
• Slide 4 : Graphes orientés vs non-orientés
Partie 2 : Présentation de Neo4j
• Slide 5 : Neo4j : la base de graphes la plus populaire
• Slide 6 : Architecture de Neo4j
• Slide 7 : Neo4j Browser (interface web)
• Slide 8 : Property Graph Model
Partie 3 : Modèle de données Neo4j
• Slide 9 : Nœuds (Nodes) et labels
• Slide 10 : Relations (Relationships) et types
• Slide 11 : Propriétés (Properties)
• Slide 12 : Exemple de modélisation : Réseau social
Partie 4 : Langage Cypher
• Slide 13 : Introduction à Cypher
• Slide 14 : CREATE : créer des nœuds et relations
• Slide 15 : MATCH : rechercher des patterns
• Slide 16 : WHERE : filtrer les résultats
• Slide 17 : RETURN : retourner les résultats
• Slide 18 : DELETE et REMOVE
• Slide 19 : Requêtes de traversée de graphe
Partie 5 : Cas d'usage Neo4j
• Slide 20 : Réseaux sociaux (amis, followers)
• Slide 21 : Systèmes de recommandation
• Slide 22 : Détection de fraude
• Slide 23 : Gestion de connaissances (Knowledge Graph)
• Slide 24 : Routage et navigation
• Slide 25 : Gestion de dépendances et impact analysis
Partie 6 : Exemples pratiques
• Slide 26 : Exercice 1 : Créer un réseau d'amis
• Slide 27 : Exercice 2 : Trouver les amis d'amis
• Slide 28 : Exercice 3 : Système de recommandation de produits
Partie 7 : Comparaison avec SQL
• Slide 29 : Complexité des JOIN vs traversée de graphe
• Slide 30 : Quand utiliser Neo4j vs SQL
• Slide 31 : Performance : relations complexes
Présentation 6 : MongoDB Approfondi - CRUD, Index,
Agrégation
Partie 1 : Opérations CRUD
• Slide 1 : Rappel : Create, Read, Update, Delete
• Slide 2 : insertOne() et insertMany()
• Slide 3 : find() : recherche de documents
• Slide 4 : Opérateurs de requête ($eq, $ne, $gt, $lt, $in, etc.)
• Slide 5 : Opérateurs logiques ($and, $or, $not)
• Slide 6 : updateOne(), updateMany(), replaceOne()
• Slide 7 : Opérateurs de modification ($set, $unset, $inc, $push, etc.)
• Slide 8 : deleteOne() et deleteMany()
• Slide 9 : Exercices pratiques CRUD
Partie 2 : Projection et tri
• Slide 10 : Projection : sélectionner des champs spécifiques
• Slide 11 : sort() : trier les résultats
• Slide 12 : limit() et skip() : pagination
Partie 3 : Index
• Slide 13 : Pourquoi indexer ? Performance des requêtes
• Slide 14 : Types d'index : Single Field, Compound, Multikey
• Slide 15 : createIndex() : créer un index
• Slide 16 : Index unique (unique: true)
• Slide 17 : Index géospatiaux (2dsphere)
• Slide 18 : Index texte (text search)
• Slide 19 : getIndexes() et dropIndex()
• Slide 20 : explain() : analyser les performances
Partie 4 : Framework d'Agrégation
• Slide 21 : Concept de pipeline d'agrégation
• Slide 22 : Structure : aggregate([stage1, stage2, ...])
• Slide 23 : $match : filtrer les documents
• Slide 24 : $group : regrouper et calculer
• Slide 25 : Accumulateurs ($sum, $avg, $min, $max, $push)
• Slide 26 : $project : transformer les documents
• Slide 27 : $sort et $limit dans le pipeline
• Slide 28 : $lookup : jointures (similar to JOIN)
• Slide 29 : $unwind : dérouler les tableaux
• Slide 30 : Autres stages utiles ($addFields, $replaceRoot, $facet)
Partie 5 : Comparaison Agrégation vs GROUP BY SQL
• Slide 31 : Équivalence avec GROUP BY SQL
• Slide 32 : Exemples comparatifs SQL vs MongoDB
• Slide 33 : Avantages du pipeline MongoDB
Partie 6 : Accès depuis Python
• Slide 34 : Installation de PyMongo (pip install pymongo)
• Slide 35 : Connexion à MongoDB depuis Python
• Slide 36 : Opérations CRUD en Python
• Slide 37 : Agrégation en Python
• Slide 38 : Gestion des erreurs et exceptions
Partie 7 : Accès depuis Java
• Slide 39 : MongoDB Java Driver
• Slide 40 : Configuration Maven/Gradle
• Slide 41 : Connexion et opérations CRUD en Java
• Slide 42 : Exemple d'application Java + MongoDB
Partie 8 : Accès depuis PHP
• Slide 43 : Installation de l'extension MongoDB PHP
• Slide 44 : Connexion à MongoDB depuis PHP
• Slide 45 : Opérations CRUD en PHP
• Slide 46 : Exemple d'application web PHP + MongoDB
Présentation 7 : Synthèse Comparative + Travail de Synthèse
Partie 1 : Récapitulatif des 4 modèles NoSQL
• Slide 1 : Vue d'ensemble des 4 modèles
• Slide 2 : Modèle Document : caractéristiques principales
• Slide 3 : Modèle Clé-Valeur : caractéristiques principales
• Slide 4 : Modèle Colonnes : caractéristiques principales
• Slide 5 : Modèle Graphe : caractéristiques principales
Partie 2 : Tableau comparatif détaillé
• Slide 6 : Comparaison : Structure de données
• Slide 7 : Comparaison : Scalabilité
• Slide 8 : Comparaison : Performance
• Slide 9 : Comparaison : Cohérence et disponibilité (CAP)
• Slide 10 : Comparaison : Langages de requête
• Slide 11 : Comparaison : Cas d'usage principaux
Partie 3 : Critères de choix d'une base de données
• Slide 12 : Nature des données (structurées, semi-structurées)
• Slide 13 : Volume de données et croissance
• Slide 14 : Patterns d'accès (lecture vs écriture)
• Slide 15 : Exigences de cohérence
• Slide 16 : Complexité des relations
• Slide 17 : Compétences de l'équipe
Partie 4 : Architecture Polyglot Persistence
• Slide 18 : Concept de Polyglot Persistence
• Slide 19 : Utiliser plusieurs types de bases dans une application
• Slide 20 : Exemple d'architecture : SQL + Redis + MongoDB
• Slide 21 : Avantages et défis de cette approche
Partie 5 : Études de cas réels
• Slide 22 : E-commerce : utilisation de MongoDB + Redis
• Slide 23 : Réseau social : Neo4j + Cassandra
• Slide 24 : IoT : Cassandra pour séries temporelles
• Slide 25 : Application mobile : MongoDB + Redis
Partie 6 : Préparation à l'examen
• Slide 26 : Points clés à retenir sur chaque modèle
• Slide 27 : Exercices de révision
Partie 7 : Travail de Synthèse