15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
01.11.2024
2 +1

Guide Complet de MongoDB : Installation, Fonctionnalités et Meilleures Pratiques sur un VPS

MongoDB est l’une des bases de données NoSQL les plus puissantes et les plus largement adoptées au monde — et pour de bonnes raisons. Son architecture flexible et orientée documents en fait le choix incontournable pour les développeurs qui construisent des applications modernes et gourmandes en données qui doivent évoluer rapidement. Que vous exécutiez un MVP de startup ou que vous gériez une infrastructure de niveau entreprise, MongoDB associé à un environnement d’hébergement haute performance vous offre la vitesse, la flexibilité et la fiabilité que vos applications exigent.

Dans ce guide complet, vous apprendrez ce qu’est MongoDB, pourquoi il se distingue des bases de données relationnelles traditionnelles, comment l’installer sur Ubuntu et comment effectuer des opérations essentielles à l’aide du shell MongoDB.

Qu’est-ce que MongoDB et pourquoi devriez-vous l’utiliser ?

MongoDB est une base de données NoSQL open-source orientée documents qui stocke les données dans des documents flexibles de type JSON appelés BSON (Binary JSON). Contrairement aux bases de données relationnelles traditionnelles qui s’appuient sur des structures rigides de tableaux-lignes-colonnes, MongoDB permet à chaque document d’une collection d’avoir sa propre structure unique. Cela la rend exceptionnellement bien adaptée aux applications avec des modèles de données évolutifs ou imprévisibles.

Avantages clés de MongoDB par rapport aux bases de données SQL traditionnelles

FonctionnalitéMongoDB (NoSQL)SQL traditionnel
Modèle de donnéesDocuments flexibles (BSON)Schéma fixe (tableaux/lignes)
ScalabilitéHorizontale (sharding)Principalement verticale
Modifications de schémaSans schéma, dynamiqueNécessite des migrations
Langage de requêteMQL riche + agrégationSQL
Idéal pourDonnées dynamiques, non structuréesDonnées structurées, relationnelles
Performance à l’échelleExcellente avec shardingPeut se dégrader sans optimisation

MongoDB est idéale pour un large éventail de cas d’usage, notamment l’analyse en temps réel, les systèmes de gestion de contenu, les plateformes de commerce électronique, l’ingestion de données IoT, les backends mobiles et toute application où les structures de données sont susceptibles de changer au fil du temps.

Pourquoi héberger MongoDB sur un VPS ?

L’hébergement de MongoDB sur un serveur privé virtuel dédié vous donne un niveau de contrôle, de performance et de sécurité que les environnements partagés ne peuvent tout simplement pas fournir. Avec un plan VPS Hosting d’AlexHost, vous obtenez :

  • Accès root complet pour configurer MongoDB exactement comme votre application l’exige
  • Ressources RAM et CPU dédiées pour gérer les charges de travail de lecture/écriture exigeantes
  • Environnement isolé qui élimine le problème du « voisin bruyant » courant dans l’hébergement partagé
  • Mise à l’échelle verticale et horizontale transparente à mesure que vos données augmentent
  • Règles de pare-feu et de réseau personnalisées pour verrouiller l’accès à la base de données

Pour les applications avec des exigences de débit exceptionnellement élevées, les Serveurs dédiés d’AlexHost offrent des performances bare-metal avec isolation matérielle complète — l’étalon-or pour les déploiements MongoDB en production.

Section 1 : Comprendre l’architecture centrale de MongoDB

Avant de plonger dans l’installation, il est important de comprendre comment MongoDB organise et gère les données.

Documents

L’unité fondamentale des données dans MongoDB est un document — un objet de type JSON qui peut contenir des champs imbriqués, des tableaux et des types de données mixtes. Par exemple :

{
  "_id": ObjectId("64b1f2c3e4b0a1d2e3f4a5b6"),
  "name": "Alice",
  "age": 30,
  "email": "alice@example.com",
  "address": {
    "city": "New York",
    "zip": "10001"
  },
  "tags": ["developer", "mongodb", "nodejs"]
}

Collections

Les documents sont regroupés dans des collections, qui sont analogues aux tableaux dans les bases de données SQL. Cependant, contrairement aux tableaux SQL, les collections n’appliquent pas un schéma fixe — les documents au sein de la même collection peuvent avoir des champs complètement différents.

Bases de données

Un serveur MongoDB peut héberger plusieurs bases de données, chacune contenant son propre ensemble de collections. Cela facilite l’isolement des données pour différentes applications ou environnements (par exemple, développement, staging, production) sur une seule instance de serveur.

Section 2 : Fonctionnalités clés de MongoDB

2.1 Stockage orienté documents

