MongoDB

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type SGBD NoSQL orienté documents
Format de stockage BSON (JSON binaire)
Port par défaut 27017/tcp
Shell mongosh (mongo, historique)
Voir aussi Mongo cli · Mongo init · Mongodb php

MongoDB est un système de gestion de bases de données NoSQL orienté documents : les données sont stockées sous forme de documents BSON (variante binaire de JSON) regroupés en collections, l'équivalent approximatif des tables en SQL, mais sans schéma rigide imposé au niveau du moteur.

Présentation

Contrairement à un SGBD relationnel, MongoDB ne force pas de schéma fixe : deux documents d'une même collection peuvent avoir des champs différents. La contrepartie est que la cohérence des champs (validation, types) devient une responsabilité applicative, sauf à activer des règles de validation de schéma côté serveur (à vérifier selon la version).

Installation

Sur les distributions anciennes, un paquet mongodb était disponible directement dans les dépôts (Debian/Ubuntu) :

apt-get install mongodb

Ce paquet est aujourd'hui obsolète/retiré des dépôts récents. Pour une installation moderne, utiliser le dépôt officiel MongoDB (paquets mongodb-org) ou une image conteneur officielle plutôt qu'un paquet distribution générique — la version packagée par la distribution accuse en général un retard important sur les versions supportées.

Certains environnements historiques installaient MongoDB par simple décompression d'une archive binaire officielle (sans gestionnaire de paquets) :

mkdir /usr/local/mongodb
# puis décompression de l'archive téléchargée dans ce répertoire

Dans ce cas, un script d'init dédié gère le démarrage du démon — voir Mongo init.

Réplication

Ancien mode maître/esclave (obsolète)

Les toutes premières versions de MongoDB proposaient un mode de réplication maître/esclave configuré directement dans /etc/mongodb.conf :

# Sur le maître
logpath = /var/log/mongodb/mongod.log
dbpath = /var/lib/mongodb/
logappend = true
bind_ip = 0.0.0.0
master = true
# Sur l'esclave
logpath = /var/log/mongodb/mongod.log
dbpath = /var/lib/mongodb/
source = 192.168.1.10:27017
logappend = true
bind_ip = 0.0.0.0
slave = true
autoresync = true

Ce mode est obsolète : il a été remplacé par les replica sets dès les versions 1.6+, puis totalement retiré des versions récentes de MongoDB. Il ne doit plus être utilisé sur une installation actuelle — cette section est conservée à titre historique uniquement.

Replica sets (approche moderne)

Pour la haute disponibilité, l'approche actuelle est un replica set : un groupe de processus mongod maintenant la même donnée, avec élection automatique d'un nœud primaire et bascule (failover) en cas de panne. (à vérifier / hors périmètre de cette page) : se référer à la documentation officielle pour la mise en place (rs.initiate(), rs.add()...).

Interface web historique

Les anciennes versions exposaient une interface HTTP basique de statut sur le port suivant :

http://IP_ADDRESS:28017/

Cette interface a été retirée des versions récentes. Si elle est encore présente sur une instance ancienne : ne jamais l'exposer sans restriction réseau, elle ne dispose d'aucune authentification.

Outils d'administration graphique (historiques)

Quelques interfaces web front-end à MongoDB ont existé (phpMoAdmin, Opricot...) (à vérifier — projets anciens, statut de maintenance incertain). Pour un usage actuel, préférer MongoDB Compass (officiel) ou le shell mongosh.

Pilotes et intégrations

  • Mongodb php — driver PHP (historique et moderne)
  • Mongo cli — shell interactif, commandes de référence

Documentation

Voir aussi

  • Mongo cli — shell mongo/mongosh, commandes de référence
  • Mongo init — script de démarrage historique (SysV)
  • Mongodb php — intégration PHP
  • Sql — comparaison avec le modèle relationnel