Sécurité, performance et scalabilité

Se connecter pour s'inscrire

Votre progression

Continuez pour débloquer la suite !
0 / 0 étapes complétées 0
%

Syllabus

  1. Description

  2. Objectifs

  3. Validations de compétences

  4. Public cible

    Aucun public cible spécifié pour ce module.

  5. Besoins techniques

  6. Prérequis

    • Aucun prérequis
  7. Niveau

  8. Historique du module

    Aucune action enregistrée

Sécurité, performance et scalabilité

  1. Sécurité et sujets avancés

    1. Sécurité dans MongoDB

      Contrôle d’accès et authentification

      • RBAC (Role-Based Access Control) : gestion fine des droits par rôle (lecture, écriture, admin…)
      • Création d’utilisateurs, attribution de rôles.

      Chiffrement

      • Chiffrement des données au repos (at rest) : encryptionAtRest
      • Chiffrement en transit (TLS/SSL) : sécurise les connexions réseau.

      Protection contre les injections NoSQL

      • Valider et nettoyer les entrées utilisateur.
      • Utiliser des requêtes paramétrées.
    2. Optimisation des performances

      Analyse des requêtes

      • Utilisation de explain() pour comprendre le plan d’exécution.
      • Détection des requêtes lentes avec MongoDB Profiler.

      Indexation avancée

      • Index composés, textuels, géospatiaux.
      • Optimiser la structure des index pour les requêtes fréquentes.

      Paramètres serveur

      • Ajuster la taille de la mémoire, le cache, le nombre de connexions pour la production.
    3. Administration et maintenance

      Sauvegardes et restaurations

      • mongodump et mongorestore pour exporter/importer des bases.

      Monitoring

      • MongoDB Ops Manager : supervision, alertes, automatisation.
      • Prometheus : monitoring avancé, intégration avec Grafana.

      Automatisation

      • MongoDB Atlas CLI : gestion cloud, déploiements, backups, scaling automatique.
    4. MongoDB Atlas et cloud

      Déploiement cloud

      • Création de clusters en quelques clics, multi-cloud, multi-région.

      Fonctionnalités avancées

      • Serverless Instances, Data Lake, sauvegardes automatiques, scaling dynamique.
    5. Quiz interactif


      1. A. RBAC
        B. SQL Grant
        C. OAuth2

      2. A. explain()
        B. aggregate()
        C. findOne()

      3. A. mongodump
        B. mongosave
        C. backupdb

      4. A. Data Lake
        B. Serverless Instances
        C. Atlas CLI

      5. A. Prometheus
        B. Ops Manager
        C. mongotop
  2. Scalabilité et haute disponibilité

    Scalabilité et haute disponibilité avec MongoDB

    Sharding (partitionnement horizontal)

    • Permet de répartir les données sur plusieurs serveurs (shards) pour gérer des volumes massifs.
    • Chaque shard contient une partie des données, le balancement est automatique.
    • Types de sharding : ranged (par plage de valeurs), hashed (par hash de la clé de sharding).
    • Le mongos route les requêtes vers les bons shards.
    # Ex : création d’un sharded cluster (simplifié)
    sh.enableSharding("maDB")
    sh.shardCollection("maDB.utilisateurs", { "_id": "hashed" })
    

    Réplication (Replica Set)

    • Assure la tolérance aux pannes et la haute disponibilité.
    • Un Replica Set = 1 primaire (écriture), plusieurs secondaires (lecture, backup).
    • Failover automatique en cas de panne du primaire.
    # Ex : initialisation d’un Replica Set
    rs.initiate({
      _id: "rs0",
      members: [
        { _id: 0, host: "mongo1:27017" },
        { _id: 1, host: "mongo2:27017" },
        { _id: 2, host: "mongo3:27017" }
      ]
    })
    

    Indexation avancée

    • Optimise les requêtes sur de gros volumes.
    • Types : index composé, textuel (recherche plein texte), géospatial.
    • Exemple : db.utilisateurs.createIndex({ nom: 1, age: -1 })

    Lab : Cluster shardé local avec Docker

    1. Télécharge le repo Docker MongoDB Sharded Cluster.
    2. Lance le cluster avec docker-compose up -d
    3. Connecte-toi au mongos et vérifie le sharding : sh.status()
    4. Teste la tolérance aux pannes en arrêtant un conteneur shard ou replica.

    Quiz interactif


    1. A. Répliquer les données
      B. Distribuer les données
      C. Sauvegarder les données

    2. A. Config Server
      B. Replica Set
      C. Mongos

    3. A. Rien
      B. Un secondary devient primary
      C. Les données sont perdues

    4. A. Répartir les chunks entre shards
      B. Sauvegarder les données
      C. Gérer les index

    5. A. Forte cohérence
      B. Éventuelle (eventual consistency)
      C. Aucune

    6. A. rs.status()
      B. db.serverStatus()
      C. sh.status()

    7. A. Perte de données
      B. Déséquilibre de charge
      C. Problème d’authentification

    8. A. Mongos
      B. Config Server
      C. Mongod

    9. A. rs.add("host:port")
      B. sh.addShard()
      C. db.addSecondary()

    10. A. Cluster optimal
      B. Goulot d’étranglement et surcharge
      C. Données perdues

Exercices, examens et projets

Exercice

Atelier MongoDB

Concevoir un schéma documentaire et manipuler une collection.

Obligatoire Consulter
Examen

Examen MongoDB

Évaluer les requêtes, agrégations, indexations et transactions.

Obligatoire Consulter
Projet

Projet MongoDB

Développer une API documentaire avec données de démonstration.

Livrables :

  • Schéma
  • API
  • Jeu de données
Obligatoire Consulter