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é
- Linux (général) : https://docs.mongodb.com/manual/administration/install-on-linux/
- Red Hat Enterprise Linux : https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
- Windows : https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/
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 couranteshow dbs: liste les bases non videsuse ma_base: change ou crée la baseexit: 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)