Le modèle de document de MongoDB est l’une de ses fonctionnalités les plus puissantes. Parce que chaque document peut avoir une structure différente, les développeurs peuvent faire évoluer le schéma de la base de données de manière organique à mesure que les exigences de l’application changent — sans exécuter de migrations ALTER TABLE complexes ou subir de temps d’arrêt.

Cette flexibilité est particulièrement précieuse dans les environnements de développement agile où les exigences changent fréquemment, ou dans les applications qui agrègent des données provenant de plusieurs sources hétérogènes.

2.2 Scalabilité horizontale avec sharding

L’une des capacités déterminantes de MongoDB est son support natif de la mise à l’échelle horizontale par sharding. Le sharding distribue les données sur plusieurs serveurs (appelés shards), permettant à MongoDB de gérer des ensembles de données et des niveaux de débit qui dépasseraient une seule machine.

Chaque shard contient un sous-ensemble des données totales, et un routeur mongos dirige les requêtes vers le(s) shard(s) approprié(s) en fonction d’une clé de sharding configurable. Cette architecture permet une scalabilité quasi linéaire à mesure que votre volume de données et votre charge de requête augmentent.

Pour les environnements de production à fort trafic, l’hébergement de MongoDB sur les Serveurs dédiés d’AlexHost garantit que chaque shard a accès à des ressources matérielles isolées et haute performance.

2.3 Haute disponibilité avec ensembles de réplicas

MongoDB fournit une tolérance aux pannes intégrée par le biais des ensembles de réplicas — des groupes d’instances MongoDB qui maintiennent des copies identiques des mêmes données. Un ensemble de réplicas se compose de :

  • Un nœud primaire qui reçoit toutes les opérations d’écriture
  • Un ou plusieurs nœuds secondaires qui répliquent les données du primaire
  • Un arbitre optionnel qui participe aux élections sans stocker de données

Si le nœud primaire échoue, l’ensemble de réplicas élit automatiquement un nouveau primaire parmi les secondaires disponibles, minimisant les temps d’arrêt et assurant la durabilité des données.

2.4 Langage de requête puissant et framework d’agrégation

Le MongoDB Query Language (MQL) de MongoDB supporte un riche ensemble d’opérations incluant :

  • Filtrage au niveau des champs avec opérateurs de comparaison, logiques et d’éléments
  • Projection pour retourner uniquement des champs spécifiques
  • Tri et pagination avec sort(), limit() et skip()
  • Recherche textuelle avec des index de texte intégral
  • Requêtes géospatiales pour les applications basées sur la localisation

Le Framework d’agrégation fournit une approche basée sur un pipeline pour la transformation et l’analyse des données, supportant des opérations telles que $match, $group, $sort, $project, $lookup (jointures), $unwind et bien d’autres — offrant une fonctionnalité comparable aux opérations complexes GROUP BY et JOIN de SQL.

2.5 Indexation flexible

MongoDB supporte plusieurs types d’index pour optimiser les performances des requêtes :

  • Index sur un seul champ pour les requêtes simples
  • Index composés pour les requêtes multi-champs
  • Index multikey pour les champs de tableau
  • Index de texte pour la recherche textuelle intégrale
  • Index géospatiaux pour les requêtes de localisation
  • Index TTL pour l’expiration automatique de documents (utile pour les données de session ou les journaux)

Section 3 : Installation de MongoDB sur Ubuntu (Étape par étape)

Cette section vous guide à travers une installation complète de MongoDB sur Ubuntu 20.04 LTS (Focal Fossa). Ces étapes sont optimisées pour un environnement VPS AlexHost avec accès root ou sudo.

Prérequis

  • Serveur Ubuntu 20.04 LTS
  • Un compte utilisateur avec privilèges sudo
  • Familiarité de base avec la ligne de commande Linux

Si vous n’avez pas encore de serveur, vous pouvez configurer un VPS Ubuntu entièrement configuré en quelques minutes avec AlexHost VPS Hosting.

Étape 1 : Importer la clé publique GPG de MongoDB

Les packages MongoDB sont signés avec une clé GPG pour vérifier leur authenticité. Importez la clé avec la commande suivante :

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

Vous devriez voir OK comme résultat, confirmant que la clé a été importée avec succès.

Étape 2 : Ajouter le référentiel MongoDB

Créez un fichier de liste pour ajouter le référentiel officiel MongoDB aux sources de packages de votre système :

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

> Remarque : Cette commande ajoute le référentiel MongoDB 6.0. Ajustez le numéro de version si vous avez besoin d’une version différente.

Étape 3 : Mettre à jour la base de données des packages

Actualisez votre index de packages local pour inclure le référentiel MongoDB nouvellement ajouté :

sudo apt update

Étape 4 : Installer MongoDB

Installez la dernière version stable de MongoDB avec tous les composants requis :

sudo apt install -y mongodb-org

