Configuration et exploitation de MongoDB

1 - Comprendre les bases NoSQL

Les bases NoSQL sont conçues pour le stockage de données massives, ne nécessitant pas de structure fixe et permettant une expansion parallèle sans opérations supplémentaires.

  • MongoDB est un système de base de données open-source écrit en C++.
  • Il stocke les données sous forme de documents BSON (JSON-like), où les champs peuvent contenir d'autres documents, tableaux ou collections de documents.
  • Son architecture distribuée permet une haute performance pour les applications web sous charge, avec la possibilité d'ajouter des nœuds dynamiquement.

Une particularité importante : les bases de données et collections MongoDB sont créées à la première utilisation, sans déclaration préalable.

3.1 - Guide officiel recommandé

3.2.1 - Récupération des fichiers binaires

Téléchargez l'archive depuis le centre de téléchargement : https://www.mongodb.com/download-center#community

3.2.2 - Déploiement et configuration du PATH


[admin@serveur ~]$ ls -lh mongodb-*.tgz
-rwxr-xr-x. 1 root root 85M Nov 16 15:13 mongodb-linux-x86_64-rhel70-4.0.4.tgz

[admin@serveur ~]$ sudo mkdir -p /opt/mongodb
[admin@serveur ~]$ sudo tar -xzvf mongodb-linux-x86_64-rhel70-4.0.4.tgz -C /opt/mongodb --strip-components=1

[admin@serveur ~]$ export MONGO_HOME=/opt/mongodb
[admin@serveur ~]$ export PATH=$MONGO_HOME/bin:$PATH

# Pour rendre la modification persistante, ajouter au fichier ~/.bashrc :
echo 'export PATH=/opt/mongodb/bin:$PATH' >> ~/.bashrc

3.2.3 - Préparation des répertoires de données


[admin@serveur ~]$ sudo mkdir -p /var/lib/mongo_data
[admin@serveur ~]$ sudo chown $(whoami):$(whoami) /var/lib/mongo_data

MongoDB requiert l'existence du répertoire de données avant son démarrage.

3.2.4 - Lancement du service MongoDB


[admin@serveur ~]$ mongod --dbpath=/var/lib/mongo_data --auth --bind_ip localhost

Paramètres importants :

  • --dbpath : spécifie l'emplacement des fichiers de données
  • --auth : active l'authentification (déconseillé en développement initial)
  • --bind_ip : restreint l'accès réseau

3.2.5 - Configuration système recommandée

Désactiver SELinux pour les environnements de test (modifier /etc/selinux/config et redémarrer).

4.1 - Connexion à l'instance


[admin@serveur ~]$ mongo --host localhost --port 27017
MongoDB shell version v4.0.4
connecting to: mongodb://localhost:27017
> 

Commandes de base dans le shell :

  • db : affiche la base courante
  • show dbs : liste les bases non vides
  • use ma_base : change ou crée la base
  • exit : quitte le shell

4.2 - Système d'aide intégré


> help
    db.help()                    Aide sur les méthodes de base de données
    db.collection.help()         Aide sur les opérations de collection
    show dbs                     Affiche les noms des bases de données
    use <db_name>               Sélectionne/crée une base de données
    db.ma_collection.find()      Liste les documents d'une collection

4.3 - Exemples d'utilisation


> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

> use exemple
switched to db exemple

> db.test.insertOne({name: "MongoDB", version: "4.0"})
WriteResult({ "nInserted" : 1 })

> db.test.find()
{ "_id" : ObjectId("..."), "name" : "MongoDB", "version" : "4.0" }

Documentation : https://pymongo.readthedocs.io/en/stable/


# Exemple d'utilisation de PyMongo
from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')
db = client.ma_base
collection = db.ma_collection

# Insertion d'un document
post = {"auteur": "Jean", "texte": "Premier article", "tags": ["python", "mongodb"]}
post_id = collection.insert_one(post).inserted_id

# Recherche
for doc in collection.find({"auteur": "Jean"}):
    print(doc)

Étiquettes: MongoDB NoSQL installation Linux CentOS

Publié le 6 juin à 22h49