Mongo DB
Mongo DB
Mongo DB
U E : BA S ES D E D O N N ÉES AVA N C É ES
M. DONATIEN MBADI M A S T E R 1 : DA D E T M S I
IME
1
Objectifs de ce cours
Installer MongoDB;
2
Plan du cours
Module 01 : Présentation du mouvement NoSQL
Module 02 : Présentation de MongoDB
Module 03 : Prise en main de MongoDB
Module 04 : Travailler avec les documents
Module 05 : Gérer les performances et l'indexation
Module 06 : Sauvegarde et Restauration dans MongoDB
3
Présentation du mouvement NoSQL
4
Le mouvement NoSQL
Historique
◦ Le concept du NoSQL à une bonne décennie d’ancienneté
◦ Utilisé pour la première fois en 1998
◦ Développé par des start-up comme logiciel de stockage des données
◦ Inauguration du NoSQL le 11 novembre 2009 à San Francisco
◦ MongoDB: Administration alphorm.com™©
◦ Début de normalisation d’un langage de manipulation des données UnQL
◦ (Unstructured Query Langage) en 2011
5
Le mouvement NoSQL
Le NoSQL (Not Only SQL) c’est quoi ?
◦ SGBD non relationnel issue du monde Web
◦ Les données ne sont plus manipulées avec le SQL
◦ L’unité de stockage n’est plus la table
◦ La définition d’un schéma de données relationnel n’est plus nécessaire
◦ Renonciation aux fonctionnalités des SGBDR (ACID)
◦ Les principaux axes sont la haute disponibilité et le partitionnement des
◦ données
◦ Permet de gérer de très grosses volumétries de données
6
Le mouvement NoSQL
Catégories de bases NoSQL
◦ Les bases clefs/valeurs
• Redis, Voldemort
◦ Les bases orientées documents
• MongoDB, CouchDB, Riak
◦ Les bases orientées colonnes
• Cassandra, BigTable, HBase
◦ Les bases orientées graphes
• Neo4j: en Java
• FlockDB: utilisé par Twitter
7
Le mouvement NoSQL
Les bases clefs/valeurs
◦ Principes du modèle
• Associe un identifiant unique à chaque valeur dans la base de données
• Une valeur peut être de type simple ou un objet sérialisé
• Fournit quatre opérations basiques :
création, lecture, modification, suppression
• Toute l’intelligence dans la récupération des données se situe dans l’applicatif client
8
Le mouvement NoSQL
Les bases orientée Colonnes
◦ Principes du modèle
• Stocke les informations sous forme de colonnes
• Permet d’ajouter très facilement des informations
• Limite les valeurs nulles
9
Le mouvement NoSQL
Les bases orientée documents
◦ Destinée à stocker des documents
◦ Le contenu d'un document ne se limite pas à des attributs simples
◦ Chaque document a sa propre structure dans une même collection
10
Le mouvement NoSQL
Les bases orientée Graphes
◦ Le moins connus et assez complexe à mettre en œuvre
◦ Principes du modèle
◦ • Repose sur un modèle mathématique appelé Théorie des Graphes
◦ • Données modélisées sous format de nœud
◦ • Données reliées entre elles par des Arc nommés
11
Le mouvement NoSQL
Autres types de bases NoSQL
◦ Base de données hiérarchique
◦ Base de données objet
12
Quiz
Citez les SGBD NoSQL (choisir toutes les bonnes réponses)
a. Oracle
b. Cassandra
c. Mysql
d. PostgreSQL
e. MongoDB
f. SimpleDB
g. Hyperic
h. HBase
i. DBase
13
Quiz
MongoDB est un SGBD orientée : (choisir la meilleure réponse)
a. Documents
b. Graphes
c. Relationnel
d. Colonnes
14
Le mouvement NoSQL
MongoDB (humongous = énorme)
◦ Sponsorisé par 10gen depuis 2007
◦ Base de données orientée document
◦ Open-source
◦ Développé en C++
◦ Données stockées sous forme JSON
◦ Absence de tables
◦ Utilise la notion de « schemaless »
◦ Fournit un shell javascript pour l’accès aux données et l’administration
15
Le mouvement NoSQL
Avantages de MongoDB
◦ Répond aux besoins de performances
◦ Garantit la scalabilité horizontale (réplication et sharding)
◦ Nombreuses fonctionnalités (count, group by, order by, SUM, MIN, etc.)
◦ Supporte l’indexation pour optimiser les performances
16
Le mouvement NoSQL
Analogie avec le SQL
◦ NoSQL (Base) = SQL (Base)
◦ NoSQL (Collection) = SQL (Table)
◦ NoSQL ( Document) = SQL (Enregistrement)
◦ Dans les bases SQL chaque enregistrement de la table contient
exactement les mêmes champs, seul le contenu varie
◦ Dans une collection MongoDB, les documents peuvent avoir des champs
totalement différents
17
Le mouvement NoSQL
Les principaux produits NoSQL
◦ MongoDB
◦ Accumulo
◦ Berkeley DB (Oracle)
◦ BigTable (Google)
◦ Cassandra (Facebook, Twitter, Digg)
◦ CouchDB
◦ SimpleDB (Amazon.com)
◦ …
18
Le mouvement NoSQL
Comparaison NoSQL / SGBDR
◦ SGBDR
• Les points forts :
- Beaucoup de fonctionnalités et de règles pour garantir des bases cohérentes et
complètes : mécanisme de verrous pour la gestion des accès concurrentiels, respect
des propriétés ACID (Atomicité, Cohérence, Isolation, Durabilité).
- Utilisation des outils spécialisés comme le modèle entité-relation qui est le Modèle
Conceptuel de Données (MCD) utilisé pour modéliser la structure de la base.
• Les points faibles :
- Performances qui déclinent avec l’augmentation du volume de données
- Problématique de distribution des données d’une base.
19
Le mouvement NoSQL
Comparaison NoSQL / SGBDR
◦ NoSQL
• Les points forts :
- Bons temps de réponse malgré de très gros volumes de données
- Facilement distribuable
- Plus flexible en cas de panne (disponibilité partielle voire totale)
20
Le mouvement NoSQL
21
22
Présentation de MongoDB
23
Concepts MongoDB
• MongoDB : Système de gestion de bases de données open source développé par MongoDB
Inc depuis 2007.
• Il fait parti de la mouvance NoSQL.
• Son nom vient de l'anglais "humongus" qui peut être traduit par "énorme".
24
Concepts MongoDB
Qu’est ce que le JSON (JavaScript Object Notation)
Un objet JSON a pour but de représenter des
Le JSON est un format de représentation textuelle informations (valeurs) accompagnées d'étiquettes
des données dérivé de la notation des objets du (champs) permettant de les identifier.
Un objet JSON ne comprend que deux types
langage JavaScript. Toutefois il est indépendant
d'éléments structurels :
du JavaScript et de tout autre langage de • des ensembles de paires nom/valeur
programmation. • des listes ordonnées de valeurs
Le JSON permet de représenter de l'information Les valeurs représentent trois types de données :
structurée comme le permet XML par exemple. • des objets
• des tableaux
• des valeurs génériques de type tableau, objet,
booléen, nombre, chaîne ou null
Les champs par contre ne peuvent être que des
chaînes de caractères.
25
Concepts MongoDB
Qu’est ce que le JSON
Un objet JSON a pour but de représenter des
Le JSON est un format de représentation textuelle informations (valeurs) accompagnées d'étiquettes
des données dérivé de la notation des objets du (champs) permettant de les identifier.
Un objet JSON ne comprend que deux types
langage JavaScript. Toutefois il est indépendant
d'éléments structurels :
du JavaScript et de tout autre langage de • des ensembles de paires nom/valeur
programmation. • des listes ordonnées de valeurs
Le JSON permet de représenter de l'information Les valeurs représentent trois types de données :
structurée comme le permet XML par exemple. • des objets
• des tableaux
• des valeurs génériques de type tableau, objet,
booléen, nombre, chaîne ou null
Les champs par contre ne peuvent être que des
chaînes de caractères.
26
Concepts MongoDB
Orienté documents, Qu'est ce cela signifie ?
Dans MongoDB, les données sont modélisées sous
forme de document sous un style JSON.
On ne parle plus de tables, ni d'enregistrements
mais de collections et de documents.
Ce système de gestion de données nous évite ainsi
de faire des jointures de tables car toutes les
informations propres à un certain donnée sont
stockées dans un même document.
27
Concepts MongoDB
JSON : Tables :
T1 T2
{ _id : ”Q33”, Num Nom Age Num Voiture
Nom : “Owono”,
Q33 Owono 24 Q33 Toyota
Age : 24
Statut : “Single” Q33 Nissan
Voiture [“Toyata”, “Nissan”]
}
28
Concepts MongoDB
Exercice : Ecrire sous forme de tables relationnelles, le document JSON suivant :
29
Quiz
30
Concepts MongoDB
Réponse :
31
Prise en main de MongoDB
32
Installation sous Linux
Deux solutions
◦ Passer par le gestionnaire de paquets (yum sous Centos)
- Pour les distributions Debian, Ubuntu
◦ http://downloads-distro.mongodb.org/repo/
◦ Télécharger le code source directement (plus pénible)
33
Installation sous Linux
Configuration de yum
◦ Pour un OS 64 bits
- Ajouter le le fichier /etc/yum.repos.d/10gen.repo
- Ajouter les entrées suivantes
[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0
enabled=1
34
Installation sous Linux
Configuration de yum
◦ Pour un OS 32 bits
- Ajouter le le fichier /etc/yum.repos.d/10gen.repo
- Ajouter les entrées suivantes
[10gen]
MongoDB: Administration alphorm.com™©
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686
gpgcheck=0
enabled=1
35
Installation sous Linux
Installation via yum
◦ yum install mongo-10gen mongo-10gen-server
36
Installation sous Windows
Les étapes
◦ Télécharger l’archive à partir de http://www.mongodb.org/downloads
◦ Décompresser l’archive
◦ Création de l’arborescence de stockage de l’instance par défaut
◦ Configuration du path
◦ Création du service d’arrêt/démarrage de Windows
◦ Démarrage de MongoDB
37
Installation sous Windows
38
Instance MongoDB
Caractéristiques d’une instance MongoDB
◦ Un port d’écoute (par défaut 27017)
◦ Un processus serveur
◦ Un répertoire racine de stockage
◦ Un fichier de log
◦ Un fichier de configuration: mongod.conf
39
Instance MongoDB
Arrêt / Démarrage d’une instance MongoDB
◦ Sous Linux
• Démarrage
- /etc/init.d/mongod start (démarrage de mongoDB via script)
- mongod --dbpath <racine_instance> (démarrage de mongoDB)
- mongod -f <fichier.conf>
• Arrêt
- /etc/init.d/mongod stop (permet d’arrêter mongoDB)
- /etc/init.d/mongod restart (permet le redémarrage de mongoDB)
- Commande db.shutdownServer() à partir du client mongo et la base admin
40
Instance MongoDB
La racine de l’instance
◦ Sous Windows
• Via le gestionnaire de services Windows
• En mode ligne de commande
- net start MongoDB (démarrage du service)
- net stop MongoDB (arrêt du service)
41
Instance MongoDB
Etapes de création d’une instance MongoDB
◦ Créer un répertoire pour l’instance
◦ L’utilisateur mongod doit en être le propriétaire (Linux)
◦ Se connecter avec l’utilisateur mongod (Linux)
◦ Utiliser le programme mongod pour créer l’instance en spécifiant :
◦ Le numéro du port : --port
◦ La racine des fichiers de l’instance : --dbpath
◦ Eventuellement le fichier journal : --logpath
◦ L’option –fork pour démarrer l’instance en tache de fond (Linux)
42
Instance MongoDB
43
Instance MongoDB
Contenu du répertoire de l’instance
44
Instance MongoDB
Contenu du répertoire de l’instance
45
Les outils et commandes MongoDB
Inventaire
◦ mongod (le moteur de base)
◦ mongo (le shell javascript de la base de donnees)
◦ mongos (le contrôleur de Sharding)
◦ Les outils d’import/export
• mongoimport, mongoexport, mongodump, mongorestore, bsondump
◦ mongofiles (l’utilitaire de gestion des fichiers dans les objets GridFS)
◦ mongostat (visualisation des stats d’une instance mongoDB)
◦ mongosniff (le tcpdump de mongo)
◦ mongotop, mongoperf
46
Travailler avec les documents MongoDB
47
Les bases de donnes MongoDB
48
Les bases de données MongoDB
Création / Suppression
◦ Création de bases de données
• Automatique
- # mongo <db_name>
- > use <db_name>
◦ Suppression de bases de données
• # mongo
• > use <db_name>;
• > db.runCommand({dropDatabase: 1});
• > db.dropDatabase();
49
Les bases de données MongoDB
Stockage des données physiques d’une base
◦ Limite en environnement 32 bits
• Ne permet pas de stocker plus de 2.5Gb de données
• Déconseillé pour de la production
• Le répertoire de stockage utilise la variable --dbPath
◦ En production
• Utiliser la version 64 bits
• Le répertoire de stockage utilise la variable --dbPath
50
Les collections
51
Les collections
Les opérations sur les Collections
◦ Créer
• > db.createCollection('gens');
◦ Lister
• > show collections;
• > db.getCollections();
◦ Insérer un document
• > db.<collection_name>.insert( { var1: "valeur", var2: "valeur", var3: "valeur", } );
◦ Supprimer
• > db.<nom_collection>.drop();
52
Les documents
Un document c’est quoi ?
◦ Equivalent d’un enregistrement (tuple) en relationnel
◦ Deux modes d’insertion
• En utilisant la commande db.<nom_collection>.insert() du schell
• En utilisant la commande db.<nom_collection>.save () du schell
• En utilisant un driver: PHP, Ruby, Java, Python
◦ Chaque document crée contient le champ « _id »
• Généré automatiquement
• Type primary key
• Indexé
53
Les documents
Rappel de la hiérarchie des objets
54
Les documents
Le format JSON/BSON
MongoDB stocke les documents au format BSON (Binary JSON)
BSON est la représentation binaire des objets JSON (JavaScript Object Notation)
55
Les documents
Le format JSON c’est quoi ?
JSON (JavaScript Object Notation)
• Permet de représenter de l’information structurée
• Format de données textuelle
• Utilise une notation JavaScript
• Décrit par la RFC 4627
56
Les documents
Le format JSON
◦ Exemple
{
"pospect" : "ALFKI",
"nom" : "ORSYS",
"adresse" : {
"numero" : 77,
"codepostal" : "31000",
"ville" : "Toulouse"
}
}
57
Les documents
Exemple pratique d’utilisation
58
Les documents
Avantage du format JSON
◦ Format abstrait pour une représentation simplifiée dans les différents langages
◦ Indépendant du langage de programmation
◦ Simple et complet pour la représentation des objets
◦ Utilise des types de données connus et simples à décrire
◦ Une bonne lisibilité de la syntaxe
◦ Temps de traitement très proche de celui des fichiers XML
◦ Moins volumineux en terme de stockage
◦ Pour JavaScript un document JSON représente un objet
59
documents
Les Types disponibles en JSON
60
Les documents
Le format BSON c’est quoi ?
BSON est la représentation binaire des objets JSON
Ajoute des améliorations et des capacités supplémentaires
• expressions régulières
• Bytes Arrays
• Date et TimeStamps
• stockage de blocs de code ou de fonctions JavaScript
61
Les documents
62
Les Operations CRUD
63
Les opérations CRUD
64
Insertions
65
Insertions
66
Mise a jour
67
Mise a jour
Mise a jour simple
68
Mise a jour
Mise a jour complexe
69
Mise a jour
Mise a jour avec ajout de champs
70
Mise a jour
Mise a jour avec suppression de champ
71
Mise a jour
Incrémenter une valeur
72
Mise a jour
Incrémenter une valeur dans une mise a jour-multicriteres
73
Mise a jour
Préparation (Restaurer la sauvegarde a partir des ressources)
74
Recherche
Exercice :
◦ Afficher la liste de tous les employés
◦ Afficher les 15 premiers documents de la collection employes
◦ Afficher le nombre de documents de employes
◦ Afficher uniquement les noms d’employes
◦ Afficher uniquement les noms, prenoms et prime des employes
◦ Afficher les noms, anciennette et la ville de l’employe ‘Menard’
75
Critères de comparaison
76
Recherche
Exercice :
◦ Afficher employés dont l’anciennete est supérieur a 15
◦ Afficher le nombre d’employes dont l’anciennete est superieur a 15
◦ Afficher les noms d’employes qui n’habitent pas a Toulouse
◦ Afficher les noms d’employes qui habitent Toulouse ou Bordeaux
◦ Afficher les noms d’employes dont le nom commence par ‘D’
◦ Afficher les noms et l’anciennete des employes par ordre d’anciennette décroissant pour
les employes dont l’ancienne depasse 2 ans.
77
Suppression
78
Suppression
db.employes.remove({nom : " Dupont" })
db.employes.remove({anciennette : {$gt : 15}})
db.employes.remove()
79
80
Réplication
81
Réplication
Présentation
◦ Deux fonctionnalités importantes
◦ • Depuis la version 1.6
◦ - Les Replica Set
◦ - Le Sharding
82
Réplication
Qu’est-ce que le Replica Set ?
◦ Permet d’assurer la redondance et la haute disponibilité
◦ Permet aux données d’être dupliquées de manière transparente
◦ Utilise la notion de groupe de serveur appelé set
• Chaque set possède
- un nœud principal (primaire) : lecture/écriture
- n serveurs de backup (secondaire) : lecture uniquement
◦ Concrètement: les Replicat Set permettent de répliquer les données entre des
instances MongoDb
83
Réplication
Mise en place
◦ Réplication
• Démarrage d’un serveur dans un Replica Set
- mongod
• --replSet (indique a quel Replica Set appartient l’instance)
• --shardsvr (active le partitionnement horizontal)
• ...
◦ Le serveur maître génère un journal de transaction
• Consommé par les différentes bases esclaves
84
Réplication
Mise en place
◦ Réplication
• Ajout d’un noeud dans un Replica Set
- Sur le serveur maître
• PRIMARY> rs.add("host:port")
• Sortir un noeud d’un Replica Set
- Sur le serveur maître
• PRIMARY> rs.remove("host:port")
85
Réplication
Mise en place
◦ Réplication
• Les principales commandes d’exploitation
- rs.initiate(cfg); (permet d’initialiser la configuration d’un Replica Set)
- db.isMaster(); (permet de vérifier qui est le maître)
- rs.status(); (permet de vérifier l’état du Replica Set)
- rs.slaveOk() ; (permet d’activer les lecture sur les serveurs esclaves)
- rs.syncFrom("host:port"); (permet de forcer la synchronisation)
- ...
86
Réplication
87
Réplication
88
Réplication
89
Réplication
Création de l’arborescence pour les instances :
Note : Sous Linux, il faut ensuite rendre l’utilisateur mongod, proprietaire de cet arborescence :
#chown –R mongod:mongod /mongodb
90
Réplication
Créer l’instance arbitre, l’instance primaire et une instance secondaire :
91
Réplication
92
Réplication
Configurer la réplication :
◦ Se connecter a une instance
◦ Créer la config (de préférence dans la base admin)
93
Réplication
>cfg={_id:"rs01",members:[{_id:0,host:"127.0.0.1:27102"},{_id:1,host:"127
.0.0.1:27103"},{_id:2,host:"127.0.0.1:27101",arbiterOnly:true}]}
94
Réplication
Vérifier l’instance primaire : > db.isMaster();
95
Réplication
96
Réplication
97
Réplication
98
Réplication
Tester la réplication
99
Réplication
100
Réplication
Vérifier le server secondaire :
◦ Autoriser les lectures sur les serveurs de secours :
101
Réplication
102
Réplication
Tentative insertion sur le serveur secondaire :
103
Réplication
Rajouter un nœud a chaud
Créer et démarrer la nouvelle instance
Ajouter le serveur dans le replica Set, Executer rs.status() pour vérifier que le serveur a été ajouté.
104
Réplication
105
Réplication
Test de basculement (Arrêter l’instance primaire 27102)
Se connecter sur l’une des instances
Exécuter rs.status()
Redémarrer l’ancienne instance primaire
Exécuter rs.status()
106
Réplication
◦ Executer rs.status
107
Replication
……
……..
108
Sharding ou Scalabilité horizontale
109
Le Sharding
Qu’est-ce que le Sharding ou partitionnement ?
◦ Pré-requis: mise en place des Replica Set
• Permet une scalabilité horizontale
• Distribution du stockage des données sur différentes instances MongoDB
• Chaque machine stock un sous ensemble des données (chunk)
• Utilise une clé de Sharding pour répartir le stockage
110
Sharding
Architecture du sharding
111
Le sharding
Les étapes de mise en œuvre
◦ Mise en place du Replica Set
◦ Mise en place du sharding
• Les Shard servers : ou instances mongod
• Les Config servers : Serveur de configuration qui va stocker les metadata
du shard
• Le mongos : Sert de routeur vers les différents shards
◦ Test de l’infrastructure
112
Le sharding
Les principales commandes
◦ Ajouter des noeuds au sharding
• db.runCommand({addshard :
"<nom_Replica_Set/host1:port,host2:port,hostN:port"});
◦ Activer le sharding pour une base de données
• db.runCommand({enablesharding: "<nom_base>"});
◦ Dé finir une clef de partitionnement pour le sharding
• db.runCommand({shardcollection: "<namespace>", key:{":<nom_champ>":1}});
◦ Afficher les informations sur le sharding
• db.printShardingStatus();
• db.<collection>.stats();
113
Le sharding
114
Le sharding
Créer les racines des 3 serveurs de configuration et du mongos
115
Le sharding
Créer les instances de configuration
116
Le sharding
Créer le mongos
117
Le sharding
Configurer le mongos
118
Le sharding
Tester le sharding :
◦ Se connecter au mongos (vous pouvez vérifier que la base gescom est présente)
◦ Créer une collection (clients par exemple) dans la base gescom
119
Le sharding
◦ Activer le sharding sur la base gescom
◦ Définir une clé de partitionnement pour le sharding
120
Le sharding
Vérifier la configuration du sharding : db.printShardingStatus()
121
Le sharding
Exemple : Test de chargement 1000 000 de lignes dans la table clients.
122
Le sharding
Verifier le sharding (db.printShardingStatus(‘verbose’))
123
Le sharding
124
Performance et Indexation dans MongoDB
125
Performance et indexation
Les indexes sous MongoDB, Pourquoi faire ?
• Améliorer les temps d’exécution des requêtes
◦ Les différents types d’indexes
• Index sur un seul champ
• Index unique
• Index composé, Sparse et Hashed
◦ Indexation par défaut
• Le champ _id est indexé par défaut (impossible de le supprimer)
126
Performance et indexation
Index sur un seul champ
◦ Deux modes
• Ordre ascendant (1 pour ASC)
• Ordre descendant (-1 pour DESC)
127
Performance et indexation
Index composés
◦ Deux modes
• Ordre ascendant (1 pour ASC)
• Ordre descendant (-1 pour DESC)
◦ Poser un index (ascendant et descendant)
• db.<collection>.ensureIndex({<nom_champ1>:1, <nom_champ2>:1});
• db.<collection>.ensureIndex({<nom_champ1>:-1} <nom_champ2>:-1});
128
Performance et indexation
Les index unique
◦ Deux modes
• Ordre ascendant (1 pour ASC)
• Ordre descendant (-1 pour DESC)
◦ Poser un index unique (ascendant et descendant)
- db.<collection>.ensureIndex({<nom_champ1>:1, {unique: true});
- db.<collection>.ensureIndex({<nom_champ1>:-1, {unique: true});
129
Performance et indexation
◦ Plusieurs types d’indexes
◦ Index BTREE
◦ Index Sparse
◦ Index Haché
◦ Géospatial
◦ MongoDB: Administration alphorm.com™©
◦ Text
130
Performance et indexation
Création des index en arrière plan
◦ Par défaut construction de l’index en premier plan
◦ Possibilité de construire un index en arrière plan
• db.collection.ensureIndex( { a: 1 }, { background: true } )
131
Performance et indexation
Visualisation des index
◦ Index d’une collection
• db.<collection>.getIndexes()
◦ Index d’une base de données
• db.system.indexes.find()
132
Performance et indexation
Reconstruction d’index
◦ Utilisation de la méthode db.collection.reIndex()
Suppression d’index
◦ > db.<collection>.dropIndex('<nom_index>')
133
Performance et indexation
Monitoring des opérations sur les index (création/reconstruction)
◦ Progression: db.currentOp()
◦ Interruption: db.killOp()
134
Performance et indexation
Visualisation des plans d’exécution
◦ Utilisation de la méthode: cursor.explain()
• db.<collection>.find().explain()
◦ Forcer l’utilisation d’un index avec hint()
• Utilisation de la méthode: cursor.hint()
- db.<collection>.find().hint( { <nom_champ>: 1 } ).explain()
135
Sauvegarde et restauration
136
Sauvegarde et restauration
Sauvegarde à froid (le plus simple)
◦ Les étapes
• Arrêter le service mongodb
• Copier tous les fichiers de --dbpath
- <nom_base>.<numero_fichier>
- <nom_base>.ns
• Démarrer le service mongodb
137
Sauvegarde et restauration
Export MongoDB
◦ Commande mongodump
• Permet d’exporter (collection, base, instance)
- Contient autant de répertoire que de base
• Contenant chacun un fichier BSON par collection, plus un fichier BSON
d’index.
138
Sauvegarde et restauration
Export MongoDB
◦ mongodump
• Les principales options
--db
--collection
--out (précise le répertoire d’export)
--dbpath (précise la racine à exporter)
139
Sauvegarde et restauration
Export MongoDB
◦ Commande mongoexport
• Permet d’exporter
- Une base
- Une collection
- Des champs
• Deux formats d’exports possible
- JSON
- CSV
140
Sauvegarde et restauration
Export MongoDB
◦ mongoexport
• Les principales options
--db
--collection
--csv
--fields
141
Sauvegarde et restauration
Import MongoDB
◦ Commande mongoimport
• Permet d’importer
- Une base
- Une collection
- Des champs
• Deux formats d’imports possible
- JSON
- CSV
$mongoimport --port 27100 --db gescom --drop employes –file
/backup/mongodb/employes.csv
$mongoexport --port 27100 --db gescom --collection employes --csv -–
fields num,nom –o /backup/mongodb/employes.json
142
Sauvegarde et restauration
Import MongoDB
◦ Commande mongorestore
• Permet de restaurer
- Pré-requis
Supprimer la base cible
• Les principales options
--db
--collection
--dbpath
$mongorestore --port 27100 --drop /backup/mongodb/gescom.bson
143
144