Cela installe les packages suivants :

  • mongod — le démon de base de données MongoDB
  • mongos — le routeur de sharding MongoDB
  • mongosh — le shell MongoDB (remplaçant moderne du shell mongo hérité)
  • Outils et bibliothèques MongoDB

Étape 5 : Démarrer et activer le service MongoDB

Démarrez le service MongoDB immédiatement :

sudo systemctl start mongod

Activez MongoDB pour démarrer automatiquement au démarrage du système :

sudo systemctl enable mongod

Vérifiez que MongoDB fonctionne correctement :

sudo systemctl status mongod

Vous devriez voir une sortie indiquant que le service est active (running). Si MongoDB a démarré avec succès, vous verrez également une ligne confirmant qu’il écoute sur le port 27017.

Étape 6 : Sécuriser votre installation MongoDB (Recommandé)

Avant d’utiliser MongoDB dans tout environnement de production ou accessible sur Internet, il est essentiel d’activer l’authentification. Par défaut, MongoDB ne nécessite pas de nom d’utilisateur ou de mot de passe.

Créez un utilisateur administratif :

mongosh

À l’intérieur du shell MongoDB :

use admin

db.createUser({
  user: "adminUser",
  pwd: "YourStrongPasswordHere",
  roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
})

Activez l’authentification en modifiant le fichier de configuration MongoDB :

sudo nano /etc/mongod.conf

Trouvez la section security et ajoutez :

security:
  authorization: enabled

Redémarrez MongoDB pour appliquer les modifications :

sudo systemctl restart mongod

À partir de ce moment, toutes les connexions à MongoDB nécessiteront des identifiants valides.

Section 4 : Utiliser MongoDB — Commandes et opérations essentielles

Avec MongoDB installé et sécurisé, explorons les opérations les plus importantes que vous utiliserez au quotidien.

Étape 1 : Accéder au shell MongoDB

Connectez-vous à votre instance MongoDB en utilisant le shell moderne mongosh :

mongosh

Si l’authentification est activée, connectez-vous avec les identifiants :

mongosh -u adminUser -p YourStrongPasswordHere --authenticationDatabase admin

Étape 2 : Opérations sur les bases de données

Lister toutes les bases de données :

show dbs

Créer ou basculer vers une base de données :

use mydatabase

> MongoDB crée la base de données automatiquement lorsque vous y insérez des données pour la première fois.

Vérifier la base de données actuellement sélectionnée :

db

Supprimer une base de données :

db.dropDatabase()

Étape 3 : Opérations sur les collections

Créer une collection explicitement :

db.createCollection("users")

Lister toutes les collections dans la base de données actuelle :

show collections

Supprimer une collection :

db.users.drop()

Étape 4 : Opérations CRUD sur les documents

#### Insérer des documents

Insérer un seul document :

db.users.insertOne({
  name: "Alice",
  age: 30,
  email: "alice@example.com",
  role: "developer"
})

Insérer plusieurs documents à la fois :

db.users.insertMany([
  { name: "Bob", age: 25, email: "bob@example.com", role: "designer" },
  { name: "Carol", age: 35, email: "carol@example.com", role: "manager" },
  { name: "Dave", age: 28, email: "dave@example.com", role: "developer" }
])

#### Lire les documents

Trouver tous les documents d’une collection :

db.users.find()

Trouver les documents avec une condition spécifique :

db.users.find({ role: "developer" })

Trouver les documents avec plusieurs conditions :

db.users.find({ role: "developer", age: { $gte: 28 } })

Retourner uniquement des champs spécifiques (projection) :

db.users.find({ role: "developer" }, { name: 1, email: 1, _id: 0 })

Trouver un seul document :

db.users.findOne({ name: "Alice" })

Trier les résultats :

db.users.find().sort({ age: 1 })   // Ascending
db.users.find().sort({ age: -1 })  // Descending

Limiter et paginer les résultats :

db.users.find().limit(10).skip(20)  // Page 3 with 10 results per page

#### Mettre à jour les documents

Mettre à jour un seul document :

db.users.updateOne(
  { name: "Alice" },
  { $set: { age: 31, role: "senior developer" } }
)

Mettre à jour plusieurs documents :

db.users.updateMany(
  { role: "developer" },
  { $set: { department: "Engineering" } }
)

Incrémenter un champ numérique :

db.users.updateOne(
  { name: "Bob" },
  { $inc: { age: 1 } }
)

#### Supprimer les documents

Supprimer un seul document :

db.users.deleteOne({ name: "Dave" })

Supprimer plusieurs documents correspondant à une condition :

db.users.deleteMany({ role: "designer" })

Étape 5 : Indexation pour les performances

La création d’index sur les champs fréquemment interrogés améliore considérablement les performances des requêtes.

Créer un index sur un seul champ :

db.users.createIndex({ email: 1 })

