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ées | Documents flexibles (BSON) | Schéma fixe (tableaux/lignes) |
| Scalabilité | Horizontale (sharding) | Principalement verticale |
| Modifications de schéma | Sans schéma, dynamique | Nécessite des migrations |
| Langage de requête | MQL riche + agrégation | SQL |
| Idéal pour | Données dynamiques, non structurées | Données structurées, relationnelles |
| Performance à l’échelle | Excellente avec sharding | Peut 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()etskip() - 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-orgCela installe les packages suivants :
mongod— le démon de base de données MongoDBmongos— le routeur de sharding MongoDBmongosh— le shell MongoDB (remplaçant moderne du shellmongohé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 mongodActivez MongoDB pour démarrer automatiquement au démarrage du système :
sudo systemctl enable mongodVérifiez que MongoDB fonctionne correctement :
sudo systemctl status mongodVous 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.confTrouvez la section security et ajoutez :
security:
authorization: enabledRedé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 :
mongoshSi 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 dbsCré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 :
dbSupprimer 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 collectionsSupprimer 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 }) // DescendingLimiter 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
- 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. - Utiliser des index appropriés — Analysez les requêtes lentes avec
db.collection.explain("executionStats")et créez des index en conséquence. - Surveiller avec MongoDB Atlas ou mongostat — Utilisez les outils en ligne de commande
mongostatetmongotoppour surveiller les performances en temps réel. - 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.
- 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.
- 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 -eAjoutez 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>&1Choisir 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’usage | Plan recommandé | Pourquoi |
|---|---|---|
| Développement / Test | VPS Hosting | Rentable, contrôle total, configuration facile |
| Production petite à moyenne | VPS Hosting | Ressources évolutives, stockage SSD, accès root |
| Production à fort trafic | Serveurs dédiés | Performance bare-metal, pas de partage de ressources |
| ML/AI avec MongoDB | GPU Hosting | Accélération GPU pour les charges de travail de traitement de données |
| Application web + MongoDB | VPS avec cPanel | Interface 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