Créer un index composé :

db.users.createIndex({ role: 1, age: -1 })

Créer un index unique :

db.users.createIndex({ email: 1 }, { unique: true })

Lister tous les index d’une collection :

db.users.getIndexes()

Étape 6 : Pipeline d’agrégation

Le framework d’agrégation vous permet d’effectuer une analyse de données complexe directement dans MongoDB.

Exemple : Compter les utilisateurs par rôle et trier par nombre :

db.users.aggregate([
  { $group: { _id: "$role", count: { $sum: 1 } } },
  { $sort: { count: -1 } }
])

Exemple : Filtrer, grouper et calculer l’âge moyen par rôle :

db.users.aggregate([
  { $match: { department: "Engineering" } },
  { $group: { _id: "$role", avgAge: { $avg: "$age" }, total: { $sum: 1 } } },
  { $sort: { avgAge: 1 } }
])

Section 5 : Configuration de MongoDB et optimisation des performances

Configuration de mongod.conf

Le fichier de configuration principal de MongoDB est situé à /etc/mongod.conf. Les paramètres clés à examiner et optimiser :

# Network settings
net:
  port: 27017
  bindIp: 127.0.0.1  # Restrict to localhost for security; use server IP for remote access

# Storage settings
storage:
  dbPath: /var/lib/mongodb
  journal:
    enabled: true
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2  # Set to ~50% of available RAM

# Logging
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Security
security:
  authorization: enabled

# Replication (for replica sets)
replication:
  replSetName: "rs0"

Meilleures pratiques de performance

  1. Allouer suffisamment de RAM — Le moteur de stockage WiredTiger de MongoDB utilise un cache en mémoire. Définissez cacheSizeGB à environ 50 % de la RAM système disponible.
  2. Utiliser des index appropriés — Analysez les requêtes lentes avec db.collection.explain("executionStats") et créez des index en conséquence.
  3. Surveiller avec MongoDB Atlas ou mongostat — Utilisez les outils en ligne de commande mongostat et mongotop pour surveiller les performances en temps réel.
  4. Activer la journalisation — La journalisation est activée par défaut et fournit la récupération après sinistre ; ne la désactivez pas en production.
  5. Utiliser le pooling de connexions — Configurez le pilote MongoDB de votre application pour utiliser le pooling de connexions afin de réduire les frais généraux de connexion.
  6. Compacter régulièrement les collections — Utilisez db.runCommand({ compact: "collectionName" }) pour récupérer l’espace disque après les suppressions importantes.

Section 6 : Sauvegarde et restauration de MongoDB

Les sauvegardes régulières sont essentielles pour toute base de données de production. MongoDB fournit des outils intégrés à cet effet.

Créer une sauvegarde avec mongodump

mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d)

Restaurer à partir d’une sauvegarde avec mongorestore

mongorestore --uri="mongodb://adminUser:password@localhost:27017" /backup/mongodb/20240115/

Automatiser les sauvegardes avec Cron

Ajoutez une tâche cron pour exécuter automatiquement les sauvegardes quotidiennes :

sudo crontab -e

Ajoutez la ligne suivante pour exécuter une sauvegarde chaque jour à 2h00 du matin :

0 2 * * * mongodump --uri="mongodb://adminUser:password@localhost:27017" --out=/backup/mongodb/$(date +%Y%m%d) >> /var/log/mongodb-backup.log 2>&1

Choisir le bon plan AlexHost pour MongoDB

Le bon plan d’hébergement dépend de l’échelle, du trafic et des exigences en matière de données de votre application :

Cas d’usagePlan recommandéPourquoi
Développement / TestVPS HostingRentable, contrôle total, configuration facile
Production petite à moyenneVPS HostingRessources évolutives, stockage SSD, accès root
Production à fort traficServeurs dédiésPerformance bare-metal, pas de partage de ressources
ML/AI avec MongoDBGPU HostingAccélération GPU pour les charges de travail de traitement de données
Application web + MongoDBVPS avec cPanelInterface de gestion facile aux côtés de votre base de données

Pour les applications qui nécessitent également un frontend web, des notifications par email ou des connexions sécurisées par SSL, AlexHost offre des Certificats SSL et Hébergement de courrier électronique pour compléter votre pile d’infrastructure.

Questions fréquemment posées

Q : MongoDB est-il gratuit à utiliser ?

Oui. MongoDB Community Edition est gratuit et open-source sous la Server Side Public License (SSPL). MongoDB Enterprise et MongoDB Atlas (cloud) offrent des fonctionnalités supplémentaires sur une base payante.

Q : Quel port MongoDB utilise-t-il par défaut ?

MongoDB écoute sur le port 27017 par défaut. Vous pouvez le modifier dans /etc/mongod.conf.

Q : Puis-je ex

15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer