SlideShare une entreprise Scribd logo
1  sur  175
Formation MongoDB – Pour débutant
Ralainirina Dina Randriantsizafy
Informatique scientifique
Présentation de la formation
Formation MongoDB – Pour débutant
Présentation de la formation
Vue d’ensemble
Dans le Monde des données, le big data prend de plus en plus d'importance, mongoDB
est un système de gestion base de données noSQL bigdata, facile à mettre en place et
est utilisé par des grands groupes et des moyens.
BigData des trois V
Volume
En 2013 Facebook a généré 10 téraoctets de données par jour.
Le radiotélescope “Square Kilometre Array” par exemple produira 50 téraoctets de
données par jour.
Variété
Les données sont de natures et de formats différents et changeant avec le temps
Vélocité
L’qbsorbtion et le traitement des données doit se faire très rapidement
Formation MongoDB – Pour débutant
Déroulement de la formation
Des vidéos avec des pratiques en utilisant des cas réels de données
Objectifs
L'objectif de la formation est de comprendre le principe et l'enjeu du bigdata à travers
mongoDB. A la fin de la formation, l'apprenant sera capable de mettre en oeuvre et de
gérer un système de gestion d'information MongoDB.
Prérequis
Pas de prérequis mais une connaissance de l'informatique est nécessaire.
Public concerné
Tous ceux qui s'intéressent au big data et à mongoDB, en particulier ceux qui veulent se
lancer dans les data sciences.
Présentation de la formation
Formation MongoDB – Pour débutant
A bientôt
Présentation de la formation
Formation MongoDB – Pour débutant
Présentation Générale
Ralainirina Dina Randriantsizafy
Informatique scientifique
Présentation du bigdata et mongodb
Formation MongoDB – Pour débutant
Big data
Les données présentes sont constituées de données de
masse énormes.
• Données complexes et entrelacées
• Réseaux sociaux
• Données scientifiques, exemple: météo, climat
• Données économiques
Formation MongoDB – Pour débutant
Présentation big data mongoDB
• Les données deviennent énormes, Big data
• La structure des données devient complexe et évolutive, non figée
Ex: Données des clients, réseaux sociaux, géospaciales, …
• Le Data science s’appuie beaucoup sur le big data
• MongoDB est une système big data, c’est un logiciel libre
Pour plus d’informations : www.mongodb.com
Formation MongoDB – Pour débutant
Présentation big data mongoDB
MongoDB est une base de données de documents avec une
possibilité d’évolutivité et de flexibilité selon vos besoins.
Formation MongoDB – Pour débutant
Présentation big data mongoDB
• Le modèle de document de MongoDB est simple à utiliser et est utilisé par les
développeurs, tout en offrant toutes les fonctionnalités nécessaires pour répondre aux
exigences les plus complexes à n'importe quelle échelle. MongoDB fournit des pilotes pour
plus de 10 langages de programmation.
Python, Java, NodeJS, php, …
Formation MongoDB – Pour débutant
Présentation big data mongoDB
• MongoDB stocke les enregistrements de données sous forme de documents BSON. BSON
est une représentation binaire de documents JSON, bien qu'elle contienne plus de types
de données que JSON.
• Pour la spécification BSON, voir bsonspec.org.
Formation MongoDB – Pour débutant
Présentation big data mongoDB
• MongoDB stocke les données dans des documents flexibles de type JSON, ce qui signifie
que les champs peuvent varier d'un document à l'autre et que la structure des données
peut être modifiée au fil du temps.
• Le modèle de document correspond aux objets de votre code d'application, ce qui facilite
l'utilisation des données.
• Les requêtes ad hoc, l'indexation et l'agrégation en temps réel fournissent des moyens
puissants pour accéder et analyser vos données.
• MongoDB est une base de données distribuée à la base, de sorte que la haute disponibilité,
la mise à l'échelle horizontale et la distribution géographique sont intégrées et faciles à
utiliser.
• MongoDB est gratuit et open-source, publié sous la licence GNU Affero General Public
License
Formation MongoDB – Pour débutant
Présentation big data - Historique
MongoDB est développé depuis 2007 par 10Gen devenu MongoDB inc.
Cette entreprise travaillait alors sur un système de Cloud computing,
Sa première version considérée comme industriellement viable a été la 1.4, en 2010
SGBD NoSQL utilisé par Craigslist, eBay, Foursquare, SourceForge.net, Viacom, et le
New York Times3.
Formation MongoDB – Pour débutant
Ralainirina Dina Randriantsizafy
Informatique scientifique
Obtention de MongoDB
Formation MongoDB – Pour débutant
Obtention de mongoDB
• MongoDB est un logiciel libre
Libre de l’obtenir et de l’utiliser
www.mongodb.com
->Download
Téléchargement par défaut
Ou choisir son système
Formation MongoDB – Pour débutant
Obtention
mongoDB
Formation MongoDB – Pour débutant
Obtention
mongoDB
Formation MongoDB – Pour débutant
Obtention
mongoDB
Formation MongoDB – Pour débutant
Ralainirina Dina Randriantsizafy
Informatique scientifique
Crud
Prise en main
Formation MongoDB – Pour débutant
Prise en main de mongoDB
• mongod : Instance, serveur, deamon (service)
—host: adresse du serveur, peut être un nom de domaine,
ex:madb.com; par défaut 127.0.0.1
—port: port, par défaut 27017. -> 127.0.0.1:27017
—dbpath: chemin vers le répertoire base de données
• mongo: client pour se connecter
Une instance mongod peut accepter plusieurs clients en même temps.
Formation MongoDB – Pour débutant
Prise en main de mongoDB
• mongod : Instance, serveur, deamon (service)
—host: adresse du serveur, peut être un nom de domaine,
ex:madb.com; par défaut 127.0.0.1
—port: port, par défaut 27017. -> 127.0.0.1:27017
—dbpath: chemin vers le répertoire base de données
• mongo: client pour se connecter
Une instance mongod peut accepter plusieurs clients en même temps.
• Se placer dans le répertoire d’installation de mongoDB et aller dans le répertoire bin
Formation MongoDB – Pour débutant
Prise en main de mongoDB
• Les terminaux
Terminal 1
• Se placer dans le répertoire d’installation de mongoDB et aller dans le répertoire bin
Formation MongoDB – Pour débutant
Prise en main de mongoDB
• Les terminaux
Terminal 1
Terminal 2
Formation MongoDB – Pour débutant
Prise en main de mongoDB
• Les terminaux
Terminal 1
mongod —dbpath /data/db
SERVEUR
• Se placer dans le répertoire d’installation de mongoDB et aller dans le répertoire bin
Formation MongoDB – Pour débutant
Prise en main de mongoDB
• Les terminaux
Terminal 1
Terminal 2mongod —dbpath /data/db
SERVEUR
CLIENT
mongo
Formation MongoDB – Pour débutant
Base de données et données
Ralainirina Dina Randriantsizafy
Informatique scientifique
Crud
Formation MongoDB – Pour débutant
Base de données et données
Base de données
Collection
Document
Document
Document
MongoDB enregistre les données document sous forme BSON
dans des collections
Formation MongoDB – Pour débutant
Base de données et données
MongoDB enregistre les données document sous forme BSON
dans des collections
Document:
Rendu lisible sous JSON
{
Champ1: valeur1,
Champ2: valeur2,
Champ3: valeur3,
…
ChampN: valeurN,
}
Document imbriqué:
{
Champ1: valeur1,
Champ2: valeur2,
Champ3: {
Champ31: valeur31,
Champ32: valeur32,
Champ33: valeur33,
…
Champ3N: valeur3N,
},
…
ChampN: valeurN,
}
Formation MongoDB – Pour débutant
Base de données et données
• db
Affiche la base de données en utilisation
• use mabase
Accès à la base de données mabasse, crée la base mabase si elle n’existe pas encore
• show dbs
Affiche les bases de données
• Show collections
Affiche les collections de la base de données ouverte
• quit()
Ferme l’interface client
• Control C
Arrete le serveur mongod
Formation MongoDB – Pour débutant
Base de données et données
• Travaux pratiques
Formation MongoDB – Pour débutant
Ralainirina Dina Randriantsizafy
Informatique scientifique
Crud
Insertion de données
Formation MongoDB – Pour débutant
Insertion de données
• Nous allons insérer un document dans la base de données monecole.
• Nous allons créer une base de données de classe d’école
• Collection ce1
• Document avec des champs: nom, prenom, age, genre
Formation MongoDB – Pour débutant
Insertion de données
use monecole
Accès à la base ou création si elle n’existe pas
db.ce1.insertOne({nom:’Dubois’,prenom:’Jean’,age:7,genre:’M’})
Crée la collection ce1 et insère le premier document
db.ce1.insertOne({nom:’Forre’,prenom:’Anne’,age:7,genre:’F’})
insère le deuxième document
db.ce1.insertOne({nom:’Flavien’,prenom:’Solo’,age:7,genre:’M’})
insère le troisième document
db.ce1.find()
Affiche le contenu de la collection ce1
db.ce1.find().pretty()
Affiche le contenu de la collection ce1 avec un affichage agencé
Formation MongoDB – Pour débutant
Insertion de données
On peut utiliser une variable document
enfant={nom:’Justin’,prenom:’Claude’,age:7,genre:’M’}
Défini la variable enfant
db.ce1.insertOne(enfant)
insère la variable document enfant
Formation MongoDB – Pour débutant
Insertion de données
Insertion multiple
enfant1={nom:’Clovis’,prenom:’Claire’,age:8,genre:’F’}
enfant2={nom:’Robert’,prenom:’Marie Jeanne’,age:7,genre:’F’}
Défini les variables
db.ce1.insertMany([enfant1,enfant2])
insère les variables
Formation MongoDB – Pour débutant
• Travaux pratiques
Insertion de données
Formation MongoDB – Pour débutant
Lecture des données
Ralainirina Dina Randriantsizafy
Informatique scientifique
Crud
Formation MongoDB – Pour débutant
Lecture des données
db.ce1.find()
db.ce1.findOne()
Avec projection de comparaison
db.ce1.find({age:{$eq:8})
db.ce1.find({age:{$lt:8})
Formation MongoDB – Pour débutant
Lecture des données
Selection des champs à afficher: Afficher que les prénoms
db.ce1.find({},{prenom:1})
Formation MongoDB – Pour débutant
Lecture des données
Afficher que les prénoms
db.ce1.find({},{prenom:1})
Combiné
db.ce1.find({age:{$eq:8}},{prenom:1})
Formation MongoDB – Pour débutant
Lecture des données
Afficher que les prénoms
db.ce1.find({},{prenom:1})
Combiné
db.ce1.find({age:{$eq:8}},{prenom:1})
Affichage par ordre croissant suivant prénom
db.ce1.find().sort({prenom:1})
Combiné
db.ce1.find({age:{$eq:8}},{prenom:1}).sort({prenom:1})
Formation MongoDB – Pour débutant
• Travaux pratiques
Lecture des données
Formation MongoDB – Pour débutant
Importation Exportation JSON
Ralainirina Dina Randriantsizafy
Informatique scientifique
Importation Exportation
Formation MongoDB – Pour débutant
Importation JSON
• Contenu
Importation de données à partir de JSON
Exportation de données vers JSON
Formation MongoDB – Pour débutant
Importation JSON
• Objectifs
Importation de données d’une collection d’un fichier JSON
Exportation de données d’une collection vers un fichier JSON
• Conditions
Une instance mongod est ouverte
Un fichier JSON sans erreurs
Formation MongoDB – Pour débutant
Importation JSON
• Fichier JSON
{champ1 : valeur1, champ2:valeur2, champ3:valeur3}
{champ1 : valeur11, champ2:valeur21, champ3:valeur31}
{champ1 : valeur12, champ2:valeur22, champ3:valeur32, champ4:valeur4}
{champ1 : valeur13, champ2:valeur23, champ3:valeur33}
…
MongoDB est sans schéma (Schemaless)
TP avec le fichier auteurs.json
Formation MongoDB – Pour débutant
Importation JSON
• TP
Trois terminaux
SERVEUR mongod CLIENT mongo
Commandes
mongoimport
mongoexport
Nous allons lancer une instance
Importer les données
Vérifier qu’elles ont été importées
Formation MongoDB – Pour débutant
Importation JSON
• TP
Sur le troisième terminal
mongoimport —help
mongoimport —db mabase —collection auteurs —file auteurs.json
Pour vérifier, sur le terminal client
use mabase
db.auteurs.find()
Formation MongoDB – Pour débutant
Exportation JSON
• Objectif
Exportation de données d’une collection vers un fichier JSON
• Conditions
Une instance mongod est ouverte
Formation MongoDB – Pour débutant
Exportation JSON
• TP
Sur le troisième terminal
mongoexport —help
mongoexport —db mabase —collection auteurs —out mesauteurs.json
Pour vérifier, consulter le fichier mesauterus.json
Formation MongoDB – Pour débutant
Importation Exportation CSV
Ralainirina Dina Randriantsizafy
Informatique scientifique
Importation Exportation
Formation MongoDB – Pour débutant
Importation CSV
• Objectif
Importation de données d’une collection d’un fichier CSV
• Conditions
Une instance mongod est ouverte
Un fichier CSV sans erreurs, CSV est un tableur
Formation MongoDB – Pour débutant
Importation CSV
• Fichier CSV
Champ1,champ2
Valeur1,valeur2
Valeur11,valeu21
Valeur12,valeur22
…
La première ligne constitue les champs
Formation MongoDB – Pour débutant
Importation CSV
• TP
Trois terminaux
SERVEUR mongod CLIENT mongo
Commandes
mongoimport
mongoexport
Nous allons lancer une instance
Importer les données
Vérifier qu’elles ont été importées
Formation MongoDB – Pour débutant
Exportation CSV
• Objectif
Exportation de données d’une collection vers un fichier CSV
• Conditions
Une instance mongod est ouverte
Formation MongoDB – Pour débutant
Exportation CSV
• TP
Sur le troisième terminal
mongoexport —help
mongoexport —db mabase —collection auteurs —type csv —fields nom,prenom —out mesauteurs.csv
Pour vérifier, consulter le fichier mesauterus.csv
Formation MongoDB – Pour débutant
Importation CSV
• TP
Sur le troisième terminal
mongoimport —help
mongoimport —db mabase —collection autcsv —type csv —headerline —file mesauteurs.csv
OU
mongoimport —db mabase -c autcsv -t csv —headerline -f mesauteurs.csv
Pour vérifier, sur le terminal client
use mabase
db.autcsv.find()
Formation MongoDB – Pour débutant
Import/Export Exemple réel
Ralainirina Dina Randriantsizafy
Informatique scientifique
Importation Exportation
Formation MongoDB – Pour débutant
Masse de données
•data.gouv.fr
Formation MongoDB – Pour débutant
Masse de données
•data.gouv.fr
•data.gouv.fr
Formation MongoDB – Pour débutant
Masse de données
•data.gouv.fr
Formation MongoDB – Pour débutant
Masse de données
•data.gouv.fr
Formation MongoDB – Pour débutant
A supprimer
Formation MongoDB – Pour débutant
2043 lignes avec la ligne des champs
Formation MongoDB – Pour débutant
2043 lignes avec la ligne des champs
Code région,Nom de la région,Code département,Code canton,Nom du canton,Nombre de communes,Population municipale,Population totale
84,Auvergne-Rhône-Alpes,01,01,Ambérieu-en-Bugey,18,29 626,30 551
84,Auvergne-Rhône-Alpes,01,02,Attignat,19,24 440,24 914
84,Auvergne-Rhône-Alpes,01,03,Bellegarde-sur-Valserine,15,21 373,21 910
84,Auvergne-Rhône-Alpes,01,04,Belley,35,24 216,24 952
84,Auvergne-Rhône-Alpes,01,05,Bourg-en-Bresse-1,2,31 801,33 158
84,Auvergne-Rhône-Alpes,01,06,Bourg-en-Bresse-2,4,28 101,29 413
84,Auvergne-Rhône-Alpes,01,07,Ceyzériat,22,25 206,25 892
84,Auvergne-Rhône-Alpes,01,08,Châtillon-sur-Chalaronne,26,29 667,30 441
84,Auvergne-Rhône-Alpes,01,09,Gex,7,29 557,30 421
84,Auvergne-Rhône-Alpes,01,10,Hauteville-Lompnes,37,22 209,22 817
84,Auvergne-Rhône-Alpes,01,11,Lagnieu,26,32 825,33 453
84,Auvergne-Rhône-Alpes,01,12,Meximieux,15,32 628,33 321
84,Auvergne-Rhône-Alpes,01,13,Miribel,8,27 562,28 065
84,Auvergne-Rhône-Alpes,01,14,Nantua,17,21 477,22 253
84,Auvergne-Rhône-Alpes,01,15,Oyonnax,2,25 890,26 618
84,Auvergne-Rhône-Alpes,01,16,Pont-d'Ain,24,21 615,22 184
84,Auvergne-Rhône-Alpes,01,17,Replonges,32,30 678,31 407
84,Auvergne-Rhône-Alpes,01,18,Saint-Étienne-du-Bois,27,22 232,22 778
84,Auvergne-Rhône-Alpes,01,19,Saint-Genis-Pouilly,4,31 204,31 922
84,Auvergne-Rhône-Alpes,01,20,Thoiry,16,26 848,27 595
84,Auvergne-Rhône-Alpes,01,21,Trévoux,12,31 733,32 783
84,Auvergne-Rhône-Alpes,01,22,Villars-les-Dombes,25,31 801,32 458
84,Auvergne-Rhône-Alpes,01,23,Vonnas,19,23 438,24 003
32,Hauts-de-France,02,01,Bohain-en-Vermandois,31,22 492,22 912
32,Hauts-de-France,02,02,Château-Thierry,21,26 883,27 590
32,Hauts-de-France,02,03,Chauny,21,24 518,25 278
32,Hauts-de-France,02,04,Essômes-sur-Marne,47,29 059,29 810
32,Hauts-de-France,02,05,Fère-en-Tardenois,78,28 020,28 601
32,Hauts-de-France,02,06,Guignicourt,78,26 435,27 032
32,Hauts-de-France,02,07,Guise,45,24 055,24 542
32,Hauts-de-France,02,08,Hirson,26,22 037,22 623
32,Hauts-de-France,02,09,Laon-1,30,25 818,26 397
32,Hauts-de-France,02,10,Laon-2,25,25 553,26 462
32,Hauts-de-France,02,11,Marle,65,20 110,20 690
32,Hauts-de-France,02,12,Ribemont,52,26 771,27 212
Lorsque exporté vers
fichier CSV
Formation MongoDB – Pour débutant
2043 lignes avec la ligne des champs
Code région,Nom de la région,Code département,Code canton,Nom du canton,Nombre de
communes,Population municipale,Population totale
84,Auvergne-Rhône-Alpes,01,01,Ambérieu-en-Bugey,18,29 626,30 551
84,Auvergne-Rhône-Alpes,01,02,Attignat,19,24 440,24 914
84,Auvergne-Rhône-Alpes,01,03,Bellegarde-sur-Valserine,15,21 373,21 910
84,Auvergne-Rhône-Alpes,01,04,Belley,35,24 216,24 952
84,Auvergne-Rhône-Alpes,01,05,Bourg-en-Bresse-1,2,31 801,33 158
84,Auvergne-Rhône-Alpes,01,06,Bourg-en-Bresse-2,4,28 101,29 413
84,Auvergne-Rhône-Alpes,01,07,Ceyzériat,22,25 206,25 892
84,Auvergne-Rhône-Alpes,01,08,Châtillon-sur-Chalaronne,26,29 667,30 441
84,Auvergne-Rhône-Alpes,01,09,Gex,7,29 557,30 421
84,Auvergne-Rhône-Alpes,01,10,Hauteville-Lompnes,37,22 209,22 817
84,Auvergne-Rhône-Alpes,01,11,Lagnieu,26,32 825,33 453
84,Auvergne-Rhône-Alpes,01,12,Meximieux,15,32 628,33 321
84,Auvergne-Rhône-Alpes,01,13,Miribel,8,27 562,28 065
84,Auvergne-Rhône-Alpes,01,14,Nantua,17,21 477,22 253
84,Auvergne-Rhône-Alpes,01,15,Oyonnax,2,25 890,26 618
84,Auvergne-Rhône-Alpes,01,16,Pont-d'Ain,24,21 615,22 184
FICHIER CSV
population2014.csv
Formation MongoDB – Pour débutant
Masse de données
./mongoimport --db mabase --collection pop2014 --type csv —headerline —file
population2014.csv
TP
TERMINAL CLIENT
Formation MongoDB – Pour débutant
Masse de données
TERMINAL CLIENT
Ensuite vous lancez le client
./mongo
>use mabase
> db.pop2014.findOne()
{
"_id" : ObjectId("59f25ebfa28a8dce78cf2e9f"),
"Code région" : 84,
"Nom de la région" : "Auvergne-Rhône-Alpes",
"Code département" : 1,
"Code canton" : 1,
"Nom du canton" : "Ambérieu-en-Bugey",
"Nombre de communes" : 18,
"Population municipale" : "29 626",
"Population totale" : "30 551"
}
> db.pop2014.find().count()
2042
Formation MongoDB – Pour débutant
Introduction aux requêtes de : find ()
Ralainirina Dina Randriantsizafy
Informatique scientifique
Les requêtes de MongoDB
Formation MongoDB – Pour débutant
Requêtes find
db.collection.find(requêtes, projection)
Sélectionne les documents dans une collection et renvoie un curseur vers les
documents sélectionnés.
Requêtes:
optionnelle et sous forme de document, filtre de sélection des documents à afficher.
Projections:
Optionnelle et sous forme de document, permet de n’afficher que certains champs
db.collection.findOne(requêtes, projection)
Affiche le premier document correspondant à find
Formation MongoDB – Pour débutant
Requêtes find
Reprenons la population 2014
>db.pop2014.find()
Affiche tous les documents 20 par 20
« it » permet de passer à la « page » suivante
>db.pop2014.find().pretty()
Affiche tous les documents plus arrangé
{
"_id" : ObjectId("59f49559a28a8dce78cf3f6f"),
"Code région" : 84,
"Nom de la région" : "Auvergne-Rhône-Alpes",
"Code département" : 1,
"Code canton" : 1,
"Nom du canton" : "Ambérieu-en-Bugey",
"Nombre de communes" : 18,
"Population municipale" : 29626,
"Population totale" : 30551,
"" : ""
}
Formation MongoDB – Pour débutant
Requêtes find égalité
Les requêtes égalité
>db.collection.find({chp1:val1,chp2,val2,…})
Affiche tous les documents dont le chp1=val1,
chp2=val2, …
Exemple:
>db.pop2014.find({‘Code région’:84})
Affiche tous les documents dont le Code région=84
>db.pop2014.find({‘Code région’:84,‘Code canton’:19})
Affiche tous les documents dont le Code région=84 et Code canton=19
{
"_id" : ObjectId("59f49559a28a8dce78cf3f6f"),
"Code région" : 84,
"Nom de la région" : "Auvergne-Rhône-Alpes",
"Code département" : 1,
"Code canton" : 1,
"Nom du canton" : "Ambérieu-en-Bugey",
"Nombre de communes" : 18,
"Population municipale" : 29626,
"Population totale" : 30551,
"" : ""
}
Formation MongoDB – Pour débutant
Requêtes find comparaison
Les requêtes de comparaison
>db.collection.find({chp1:{$comparaison:val1}})
Affiche les documents dont le chp1 satisfait à la comparaison par rapport à la valeur val1
$comparaison: $eq Correspond aux valeurs qui sont égales à une valeur spécifiée.
$gt. Correspond aux valeurs qui sont supérieures à une valeur spécifiée.
$gte Correspond aux valeurs qui sont supérieures ou égales à une valeur
spécifiée.
$in Correspond à l'une des valeurs spécifiées dans un tableau.
$lt Correspond aux valeurs qui sont inférieures à une valeur spécifiée.
$lte Correspond aux valeurs qui sont inférieures ou égales à une valeur
spécifiée.
$ne Correspond aux valeurs qui ne sont pas égales à une valeur spécifiée.
$nin Correspond à aucune des valeurs spécifiées dans un tableau.
Formation MongoDB – Pour débutant
Requêtes find comparaison
Les requêtes de comparaison
>db.collection.find({"Code région" : {$gt:80}})
Affiche les documents dont le Code région est supérieur à 80
>db.collection.find({"Population totale" : {$lt:27000}})
Affiche les documents dont la population totale est inférieure à 27000
>db.collection.find({"Population totale" : {$lt:27000}},{‘Nom de la région’:1,’Population totale’:1})
{
"_id" : ObjectId("59f49559a28a8dce78cf3f6f"),
"Code région" : 84,
"Nom de la région" : "Auvergne-Rhône-Alpes",
"Code département" : 1,
"Code canton" : 1,
"Nom du canton" : "Ambérieu-en-Bugey",
"Nombre de communes" : 18,
"Population municipale" : 29626,
"Population totale" : 30551,
"" : ""
}
Formation MongoDB – Pour débutant
Les méthodes sur cursors: limit, skip et sort
Ralainirina Dina Randriantsizafy
Informatique scientifique
Les requêtes de MongoDB
Formation MongoDB – Pour débutant
Les méthodes de cursor
db.collection.find().limit(N)
Affiche les N premiers documents correspondants à la requête find()
db.collection.find().skip(N)
Evite les N premiers documents correspondants à la requête find(), affiche les
documents à partir du N+1 document du résultat
db.collection.find().sort({champ:1})
Affiche les documents correspondants à la requête en ordre croissant selon le champ
db.collection.find().sort({champ:-1})
Affiche les documents correspondants à la requête en ordre décroissant selon le
champ
Formation MongoDB – Pour débutant
Les méthodes de cursor
> db.pop2014.find()
{ "_id" : ObjectId("59f49559a28a8dce78cf3f71"), "Code région" : 84, "Nom de la région" : "Auvergne-
Rhône-Alpes", "Code département" : 1, "Code canton" : 5, "Nom du canton" : "Bourg-en-Bresse-1",
"Nombre de communes" : 2, "Population municipale" : 31801, "Population totale" : 33158, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f72"), "Code région" : 84, "Nom de la région" : "Auvergne-
Rhône-Alpes", "Code département" : 1, "Code canton" : 4, "Nom du canton" : "Belley", "Nombre de
communes" : 35, "Population municipale" : 24216, "Population totale" : 24952, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f73"), "Code région" : 84, "Nom de la région" : "Auvergne-
Rhône-Alpes", "Code département" : 1, "Code canton" : 7, "Nom du canton" : "Ceyzériat", "Nombre de
communes" : 22, "Population municipale" : 25206, "Population totale" : 25892, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f74"), "Code région" : 84, "Nom de la région" : "Auvergne-
Rhône-Alpes", "Code département" : 1, "Code canton" : 3, "Nom du canton" : "Bellegarde-sur-
Valserine", "Nombre de communes" : 15, "Population municipale" : 21373, "Population totale" : 21910,
"" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f75"), "Code région" : 84, "Nom de la région" : "Auvergne-
Rhône-Alpes", "Code département" : 1, "Code canton" : 6, "Nom du canton" : "Bourg-en-Bresse-2",
"Nombre de communes" : 4, "Population municipale" : 28101, "Population totale" : 29413, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f76"), "Code région" : 84, "Nom de la région" : "Auvergne-
Rhône-Alpes", "Code département" : 1, "Code canton" : 8, "Nom du canton" : "Châtillon-sur-
Chalaronne", "Nombre de communes" : 26, "Population municipale" : 29667, "Population totale" :
30441, "" : "" }
Formation MongoDB – Pour débutant
Les méthodes de cursor
> db.pop2014.find().limit(4)
{ "_id" : ObjectId("59f49559a28a8dce78cf3f6f"), "Code région" : 84, "Nom de la région" :
"Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 1, "Nom du canton" :
"Ambérieu-en-Bugey", "Nombre de communes" : 18, "Population municipale" : 29626,
"Population totale" : 30551, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f70"), "Code région" : 84, "Nom de la région" :
"Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 2, "Nom du canton" :
"Attignat", "Nombre de communes" : 19, "Population municipale" : 24440, "Population totale" :
24914, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f71"), "Code région" : 84, "Nom de la région" :
"Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 5, "Nom du canton" : "Bourg-
en-Bresse-1", "Nombre de communes" : 2, "Population municipale" : 31801, "Population totale" :
33158, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f72"), "Code région" : 84, "Nom de la région" :
"Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 4, "Nom du canton" :
"Belley", "Nombre de communes" : 35, "Population municipale" : 24216, "Population totale" :
24952, "" : "" }
Formation MongoDB – Pour débutant
Les méthodes de cursor
Skip
{ "_id" : ObjectId("59f49559a28a8dce78cf3f6f"), "Code région" : 84, "Nom de la région" :
"Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 1, "Nom du canton" :
"Ambérieu-en-Bugey", "Nombre de communes" : 18, "Population municipale" : 29626,
"Population totale" : 30551, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f70"), "Code région" : 84, "Nom de la région" :
"Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 2, "Nom du canton" :
"Attignat", "Nombre de communes" : 19, "Population municipale" : 24440, "Population totale" :
24914, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f71"), "Code région" : 84, "Nom de la région" :
"Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 5, "Nom du canton" : "Bourg-
en-Bresse-1", "Nombre de communes" : 2, "Population municipale" : 31801, "Population totale" :
33158, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f72"), "Code région" : 84, "Nom de la région" :
"Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 4, "Nom du canton" :
"Belley", "Nombre de communes" : 35, "Population municipale" : 24216, "Population totale" :
24952, "" : "" }
Formation MongoDB – Pour débutant
Les méthodes de cursor
> db.pop2014.find().skip(2)
{ "_id" : ObjectId("59f49559a28a8dce78cf3f71"), "Code région" : 84, "Nom de la région" : "Auvergne-
Rhône-Alpes", "Code département" : 1, "Code canton" : 5, "Nom du canton" : "Bourg-en-Bresse-1",
"Nombre de communes" : 2, "Population municipale" : 31801, "Population totale" : 33158, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f72"), "Code région" : 84, "Nom de la région" : "Auvergne-
Rhône-Alpes", "Code département" : 1, "Code canton" : 4, "Nom du canton" : "Belley", "Nombre de
communes" : 35, "Population municipale" : 24216, "Population totale" : 24952, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f73"), "Code région" : 84, "Nom de la région" : "Auvergne-
Rhône-Alpes", "Code département" : 1, "Code canton" : 7, "Nom du canton" : "Ceyzériat", "Nombre de
communes" : 22, "Population municipale" : 25206, "Population totale" : 25892, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f74"), "Code région" : 84, "Nom de la région" : "Auvergne-
Rhône-Alpes", "Code département" : 1, "Code canton" : 3, "Nom du canton" : "Bellegarde-sur-
Valserine", "Nombre de communes" : 15, "Population municipale" : 21373, "Population totale" : 21910,
"" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f75"), "Code région" : 84, "Nom de la région" : "Auvergne-
Rhône-Alpes", "Code département" : 1, "Code canton" : 6, "Nom du canton" : "Bourg-en-Bresse-2",
"Nombre de communes" : 4, "Population municipale" : 28101, "Population totale" : 29413, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf3f76"), "Code région" : 84, "Nom de la région" : "Auvergne-
Rhône-Alpes", "Code département" : 1, "Code canton" : 8, "Nom du canton" : "Châtillon-sur-
Chalaronne", "Nombre de communes" : 26, "Population municipale" : 29667, "Population totale" :
30441, "" : "" }
Formation MongoDB – Pour débutant
Les méthodes de cursor
> db.pop2014.find().sort({‘Population totale’:1})
{ "_id" : ObjectId("59f49559a28a8dce78cf4668"), "Code région" : 52, "Nom de la région" : "Pays de la
Loire", "Code département" : 85, "Code canton" : 7, "Nom du canton" : "L' île-d'Yeu", "Nombre de
communes" : 1, "Population municipale" : 4703, "Population totale" : 4802, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf4353"), "Code région" : 76, "Nom de la région" : "Occitanie",
"Code département" : 48, "Code canton" : 7, "Nom du canton" : "Langogne", "Nombre de communes" :
10, "Population municipale" : 4724, "Population totale" : 4991, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf4351"), "Code région" : 76, "Nom de la région" : "Occitanie",
"Code département" : 48, "Code canton" : 5, "Nom du canton" : "Florac", "Nombre de communes" : 10,
"Population municipale" : 4934, "Population totale" : 5176, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf4352"), "Code région" : 76, "Nom de la région" : "Occitanie",
"Code département" : 48, "Code canton" : 6, "Nom du canton" : "Grandrieu", "Nombre de communes" :
21, "Population municipale" : 5062, "Population totale" : 5211, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf4350"), "Code région" : 76, "Nom de la région" : "Occitanie",
"Code département" : 48, "Code canton" : 4, "Nom du canton" : "Le Collet-de-Dèze", "Nombre de
communes" : 23, "Population municipale" : 5083, "Population totale" : 5245, "" : "" }
.
.
.
Formation MongoDB – Pour débutant
Les méthodes de cursor
> db.pop2014.find().sort({‘Population totale’:-1})
{ "_id" : ObjectId("59f49559a28a8dce78cf4531"), "Code région" : 84, "Nom de la région" : "Auvergne-
Rhône-Alpes", "Code département" : 69, "Code canton" : 0, "Nom du canton" : "Métropole de Lyon
(hors cantons)", "Nombre de communes" : 59, "Population municipale" : 1354476, "Population totale" :
1374964, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf46fd"), "Code région" : 11, "Nom de la région" : "Île-de-
France", "Code département" : 93, "Code canton" : 5, "Nom du canton" : "Bobigny", "Nombre de
communes" : 2, "Population municipale" : 90500, "Population totale" : 90949, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf4704"), "Code région" : 11, "Nom de la région" : "Île-de-
France", "Code département" : 93, "Code canton" : 12, "Nom du canton" : "Montreuil-1", "Nombre de
communes" : 2, "Population municipale" : 88292, "Population totale" : 88945, "" : "" }
{ "_id" : ObjectId("59f49559a28a8dce78cf470a"), "Code région" : 11, "Nom de la région" : "Île-de-
France", "Code département" : 93, "Code canton" : 18, "Nom du canton" : "Saint-Ouen", "Nombre de
communes" : 3, "Population municipale" : 86313, "Population totale" : 86814, "" : "" }
Formation MongoDB – Pour débutant
Requêtes sur les tableaux
Ralainirina Dina Randriantsizafy
Informatique scientifique
Les requêtes de MongoDB
Formation MongoDB – Pour débutant
Requêtes sur les tableaux
Les tableaux ou les tables, des array
Champ:[val1,val2,val3,…]
Notre exemple: eleves.json
…
{nom:"Henri20","prenom":"Jean","activites":["basket","piano","natation"]}
{nom:"Henri21","prenom":"Jean","activites":["foot","basket","piano","natation"]}
{nom:"Henri22","prenom":"Jean","activites":["basket","piano","natation","chant"]}
{nom:"Henri23","prenom":"Jean","activites":["foot","violon","chant"]}
{nom: »Henri24","prenom":"Jean","activites":["foot","basket","piano","natation"]}
…
Formation MongoDB – Pour débutant
Requêtes sur les tableaux
Rappel: importation du fichier json
./mongoimport --db mabase -c eleve --file eleves.json
./mongo
>use mabase
>db.eleve.findOne()
Pour voir la structure des données
Exercice: requêtes sur le champ activites
Formation MongoDB – Pour débutant
Requêtes sur les tableaux
> db.eleve.find({"activites":"piano"})
Affiche tous les documents dont le tableau activites contient l’élément "piano"
> db.eleve.find({activites:["foot","basket","piano"]})
Affiche tous les documents dont le tableau activites est exactement égal à
["foot","basket","piano"]
> db.eleve.find({activites:["foot","piano"]})
Ne donne rien comme résultat.
Formation MongoDB – Pour débutant
Requêtes sur les tableaux
> db.eleve.find({activites:{$all:["foot","piano"]}})
Affiche tous les documents dont le tableau activites contient les éléments "foot" et "piano"
dans le désordre.
> db.eleve.find({activites:{$all:[« piano","foot"]}})
Donne le même résultat
Formation MongoDB – Pour débutant
Requêtes sur les tableaux
> db.eleve.find({activites:{$size:2}})
Affiche tous les documents dont le tableau activites contient 2 éléments
> db.eleve.find({activites:{$all:["piano","foot"]}}).count()
Affiche le nombre d'élèves qui ont comme activités le piano et le foot.
Execrice: afficher le nombre d’élèves qui ont 4 activités
Formation MongoDB – Pour débutant
Indexation
Ralainirina Dina Randriantsizafy
Informatique scientifique
Les requêtes de MongoDB
Formation MongoDB – Pour débutant
Indexation
• Les index permettent à MongoDB de traiter et de répondre
rapidement aux requêtes en créant des représentations petites et
efficaces des documents dans une collection.
• Les utilisateurs peuvent créer des index pour n'importe quelle
collection sur n'importe quel champ d'un document. Par défaut,
MongoDB crée un index sur le champ _id de chaque collection.
• Ce tutoriel explique comment créer un index sur un seul champ.
MongoDB prend également en charge les index composés, qui
sont des index sur plusieurs champs.
Formation MongoDB – Pour débutant
Indexation
• Principe:
Document avec index par défaut
Exemple pour la pop2014
{ "_id" : ObjectId("59f49559a28a8dce78cf3f81"), "Code région" :
84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code
département" : 1, "Code canton" : 20, "Nom du canton" : "Thoiry",
"Nombre de communes" : 16, "Population municipale" : 26848,
"Population totale" : 27595, "" : "" }
Formation MongoDB – Pour débutant
Indexation
• Principe:
Si on fait souvent des requêtes sur nom de région, mongoDB va
parcourir toute la base de données, même si elle a déjà exécuté la
requête. C’est une perte de temps.
Formation MongoDB – Pour débutant
Indexation
• Principe:
Si un index est créé pour le champ
nom de région , le champ sera trier de façon
croissante ou décroissante.
La recherche du champ d’une requête sera plus
rapide.
MongDB saura qu’il devra s’arrêté quand il
aura atteint son objectif.
1
2
3
4
N
Formation MongoDB – Pour débutant
Indexation
• Méthode:
1.Bien choisir le champ à indexer, pourquoi l’indexer ?
2.Indexer le champ
3.Les requêtes portent le plus souvent sur ce champ
4.Requêtes sur d’autres champs: aucun avantage
5.Un index peut être supprimé
6.Il peut y avoir plusieurs index
Formation MongoDB – Pour débutant
Indexation
• Méthode:
>db.collection.createIndex({champ:1},{name: nom_index})
Le champ sera indexé de façon croissante
{name: nom_index} donne un nom à un index, optionnelle
>db.collection.createIndex({champ:-1})
Le champ sera indexé de façon décroissante
>db.collection.getIndexes()
Montre les index créés pour la collection
Formation MongoDB – Pour débutant
Indexation
• Méthode:
Index multiple
>db.collection.createIndex({champ1:1, champ2:1})
Formation MongoDB – Pour débutant
Indexation
• Méthode de suppression:
>db.collection.dropIndex({champ:1})
Supprime l’indexation du champ spécifié
>db.collection.dropIndex(nom_index)
Supprime l’index nommé nom_index
>db.collection.dropIndexes()
Supprime tous les index de la collection
Formation MongoDB – Pour débutant
Indexation
• TP:
TP d’indexation sur les nom de région et population totale
Formation MongoDB – Pour débutant
Aggrégation
Ralainirina Dina Randriantsizafy
Informatique scientifique
Les requêtes de MongoDB
Formation MongoDB – Pour débutant
Aggregation
• Les opérations d'agrégation traitent les enregistrements de
données et renvoient les résultats calculés.
• Les opérations d'agrégation regroupent les valeurs de plusieurs
documents et peuvent effectuer diverses opérations sur les
données groupées pour renvoyer un résultat unique.
• MongoDB propose trois méthodes d'agrégation: le pipeline
d'agrégation, la fonction de réduction de la carte (ou
MapReduce) et les méthodes d'agrégation à usage unique.
Formation MongoDB – Pour débutant
Aggregation Pipeline
• Le cadre d'agrégation de MongoDB est basé sur le concept des
pipelines (tuyau) de traitement de données. Les documents
entrent dans un pipeline à plusieurs étapes qui transforme les
documents en un résultat agrégé.
• $match : Les étapes de pipeline les plus élémentaires fournissent
des filtres qui fonctionnent comme des requêtes et des
transformations de documents qui modifient la forme du
document de sortie.
Formation MongoDB – Pour débutant
Aggregation Pipeline
• $group … D’autres opérations de pipeline fournissent des outils
pour regrouper et trier des documents par champ ou champs
spécifiques, ainsi que des outils pour agréger le contenu des
tableaux, y compris des tableaux de documents. De plus, les
étapes de pipeline peuvent utiliser des opérateurs pour des
tâches telles que le calcul de la moyenne ou la concaténation
d'une chaîne.
Formation MongoDB – Pour débutant
Aggregation
Pipeline
Formation MongoDB – Pour débutant
Aggregation MapReduce
MongoDB fournit également des opérations de réduction de
mappage pour effectuer l'agrégation. En général, les opérations de
réduction de mappage comportent deux phases: une étape de
mappage qui traite chaque document et émet un ou plusieurs
objets pour chaque document d'entrée, et réduit la phase qui
combine la sortie de l'opération de mappage.
En option, map-reduce peut avoir une étape de finalisation pour
apporter des modifications finales au résultat. Comme d'autres
opérations d'agrégation, map-reduce peut spécifier une condition
de requête pour sélectionner les documents d'entrée, trier et limiter
les résultats.
Formation MongoDB – Pour débutant
Aggregation
MapReduce
Formation MongoDB – Pour débutant
Aggregation Single purpose
usage unique
Recherche les valeurs distinctes
d'un champ spécifié dans une
seule collection ou vue et renvoie
les résultats dans un tableau.
Formation MongoDB – Pour débutant
Aggregation Pratique: Pipeline
• Pipeline: composé de séquences
$match
$group
$limit
$skip
$sort
$redact
$project
…
Des exemples avec pop2014
Formation MongoDB – Pour débutant
Aggregation Pratique: Pipeline
Des exemples avec pop2014
{ "_id" : ObjectId("59f49559a28a8dce78cf3f81"), "Code région" :
84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code
département" : 1, "Code canton" : 20, "Nom du canton" : "Thoiry",
"Nombre de communes" : 16, "Population municipale" : 26848,
"Population totale" : 27595, "" : "" }
Objectif:
Lister les cantons qui ont un nombre déterminé de communes, par
exemple 14 ou 10, ensuite les regrouper par région
Formation MongoDB – Pour débutant
Aggregation Pratique: Pipeline
Des exemples avec pop2014
Objectif:
Lister les cantons qui ont un nombre déterminé de communes, par exemple 14 ou 10,
ensuite les regrouper par région
> db.pop2014.aggregate([{$match:{"Nombre de
communes":10}},{$group:{_id:"$Code
région",totale:{$sum:"$Population totale"}}}])
Formation MongoDB – Pour débutant
Aggregation Pratique: Usage unique
Des exemples avec pop2014
Objectif:
Lister les noms des régions, et des cantons
db.pop2014.distinct("Nom de la région »)
db.pop2014.distinct("Nom du canton ")
Pour arranger par ordre croissant:
db.pop2014.distinct("Nom du canton").sort()
Formation MongoDB – Pour débutant
Principe des utilisateurs
Ralainirina Dina Randriantsizafy
Informatique scientifique
Gestion des utilisateurs
Formation MongoDB – Pour débutant
Principe des utilisateurs, authentification
•L'authentification est le processus de vérification de l'identité d'un client.
Lorsque le contrôle d'accès, c'est-à-dire l'autorisation, est activé, MongoDB
exige que tous les clients s'authentifient afin de déterminer leur accès. Bien
que l'authentification et l'autorisation soient étroitement liées,
l'authentification est distincte de l'autorisation.
•L'authentification (QUI) vérifie l'identité d'un utilisateur;
•L'autorisation (FAIRE QUOI) détermine l'accès de l'utilisateur vérifié aux
ressources et aux opérations.
Formation MongoDB – Pour débutant
•Un utilisateur : Login, mot de passe, une base de données, rôle
•Authentification : active avec l’option –auth de mongod
Principe des utilisateurs, authentification
Formation MongoDB – Pour débutant
•La commande mongod - –auth
•Permet l'autorisation de contrôler l'accès de l'utilisateur aux ressources et
opérations de la base de données. Lorsque l'autorisation est activée,
MongoDB exige que tous les clients s'authentifient d'abord afin de
déterminer l'accès pour le client.
•Si aucun utilisateur n'existe, l'interface localhost continuera d'avoir accès à
la base de données jusqu'à ce que le premier utilisateur soit créé.
Principe des utilisateurs, authentification
Formation MongoDB – Pour débutant
Gestion des utilisateurs
Ralainirina Dina Randriantsizafy
Informatique scientifique
Gestion des utilisateurs
Formation MongoDB – Pour débutant
Gestion des utilisateurs
•Création
•Modification
•Affichage de/des utilisateurs
•Suppression
Formation MongoDB – Pour débutant
Gestion des utilisateurs
•Création
•use mabase
•db.createUser({user:’utilisateur’,pwd:’mot de passe’,roles:[liste]})
•On peut créer plusieurs utilisateurs pour une base de données,
•Exemple:
•db.createUser({user:’toto’,pwd:’mdp_toto_2017’,roles:[‘readWrite’]})
•Crée l’utilisateur toto, pour la base de données en cours, avec le mot de
passe mdp_toto_2017
Formation MongoDB – Pour débutant
Gestion des utilisateurs
•Modification
•db.changeUserPassword("utilisateur", "mot de passe")
•Exemple:
•db.changeUserPassword("toto", "mdp_2017")
•Modifie le mot de passe de l’utilisateur toto, pour la base de données en
cours.
TP
Formation MongoDB – Pour débutant
Gestion des utilisateurs
•Affichage
•db.getUser ("utilisateur")
Affiche les informations de l’utilisateur spécifié
•db.getUsers()
Affiche tous les utilisateurs de la base de données en cours
TP
Formation MongoDB – Pour débutant
Gestion des utilisateurs
•Suppression
•db.dropUser ("utilisateur")
Supprime le compte utilisateur spécifié
•db.dropAllUsers()
Supprime tous les utilisateurs de la base de données en cours
TP
Formation MongoDB – Pour débutant
Authentification
Ralainirina Dina Randriantsizafy
Informatique scientifique
Gestion des utilisateurs
Formation MongoDB – Pour débutant
Authentification
•L’authentification des utilisateurs doit être activée
•Une fois un utilisateur est créé pour une base de données,
l’authentification est obligatoire pour cette base
•L'activation du contrôle d'accès sur un déploiement MongoDB renforce
l'authentification, ce qui oblige les utilisateurs à s'identifier. Lors de l'accès
à un déploiement MongoDB dont le contrôle d'accès est activé, les
utilisateurs peuvent uniquement effectuer des actions en fonction de leurs
rôles.
Formation MongoDB – Pour débutant
Authentification, mécanisme
•Il existe plusieurs types de mécanismes d’authentification
•Par defaut: SCRAM-SHA-1
•SCRAM-SHA-1 vérifie les informations d'identification de l'utilisateur
fournies par rapport au nom, au mot de passe et à la base de données
d'authentification de l'utilisateur. La base de données d'authentification est
la base de données dans laquelle l'utilisateur a été créé et, avec le nom de
l'utilisateur, sert à identifier l'utilisateur.
Formation MongoDB – Pour débutant
Authentification, pratiquement
•Deux méthodes d’authentification
1. Authentification sous client
2. Authentification au lancement de mongo
Formation MongoDB – Pour débutant
Authentification, pratiquement
• Authentification sous client
Instance ‘normale’ avec —auth
./mongod —-dbpath data/db --auth
Pour le client
./mongo
>use abase
>db.auth({user:’utilisateur’,pwd:’motdepasse’})
Sans l’authentification, la base sera inutilisable
Formation MongoDB – Pour débutant
Authentification, pratiquement
• Authentification au lancement de mongo
Instance ‘normale’ avec —-auth
./mongod —-dbpath data/db --auth
Pour le client
./mongo -u ‘utilisateur’ -p ‘motdepasse’ --authenticationDatabase ‘mabase’
TP
Formation MongoDB – Pour débutant
Rôle des utilisateurs
Ralainirina Dina Randriantsizafy
Informatique scientifique
Gestion des utilisateurs
Formation MongoDB – Pour débutant
Rôles des utilisateurs
•MongoDB accorde l'accès aux données et aux commandes via une
autorisation basée sur les rôles et fournit des rôles intégrés (Built-in rôles)
qui fournissent les différents niveaux d'accès généralement nécessaires
dans un système de base de données.
•Vous pouvez en outre créer des rôles définis par l'utilisateur.
Formation MongoDB – Pour débutant
Rôles des utilisateurs
•MongoDB accorde l'accès aux données et aux commandes via une
autorisation basée sur les rôles et fournit des rôles intégrés (Built-in rôles)
qui fournissent les différents niveaux d'accès généralement nécessaires
dans un système de base de données.
•Vous pouvez en outre créer des rôles définis par l’utilisateur.
•Un rôle accorde des privilèges pour effectuer des ensembles d'actions sur
des ressources définies. Un rôle donné s'applique à la base de données sur
laquelle il est défini et peut accorder un accès à un niveau de la collection.
Formation MongoDB – Pour débutant
Rôles des utilisateurs
>use mabase
>db.createUser(
{
user: "utilisateur",
pwd: "motdepasse",
roles: [ « role"]
})
Formation MongoDB – Pour débutant
Rôles des utilisateurs
1.Rôles d’utilisateur de base de données
2.Rôles d’administration de base de données
Pour ce cours
Formation MongoDB – Pour débutant
Rôles des utilisateurs
Rôles utilisateurs
read
Offre la possibilité de lire des données sur toutes les collections non-système et sur les collections
système suivantes: system.indexes, system.js et system.namespaces. Le rôle fournit un accès en
lecture en accordant les actions suivantes:
• collStats
• dbHash
• dbStats
• find
• killCursors
• listIndexes
• listCollections
Formation MongoDB – Pour débutant
Rôles utilisateurs
readWrite
Fournit tous les privilèges du rôle lu plus la capacité de modifier les données sur toutes les collections
non système et la collection system.js. Le rôle fournit les actions suivantes sur ces collections:
•collStats
•convertToCapped
•createCollection
•dbHash
•dbStats
•dropCollection
•createIndex
•dropIndex
•find
•insert
•killCursors
•listIndexes
•listCollections
•remove
•renameCollectionSameDB
•update
Formation MongoDB – Pour débutant
Rôles des utilisateurs
Rôles administrateur de base de données
dbOwner
Le propriétaire de la base de données peut effectuer toute action
administrative sur la base de données. Ce rôle combine les
privilèges accordés par les rôles readWrite, dbAdmin et
userAdmin.
Formation MongoDB – Pour débutant
Rôles des utilisateurs
Rôles administrateur de base de données
userAdmin
Offre la possibilité de créer et de modifier des rôles et des
utilisateurs pour une base de données. Un utilisateur avec ce rôle
sur une base de données peut attribuer n'importe quel rôle ou
privilège à n'importe quel utilisateur pour cette base de données,
y compris eux-mêmes.
Le rôle userAdmin fournit explicitement les actions suivantes:
Formation MongoDB – Pour débutant
Rôles des utilisateurs
Rôles administrateur de base de données
userAdmin
changeCustomData
changer le mot de passe
createRole
Créer un utilisateur
dropRole
dropUser
grantRole
revokeRole
viewRole
voirUtilisateur
Formation MongoDB – Pour débutant
Principe de la réplication
Ralainirina Dina Randriantsizafy
Informatique scientifique
Réplication
Formation MongoDB – Pour débutant
Replication
• Dans une base de données, les données sont sa raison
d’être
• Sécurité des données dans MongoDB
• Redondance
• Haute disponibilité
Formation MongoDB – Pour débutant
Replication
•Principe de la réplication
•Mise en oeuvre de ReplSet
•Configuration
•Test de robustesse
Formation MongoDB – Pour débutant
Replication
•Principe de la réplication
- Redondance: Copie des données sur des noeuds
(Replicas) de réplication. Maximum: 50 noeuds.
- Des noeuds sur des serveurs différents: host:port
Primaire
Formation MongoDB – Pour débutant
Replication
•Principe de la réplication
- Redondance: Copie des données sur des noeuds
(Replicas) de réplication.
- Des noeuds sur des serveurs différents: host:port
- Des noeuds sur des répertoires, des disques différents
Primaire
Formation MongoDB – Pour débutant
Replication
•Principe de la réplication
- Redondance: Copie des données sur des noeuds
(Replicas) de réplication.
- Le client se connecté sur le primaire
- On ne peut écrire que sur le primaire Primaire
Client
Formation MongoDB – Pour débutant
Replication
•Principe de la réplication
- Haute disponibilité (high availability):
- Pour une rapidité des requêtes, les secondaires
pourront être interrogés
Primaire
Client
Formation MongoDB – Pour débutant
Replication
•Principe de la réplication
- Si le primaire n’est plus disponible:
- Les secondaires vont élire un nouveau primaire
Primaire
Client
Nouveau
Primaire
Formation MongoDB – Pour débutant
Replication
•Principe de la réplication
- Si le primaire n’est plus disponible:
- Les secondaires vont élire un nouveau primaire
Primaire
Client
Nouveau
Primaire
Formation MongoDB – Pour débutant
Replication
•Principe de la réplication
- Si le primaire n’est plus disponible:
- Faire attention: des secondaires ne doivent pas être primaire pour
divers raisons
- Eloignement géographique
- Noeud pas trop sécurisé
- …
Primaire
Client
Nouveau
Primaire
Priority=0
Formation MongoDB – Pour débutant
Replication
•Principe de la réplication
- Des noeuds peuvent être caché, pour être invisible du coté client
Client
Nouveau
Primaire
Priority=0
Hidden true
Formation MongoDB – Pour débutant
Mise en œuvre de la réplication
Ralainirina Dina Randriantsizafy
Informatique scientifique
Réplication
Formation MongoDB – Pour débutant
Réplication: mise en oeuvre
• Objectif:
Mettre en ouvre un système de replication avec 4 noeuds de
replSet
• 4 terminals Serveurs
• 1 terminal client
Formation MongoDB – Pour débutant
Description des tâches:
Nous allons créer 4 répertoires:
repertoire1, repertoire2, repertoire3, repertoire4
Réplication: mise en oeuvre
Formation MongoDB – Pour débutant
Description des tâches:
Sur les serveurs (Un terminal pour un serveur)
• Donner un nom à la réplication: rs1
• Créer le répertoire où seront enregistrés les base de données
• Identifier l’adresse du serveur (—host) adresse:port (exemple:
mondomaine.com:27019)
• Par défaut localhost:27017
• ./mongod - -port 27017 - -dbpath chemin_repertoire1 - -replSet rs1
• ./mongod - -port 27018 - -dbpath chemin_repertoire2 - -replSet rs1
• ./mongod - -port 27019 - -dbpath chemin_repertoire3 - -replSet rs1
• ./mongod - -port 27020 - -dbpath chemin_repertoire4 - -replSet rs1
Réplication: mise en oeuvre
Formation MongoDB – Pour débutant
Description des tâches:
Pour un client(Un terminal pour un client)
• Lancer le client
• Initier la réplication
• Ajouter les serveurs replétés
• ./mongo - -host localhost:27017
Réplication: mise en oeuvre
Formation MongoDB – Pour débutant
Réplication: mise en oeuvre
• Sur un client:
>rsconf = {
_id: « rs1",
members: [
{
_id: 0,
host: « localhost:27017"
}
]
}
>rs.initiate(rsconf)
Formation MongoDB – Pour débutant
Réplication: mise en oeuvre
• Sur un client
>rs.conf()
Affiche la configuration
PRIMAIRE>rs.status()
Affiche l’état des replSet
PRIMAIRE>rs.add(‘localhost:27018’)
PRIMAIRE>rs.add(‘localhost:27019’)
PRIMAIRE>rs.add(‘localhost:27020’)
Affiche l’état des replSet, en particulier notez le primaire
PRIMAIRE>rs.status()
>use mabase
Utiliser la base, ce n’est pas la base précédente car c’est
dans un autre répertoire
Formation MongoDB – Pour débutant
Réplication: mise en oeuvre
• Nous avons besoin de 5 terminals
localhost:27017
Localhost:27019 Localhost:27020
Localhost:27018
Client
Formation MongoDB – Pour débutant
Configuration
Ralainirina Dina Randriantsizafy
Informatique scientifique
Replication
Formation MongoDB – Pour débutant
Replication: configuration
• Dans un environnement replication on est soit connécté
au serveur PRIMAIRE, soit au serveur SECONDAIRE
rs1.PRIMARY>
rs1.SECONDARY>
>rs.conf()
Affiche la configuration
>rs.status()
Affiche l’état de la réplication
Formation MongoDB – Pour débutant
Replication: configuration
Le résultat de rs.conf() peut être mis dans une variable.
On peut changer la configuration des serveurs avec cette
variable
Exemple
varConf=rs.conf()
varConf.members[2].priority=0
rs.reconfig(varConf)
varConf.members[2].hidden=true
Va appliquer les modifications sur la réplication
TP
Formation MongoDB – Pour débutant
Replication: configuration
Forcer une modification
Si on est en SECNDAIRE, on ne peut pas modifier une
configuration, en local on peut forcer
rs.reconfig(varConf,force)
L’argument force est un document défini avant
force={force:true}
TP
Formation MongoDB – Pour débutant
Introduction au sharding
Ralainirina Dina Randriantsizafy
Informatique scientifique
Réplication
Formation MongoDB – Pour débutant
Introduction au sharding
• Pour prendre en charge des données très volumineux
(Données> RAM) et des opérations à haut débit,
MongoDB va utiliser la fragmentation.
• Les CPU et les RAM sont limités
• Une augmentation de puissance est nécessaire
• Augmentation verticale et augmentation horizontale
Formation MongoDB – Pour débutant
Introduction au sharding
• Vertical scaling: rendre le serveur plus puissant en
augmentant la vitesse du CPU et la taille de la RAM.
Limite: les offres du marché du matériel.
• Horizontal scaling: distribution des charges sur
plusieurs serveurs (sharding). Le traitement et le
stockage des données sera partagé sur des noeuds
Shard.
Formation MongoDB – Pour débutant
Introduction au sharding Routeur
mongos
Routeur
mongos
Shard replset Shard replset Shard replet Shard replset
{
{{
Serveur de
configuration
Replset
Formation MongoDB – Pour débutant
Introduction au sharding
• Différence par rapport à la replication:
• Replset: tous les documents sont copiés sur tous les
replset secondaires
• Sharding: les données sont partagés sur les serveurs
shard, cela permet d’optimiser le traitement des
documents volumineux
Formation MongoDB – Pour débutant
Principe du Backup-Restoration
Ralainirina Dina Randriantsizafy
Informatique scientifique
Backup
Formation MongoDB – Pour débutant
Backup: sauvegarde
• Une base de données doit avoir une stratégie de
sauvegarde.
• Pour la sécurité des données, très utile en cas de
perte du serveur
• Pour le transport ou la migration de la base vers un
autre serveur
Formation MongoDB – Pour débutant
Backup: sauvegarde
• Sauvegarde
./mongodump
• Restoration
./mongorestore
Commande dans terminale
Fonctionne sous une instance mongod
Formation MongoDB – Pour débutant
Backup: sauvegarde
• Sauvegarde
./mongodump
Sauvegarde toute la base de données ou une partie dans un
fichier BSON; forme binaire de JSON
Le répertoire de sauvegarde par défaut est dump
./mongodump - -db base
./mongodump - -db base -o cheminRepertoireSauvegarde/
./mongodump - -db base - -collection nom_collection
Option —gzip pour compresser le fichier archive
Formation MongoDB – Pour débutant
Backup: sauvegarde
• Restoration
./mongorestore
Restore toute la base de données à partir d’un fichier BSON; forme
binaire de JSON
./mongorestore - -drop - -db base chemin_vers_archive_a_restorer/
Formation MongoDB – Pour débutant
Mise en oeuvre du backup
Ralainirina Dina Randriantsizafy
Informatique scientifique
Backup
Formation MongoDB – Pour débutant
Backup: mise en oeuvre
• Besoins
• Une instance Mongod
• Un terminal client pour la sauvegarde
• Un répertoire de sauvegarde, sinon la sauvegarde sera
dans dump/
• Une stratégie de sauvergarde
Formation MongoDB – Pour débutant
Backup: mise en oeuvre de sauvegarde
• Sauvegarde de mabase
./mongodump —db mabase
• Sauvegarde de la collection pop2014
./mongodump —db mabase —collection pop2014
• Sauvegarde dans un répertoire spécifique
./mongodump —db mabase —collection pop2014 -o dump2/
Formation MongoDB – Pour débutant
Backup: mise en oeuvre de restoration
• Retore simple
./mongorestore —drop—db mabaseRest dump/mabase
Ou
./mongorestore —drop—db mabaseRest2 dump2/mabase
Formation MongoDB – Pour débutant
Backup du replSet
Ralainirina Dina Randriantsizafy
Informatique scientifique
Backup
Formation MongoDB – Pour débutant
Backup: replSet
• Principes
• Un serveur replSet fonctionnel
• Backup d’une base de ce replSet
• On peut sauvegarder un serveur secondaire
•
./mongodump —host localhost:27017—db mabase
Formation MongoDB – Pour débutant
Backup: replSet
• Principes
• Un serveur replSet fonctionnel
• Backup d’une base de ce replSet
• On peut sauvegarder un serveur secondaire
Pour la restoration
• Pour faire simple : restorer le replSet primaire et les
autres se synchroniseront, de plus les secondaires ne
sont pas accessibles en écriture
TP

Contenu connexe

Tendances

Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13
Aurelien Navarre
 
Node.js et MongoDB: Mongoose
Node.js et MongoDB: MongooseNode.js et MongoDB: Mongoose
Node.js et MongoDB: Mongoose
jeromegn
 

Tendances (20)

Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
 
Formation php pdo
Formation php pdoFormation php pdo
Formation php pdo
 
Drupal & responsive
Drupal & responsiveDrupal & responsive
Drupal & responsive
 
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixteAlphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
Alphorm.com Formation Linux LPIC-3 (examen 300) Environnement mixte
 
Créer son site web avec WordPress
Créer son site web avec WordPressCréer son site web avec WordPress
Créer son site web avec WordPress
 
Optimiser les performances dans Wordpress
Optimiser les performances dans WordpressOptimiser les performances dans Wordpress
Optimiser les performances dans Wordpress
 
Drupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances DrupalDrupagora 2012 Optimisation performances Drupal
Drupagora 2012 Optimisation performances Drupal
 
alphorm.com - Formation Configuration de SharePoint 2010 (70-667)
alphorm.com - Formation Configuration de SharePoint 2010 (70-667)alphorm.com - Formation Configuration de SharePoint 2010 (70-667)
alphorm.com - Formation Configuration de SharePoint 2010 (70-667)
 
Alphorm.com Formation OpenVZ
Alphorm.com Formation OpenVZAlphorm.com Formation OpenVZ
Alphorm.com Formation OpenVZ
 
Alphorm.com Formation le langage SQL
Alphorm.com  Formation le langage SQLAlphorm.com  Formation le langage SQL
Alphorm.com Formation le langage SQL
 
CSS3 WebEducation
CSS3 WebEducationCSS3 WebEducation
CSS3 WebEducation
 
CSS3 - Possibilite creatives
CSS3 - Possibilite creativesCSS3 - Possibilite creatives
CSS3 - Possibilite creatives
 
Node.js et MongoDB: Mongoose
Node.js et MongoDB: MongooseNode.js et MongoDB: Mongoose
Node.js et MongoDB: Mongoose
 
Construire un site de presse avec Wordpress ?
Construire un site de presse avec Wordpress ?Construire un site de presse avec Wordpress ?
Construire un site de presse avec Wordpress ?
 
Introduction nosql
Introduction nosqlIntroduction nosql
Introduction nosql
 
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
DrupalCamp Nantes 2016 - Migrer un site Drupal 6 ou Drupal 7 vers Drupal 8
 
SAPIENS2009 - Module 4B
SAPIENS2009 - Module 4BSAPIENS2009 - Module 4B
SAPIENS2009 - Module 4B
 
Zenika MongoDB Tour - REX Amadeus
Zenika MongoDB Tour - REX AmadeusZenika MongoDB Tour - REX Amadeus
Zenika MongoDB Tour - REX Amadeus
 

Similaire à Support Formation vidéo: MongoDB pour débutant

Morning with MongoDB Paris 2012 - Fast Connect
Morning with MongoDB Paris 2012 - Fast ConnectMorning with MongoDB Paris 2012 - Fast Connect
Morning with MongoDB Paris 2012 - Fast Connect
MongoDB
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
MongoDB
 
MongoDB_presentation_p.pptx
MongoDB_presentation_p.pptxMongoDB_presentation_p.pptx
MongoDB_presentation_p.pptx
ZALIMAZA
 
MongoDB_presentation_ye.pptx
MongoDB_presentation_ye.pptxMongoDB_presentation_ye.pptx
MongoDB_presentation_ye.pptx
ZALIMAZA
 
MongoDB_presentation_tts.pptx
MongoDB_presentation_tts.pptxMongoDB_presentation_tts.pptx
MongoDB_presentation_tts.pptx
ZALIMAZA
 
MongoDB_presentation_o.pptx
MongoDB_presentation_o.pptxMongoDB_presentation_o.pptx
MongoDB_presentation_o.pptx
ZALIMAZA
 
MongoDB_presentation_example.pptx
MongoDB_presentation_example.pptxMongoDB_presentation_example.pptx
MongoDB_presentation_example.pptx
ZALIMAZA
 
MongoDB_presentation_Moyou.pptx
MongoDB_presentation_Moyou.pptxMongoDB_presentation_Moyou.pptx
MongoDB_presentation_Moyou.pptx
ZALIMAZA
 

Similaire à Support Formation vidéo: MongoDB pour débutant (20)

Morning with MongoDB Paris 2012 - Fast Connect
Morning with MongoDB Paris 2012 - Fast ConnectMorning with MongoDB Paris 2012 - Fast Connect
Morning with MongoDB Paris 2012 - Fast Connect
 
Morning With MongoDB
Morning With MongoDBMorning With MongoDB
Morning With MongoDB
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
 
Tout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasTout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pas
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pas
 
11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net11 visual basic .net - acces aux donnees avec ado .net
11 visual basic .net - acces aux donnees avec ado .net
 
1-Intro to DB.pptx
1-Intro to DB.pptx1-Intro to DB.pptx
1-Intro to DB.pptx
 
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDBPlus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
 
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDBPlus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
 
MongoDB .pptx
MongoDB .pptxMongoDB .pptx
MongoDB .pptx
 
MongoDB_presentation_p.pptx
MongoDB_presentation_p.pptxMongoDB_presentation_p.pptx
MongoDB_presentation_p.pptx
 
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
Ecole ESMA : Projet Fin de semestre - Application de gestion d'une école
 
MongoDB_presentation_ye.pptx
MongoDB_presentation_ye.pptxMongoDB_presentation_ye.pptx
MongoDB_presentation_ye.pptx
 
MongoDB_presentation_tts.pptx
MongoDB_presentation_tts.pptxMongoDB_presentation_tts.pptx
MongoDB_presentation_tts.pptx
 
MongoDB_presentation_xmls.pptx
MongoDB_presentation_xmls.pptxMongoDB_presentation_xmls.pptx
MongoDB_presentation_xmls.pptx
 
MongoDB_presentation_o.pptx
MongoDB_presentation_o.pptxMongoDB_presentation_o.pptx
MongoDB_presentation_o.pptx
 
MongoDB_presentation_example.pptx
MongoDB_presentation_example.pptxMongoDB_presentation_example.pptx
MongoDB_presentation_example.pptx
 
MongoDB_presentation.pptx
MongoDB_presentation.pptxMongoDB_presentation.pptx
MongoDB_presentation.pptx
 
MongoDB.pptx
MongoDB.pptxMongoDB.pptx
MongoDB.pptx
 
MongoDB_presentation_Moyou.pptx
MongoDB_presentation_Moyou.pptxMongoDB_presentation_Moyou.pptx
MongoDB_presentation_Moyou.pptx
 

Plus de SmartnSkilled

Plus de SmartnSkilled (20)

Formation : Comment rendre une réunion efficace ?
Formation : Comment rendre une réunion efficace ?Formation : Comment rendre une réunion efficace ?
Formation : Comment rendre une réunion efficace ?
 
Support cours : Les Data Sciences avec Python Langage - Partie II
Support cours : Les Data Sciences avec Python Langage - Partie IISupport cours : Les Data Sciences avec Python Langage - Partie II
Support cours : Les Data Sciences avec Python Langage - Partie II
 
Support tutoriel : Initiation à SAP ERP
Support tutoriel : Initiation à SAP ERPSupport tutoriel : Initiation à SAP ERP
Support tutoriel : Initiation à SAP ERP
 
Support formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec DockerSupport formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec Docker
 
Support formation : Maîtriser la comptabilité des opérations de fin d'exercice
Support formation : Maîtriser la comptabilité des opérations de fin d'exerciceSupport formation : Maîtriser la comptabilité des opérations de fin d'exercice
Support formation : Maîtriser la comptabilité des opérations de fin d'exercice
 
Support cours : Comment rédiger un rapport ?
Support cours : Comment rédiger un rapport ?Support cours : Comment rédiger un rapport ?
Support cours : Comment rédiger un rapport ?
 
Support formation : Maîtriser les Data Sciences avec Python Language - Partie I
Support formation : Maîtriser les Data Sciences avec Python Language - Partie ISupport formation : Maîtriser les Data Sciences avec Python Language - Partie I
Support formation : Maîtriser les Data Sciences avec Python Language - Partie I
 
Support cours : Rédigez vos emails professionnels
Support cours : Rédigez vos emails professionnelsSupport cours : Rédigez vos emails professionnels
Support cours : Rédigez vos emails professionnels
 
Support cours : Les phares du marketing
Support cours : Les phares du marketingSupport cours : Les phares du marketing
Support cours : Les phares du marketing
 
Support formation : La négociation commerciale coté vendeur
Support formation : La négociation commerciale coté vendeurSupport formation : La négociation commerciale coté vendeur
Support formation : La négociation commerciale coté vendeur
 
Support cours : Initiation à SAP ERP
Support cours : Initiation à SAP ERPSupport cours : Initiation à SAP ERP
Support cours : Initiation à SAP ERP
 
Tutoriel : Online English Expertise
Tutoriel : Online English ExpertiseTutoriel : Online English Expertise
Tutoriel : Online English Expertise
 
Formation : Mettre en place une stratégie commerciale
Formation : Mettre en place une stratégie commercialeFormation : Mettre en place une stratégie commerciale
Formation : Mettre en place une stratégie commerciale
 
Support cours : Cours d'Espagnol Débutant (A1-A2)
Support cours : Cours d'Espagnol Débutant (A1-A2)Support cours : Cours d'Espagnol Débutant (A1-A2)
Support cours : Cours d'Espagnol Débutant (A1-A2)
 
Support cours : Vos premiers pas avec le pare feu CISCO ASA
Support cours : Vos premiers pas avec le pare feu CISCO ASASupport cours : Vos premiers pas avec le pare feu CISCO ASA
Support cours : Vos premiers pas avec le pare feu CISCO ASA
 
Support Tutoriel : Online English Expertise
Support Tutoriel : Online English ExpertiseSupport Tutoriel : Online English Expertise
Support Tutoriel : Online English Expertise
 
Support formation en ligne : Manager et auditer les risques informatiques
Support formation en ligne : Manager et auditer les risques informatiquesSupport formation en ligne : Manager et auditer les risques informatiques
Support formation en ligne : Manager et auditer les risques informatiques
 
Support Tutoriel : Art oratoire et prise de parole en public
Support Tutoriel : Art oratoire et prise de parole en publicSupport Tutoriel : Art oratoire et prise de parole en public
Support Tutoriel : Art oratoire et prise de parole en public
 
Support formation en ligne: L'estime de soi
Support formation en ligne: L'estime de soiSupport formation en ligne: L'estime de soi
Support formation en ligne: L'estime de soi
 
Support formation vidéo : Les phares du marketing
Support formation vidéo : Les phares du marketingSupport formation vidéo : Les phares du marketing
Support formation vidéo : Les phares du marketing
 

Dernier

Dernier (12)

Un petit coin etwinning- Au fil des cultures urbaines
Un petit coin  etwinning- Au fil des cultures urbainesUn petit coin  etwinning- Au fil des cultures urbaines
Un petit coin etwinning- Au fil des cultures urbaines
 
Bonnes pratiques biomédicales en établissement de soins : Guide
Bonnes pratiques biomédicales en établissement de soins  : GuideBonnes pratiques biomédicales en établissement de soins  : Guide
Bonnes pratiques biomédicales en établissement de soins : Guide
 
Cours-Sur-l'-IP-Multiprotocol-Label-SwitchingMPLS
Cours-Sur-l'-IP-Multiprotocol-Label-SwitchingMPLSCours-Sur-l'-IP-Multiprotocol-Label-SwitchingMPLS
Cours-Sur-l'-IP-Multiprotocol-Label-SwitchingMPLS
 
Quitter la nuit. pptx
Quitter          la        nuit.    pptxQuitter          la        nuit.    pptx
Quitter la nuit. pptx
 
Nathanaëlle Herbelin.pptx Peintre française
Nathanaëlle Herbelin.pptx Peintre françaiseNathanaëlle Herbelin.pptx Peintre française
Nathanaëlle Herbelin.pptx Peintre française
 
Les débuts de la collection "Le livre de poche"
Les débuts de la collection "Le livre de poche"Les débuts de la collection "Le livre de poche"
Les débuts de la collection "Le livre de poche"
 
rapport de stage gros oeuvre_compressed.pdf
rapport de stage gros oeuvre_compressed.pdfrapport de stage gros oeuvre_compressed.pdf
rapport de stage gros oeuvre_compressed.pdf
 
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
Fiche - Accompagnement du travail coopératif au sein d’une équipe d’enseignan...
 
Quitter la nuit. pptx
Quitter        la             nuit.   pptxQuitter        la             nuit.   pptx
Quitter la nuit. pptx
 
PLANNING HEBDO ET CR LYCEE COUDON 21 MAI2024
PLANNING HEBDO ET CR LYCEE COUDON 21 MAI2024PLANNING HEBDO ET CR LYCEE COUDON 21 MAI2024
PLANNING HEBDO ET CR LYCEE COUDON 21 MAI2024
 
Webinaire Technologia | DAX : nouvelles fonctions
Webinaire Technologia | DAX : nouvelles fonctionsWebinaire Technologia | DAX : nouvelles fonctions
Webinaire Technologia | DAX : nouvelles fonctions
 
PowerPoint-de-Soutenance-de-TFE-infirmier.pdf
PowerPoint-de-Soutenance-de-TFE-infirmier.pdfPowerPoint-de-Soutenance-de-TFE-infirmier.pdf
PowerPoint-de-Soutenance-de-TFE-infirmier.pdf
 

Support Formation vidéo: MongoDB pour débutant

  • 1. Formation MongoDB – Pour débutant Ralainirina Dina Randriantsizafy Informatique scientifique Présentation de la formation
  • 2. Formation MongoDB – Pour débutant Présentation de la formation Vue d’ensemble Dans le Monde des données, le big data prend de plus en plus d'importance, mongoDB est un système de gestion base de données noSQL bigdata, facile à mettre en place et est utilisé par des grands groupes et des moyens. BigData des trois V Volume En 2013 Facebook a généré 10 téraoctets de données par jour. Le radiotélescope “Square Kilometre Array” par exemple produira 50 téraoctets de données par jour. Variété Les données sont de natures et de formats différents et changeant avec le temps Vélocité L’qbsorbtion et le traitement des données doit se faire très rapidement
  • 3. Formation MongoDB – Pour débutant Déroulement de la formation Des vidéos avec des pratiques en utilisant des cas réels de données Objectifs L'objectif de la formation est de comprendre le principe et l'enjeu du bigdata à travers mongoDB. A la fin de la formation, l'apprenant sera capable de mettre en oeuvre et de gérer un système de gestion d'information MongoDB. Prérequis Pas de prérequis mais une connaissance de l'informatique est nécessaire. Public concerné Tous ceux qui s'intéressent au big data et à mongoDB, en particulier ceux qui veulent se lancer dans les data sciences. Présentation de la formation
  • 4. Formation MongoDB – Pour débutant A bientôt Présentation de la formation
  • 5. Formation MongoDB – Pour débutant Présentation Générale Ralainirina Dina Randriantsizafy Informatique scientifique Présentation du bigdata et mongodb
  • 6. Formation MongoDB – Pour débutant Big data Les données présentes sont constituées de données de masse énormes. • Données complexes et entrelacées • Réseaux sociaux • Données scientifiques, exemple: météo, climat • Données économiques
  • 7. Formation MongoDB – Pour débutant Présentation big data mongoDB • Les données deviennent énormes, Big data • La structure des données devient complexe et évolutive, non figée Ex: Données des clients, réseaux sociaux, géospaciales, … • Le Data science s’appuie beaucoup sur le big data • MongoDB est une système big data, c’est un logiciel libre Pour plus d’informations : www.mongodb.com
  • 8. Formation MongoDB – Pour débutant Présentation big data mongoDB MongoDB est une base de données de documents avec une possibilité d’évolutivité et de flexibilité selon vos besoins.
  • 9. Formation MongoDB – Pour débutant Présentation big data mongoDB • Le modèle de document de MongoDB est simple à utiliser et est utilisé par les développeurs, tout en offrant toutes les fonctionnalités nécessaires pour répondre aux exigences les plus complexes à n'importe quelle échelle. MongoDB fournit des pilotes pour plus de 10 langages de programmation. Python, Java, NodeJS, php, …
  • 10. Formation MongoDB – Pour débutant Présentation big data mongoDB • MongoDB stocke les enregistrements de données sous forme de documents BSON. BSON est une représentation binaire de documents JSON, bien qu'elle contienne plus de types de données que JSON. • Pour la spécification BSON, voir bsonspec.org.
  • 11. Formation MongoDB – Pour débutant Présentation big data mongoDB • MongoDB stocke les données dans des documents flexibles de type JSON, ce qui signifie que les champs peuvent varier d'un document à l'autre et que la structure des données peut être modifiée au fil du temps. • Le modèle de document correspond aux objets de votre code d'application, ce qui facilite l'utilisation des données. • Les requêtes ad hoc, l'indexation et l'agrégation en temps réel fournissent des moyens puissants pour accéder et analyser vos données. • MongoDB est une base de données distribuée à la base, de sorte que la haute disponibilité, la mise à l'échelle horizontale et la distribution géographique sont intégrées et faciles à utiliser. • MongoDB est gratuit et open-source, publié sous la licence GNU Affero General Public License
  • 12. Formation MongoDB – Pour débutant Présentation big data - Historique MongoDB est développé depuis 2007 par 10Gen devenu MongoDB inc. Cette entreprise travaillait alors sur un système de Cloud computing, Sa première version considérée comme industriellement viable a été la 1.4, en 2010 SGBD NoSQL utilisé par Craigslist, eBay, Foursquare, SourceForge.net, Viacom, et le New York Times3.
  • 13. Formation MongoDB – Pour débutant Ralainirina Dina Randriantsizafy Informatique scientifique Obtention de MongoDB
  • 14. Formation MongoDB – Pour débutant Obtention de mongoDB • MongoDB est un logiciel libre Libre de l’obtenir et de l’utiliser www.mongodb.com ->Download Téléchargement par défaut Ou choisir son système
  • 15. Formation MongoDB – Pour débutant Obtention mongoDB
  • 16. Formation MongoDB – Pour débutant Obtention mongoDB
  • 17. Formation MongoDB – Pour débutant Obtention mongoDB
  • 18. Formation MongoDB – Pour débutant Ralainirina Dina Randriantsizafy Informatique scientifique Crud Prise en main
  • 19. Formation MongoDB – Pour débutant Prise en main de mongoDB • mongod : Instance, serveur, deamon (service) —host: adresse du serveur, peut être un nom de domaine, ex:madb.com; par défaut 127.0.0.1 —port: port, par défaut 27017. -> 127.0.0.1:27017 —dbpath: chemin vers le répertoire base de données • mongo: client pour se connecter Une instance mongod peut accepter plusieurs clients en même temps.
  • 20. Formation MongoDB – Pour débutant Prise en main de mongoDB • mongod : Instance, serveur, deamon (service) —host: adresse du serveur, peut être un nom de domaine, ex:madb.com; par défaut 127.0.0.1 —port: port, par défaut 27017. -> 127.0.0.1:27017 —dbpath: chemin vers le répertoire base de données • mongo: client pour se connecter Une instance mongod peut accepter plusieurs clients en même temps. • Se placer dans le répertoire d’installation de mongoDB et aller dans le répertoire bin
  • 21. Formation MongoDB – Pour débutant Prise en main de mongoDB • Les terminaux Terminal 1 • Se placer dans le répertoire d’installation de mongoDB et aller dans le répertoire bin
  • 22. Formation MongoDB – Pour débutant Prise en main de mongoDB • Les terminaux Terminal 1 Terminal 2
  • 23. Formation MongoDB – Pour débutant Prise en main de mongoDB • Les terminaux Terminal 1 mongod —dbpath /data/db SERVEUR • Se placer dans le répertoire d’installation de mongoDB et aller dans le répertoire bin
  • 24. Formation MongoDB – Pour débutant Prise en main de mongoDB • Les terminaux Terminal 1 Terminal 2mongod —dbpath /data/db SERVEUR CLIENT mongo
  • 25. Formation MongoDB – Pour débutant Base de données et données Ralainirina Dina Randriantsizafy Informatique scientifique Crud
  • 26. Formation MongoDB – Pour débutant Base de données et données Base de données Collection Document Document Document MongoDB enregistre les données document sous forme BSON dans des collections
  • 27. Formation MongoDB – Pour débutant Base de données et données MongoDB enregistre les données document sous forme BSON dans des collections Document: Rendu lisible sous JSON { Champ1: valeur1, Champ2: valeur2, Champ3: valeur3, … ChampN: valeurN, } Document imbriqué: { Champ1: valeur1, Champ2: valeur2, Champ3: { Champ31: valeur31, Champ32: valeur32, Champ33: valeur33, … Champ3N: valeur3N, }, … ChampN: valeurN, }
  • 28. Formation MongoDB – Pour débutant Base de données et données • db Affiche la base de données en utilisation • use mabase Accès à la base de données mabasse, crée la base mabase si elle n’existe pas encore • show dbs Affiche les bases de données • Show collections Affiche les collections de la base de données ouverte • quit() Ferme l’interface client • Control C Arrete le serveur mongod
  • 29. Formation MongoDB – Pour débutant Base de données et données • Travaux pratiques
  • 30. Formation MongoDB – Pour débutant Ralainirina Dina Randriantsizafy Informatique scientifique Crud Insertion de données
  • 31. Formation MongoDB – Pour débutant Insertion de données • Nous allons insérer un document dans la base de données monecole. • Nous allons créer une base de données de classe d’école • Collection ce1 • Document avec des champs: nom, prenom, age, genre
  • 32. Formation MongoDB – Pour débutant Insertion de données use monecole Accès à la base ou création si elle n’existe pas db.ce1.insertOne({nom:’Dubois’,prenom:’Jean’,age:7,genre:’M’}) Crée la collection ce1 et insère le premier document db.ce1.insertOne({nom:’Forre’,prenom:’Anne’,age:7,genre:’F’}) insère le deuxième document db.ce1.insertOne({nom:’Flavien’,prenom:’Solo’,age:7,genre:’M’}) insère le troisième document db.ce1.find() Affiche le contenu de la collection ce1 db.ce1.find().pretty() Affiche le contenu de la collection ce1 avec un affichage agencé
  • 33. Formation MongoDB – Pour débutant Insertion de données On peut utiliser une variable document enfant={nom:’Justin’,prenom:’Claude’,age:7,genre:’M’} Défini la variable enfant db.ce1.insertOne(enfant) insère la variable document enfant
  • 34. Formation MongoDB – Pour débutant Insertion de données Insertion multiple enfant1={nom:’Clovis’,prenom:’Claire’,age:8,genre:’F’} enfant2={nom:’Robert’,prenom:’Marie Jeanne’,age:7,genre:’F’} Défini les variables db.ce1.insertMany([enfant1,enfant2]) insère les variables
  • 35. Formation MongoDB – Pour débutant • Travaux pratiques Insertion de données
  • 36. Formation MongoDB – Pour débutant Lecture des données Ralainirina Dina Randriantsizafy Informatique scientifique Crud
  • 37. Formation MongoDB – Pour débutant Lecture des données db.ce1.find() db.ce1.findOne() Avec projection de comparaison db.ce1.find({age:{$eq:8}) db.ce1.find({age:{$lt:8})
  • 38. Formation MongoDB – Pour débutant Lecture des données Selection des champs à afficher: Afficher que les prénoms db.ce1.find({},{prenom:1})
  • 39. Formation MongoDB – Pour débutant Lecture des données Afficher que les prénoms db.ce1.find({},{prenom:1}) Combiné db.ce1.find({age:{$eq:8}},{prenom:1})
  • 40. Formation MongoDB – Pour débutant Lecture des données Afficher que les prénoms db.ce1.find({},{prenom:1}) Combiné db.ce1.find({age:{$eq:8}},{prenom:1}) Affichage par ordre croissant suivant prénom db.ce1.find().sort({prenom:1}) Combiné db.ce1.find({age:{$eq:8}},{prenom:1}).sort({prenom:1})
  • 41. Formation MongoDB – Pour débutant • Travaux pratiques Lecture des données
  • 42. Formation MongoDB – Pour débutant Importation Exportation JSON Ralainirina Dina Randriantsizafy Informatique scientifique Importation Exportation
  • 43. Formation MongoDB – Pour débutant Importation JSON • Contenu Importation de données à partir de JSON Exportation de données vers JSON
  • 44. Formation MongoDB – Pour débutant Importation JSON • Objectifs Importation de données d’une collection d’un fichier JSON Exportation de données d’une collection vers un fichier JSON • Conditions Une instance mongod est ouverte Un fichier JSON sans erreurs
  • 45. Formation MongoDB – Pour débutant Importation JSON • Fichier JSON {champ1 : valeur1, champ2:valeur2, champ3:valeur3} {champ1 : valeur11, champ2:valeur21, champ3:valeur31} {champ1 : valeur12, champ2:valeur22, champ3:valeur32, champ4:valeur4} {champ1 : valeur13, champ2:valeur23, champ3:valeur33} … MongoDB est sans schéma (Schemaless) TP avec le fichier auteurs.json
  • 46. Formation MongoDB – Pour débutant Importation JSON • TP Trois terminaux SERVEUR mongod CLIENT mongo Commandes mongoimport mongoexport Nous allons lancer une instance Importer les données Vérifier qu’elles ont été importées
  • 47. Formation MongoDB – Pour débutant Importation JSON • TP Sur le troisième terminal mongoimport —help mongoimport —db mabase —collection auteurs —file auteurs.json Pour vérifier, sur le terminal client use mabase db.auteurs.find()
  • 48. Formation MongoDB – Pour débutant Exportation JSON • Objectif Exportation de données d’une collection vers un fichier JSON • Conditions Une instance mongod est ouverte
  • 49. Formation MongoDB – Pour débutant Exportation JSON • TP Sur le troisième terminal mongoexport —help mongoexport —db mabase —collection auteurs —out mesauteurs.json Pour vérifier, consulter le fichier mesauterus.json
  • 50. Formation MongoDB – Pour débutant Importation Exportation CSV Ralainirina Dina Randriantsizafy Informatique scientifique Importation Exportation
  • 51. Formation MongoDB – Pour débutant Importation CSV • Objectif Importation de données d’une collection d’un fichier CSV • Conditions Une instance mongod est ouverte Un fichier CSV sans erreurs, CSV est un tableur
  • 52. Formation MongoDB – Pour débutant Importation CSV • Fichier CSV Champ1,champ2 Valeur1,valeur2 Valeur11,valeu21 Valeur12,valeur22 … La première ligne constitue les champs
  • 53. Formation MongoDB – Pour débutant Importation CSV • TP Trois terminaux SERVEUR mongod CLIENT mongo Commandes mongoimport mongoexport Nous allons lancer une instance Importer les données Vérifier qu’elles ont été importées
  • 54. Formation MongoDB – Pour débutant Exportation CSV • Objectif Exportation de données d’une collection vers un fichier CSV • Conditions Une instance mongod est ouverte
  • 55. Formation MongoDB – Pour débutant Exportation CSV • TP Sur le troisième terminal mongoexport —help mongoexport —db mabase —collection auteurs —type csv —fields nom,prenom —out mesauteurs.csv Pour vérifier, consulter le fichier mesauterus.csv
  • 56. Formation MongoDB – Pour débutant Importation CSV • TP Sur le troisième terminal mongoimport —help mongoimport —db mabase —collection autcsv —type csv —headerline —file mesauteurs.csv OU mongoimport —db mabase -c autcsv -t csv —headerline -f mesauteurs.csv Pour vérifier, sur le terminal client use mabase db.autcsv.find()
  • 57. Formation MongoDB – Pour débutant Import/Export Exemple réel Ralainirina Dina Randriantsizafy Informatique scientifique Importation Exportation
  • 58. Formation MongoDB – Pour débutant Masse de données •data.gouv.fr
  • 59. Formation MongoDB – Pour débutant Masse de données •data.gouv.fr •data.gouv.fr
  • 60. Formation MongoDB – Pour débutant Masse de données •data.gouv.fr
  • 61. Formation MongoDB – Pour débutant Masse de données •data.gouv.fr
  • 62. Formation MongoDB – Pour débutant A supprimer
  • 63. Formation MongoDB – Pour débutant 2043 lignes avec la ligne des champs
  • 64. Formation MongoDB – Pour débutant 2043 lignes avec la ligne des champs Code région,Nom de la région,Code département,Code canton,Nom du canton,Nombre de communes,Population municipale,Population totale 84,Auvergne-Rhône-Alpes,01,01,Ambérieu-en-Bugey,18,29 626,30 551 84,Auvergne-Rhône-Alpes,01,02,Attignat,19,24 440,24 914 84,Auvergne-Rhône-Alpes,01,03,Bellegarde-sur-Valserine,15,21 373,21 910 84,Auvergne-Rhône-Alpes,01,04,Belley,35,24 216,24 952 84,Auvergne-Rhône-Alpes,01,05,Bourg-en-Bresse-1,2,31 801,33 158 84,Auvergne-Rhône-Alpes,01,06,Bourg-en-Bresse-2,4,28 101,29 413 84,Auvergne-Rhône-Alpes,01,07,Ceyzériat,22,25 206,25 892 84,Auvergne-Rhône-Alpes,01,08,Châtillon-sur-Chalaronne,26,29 667,30 441 84,Auvergne-Rhône-Alpes,01,09,Gex,7,29 557,30 421 84,Auvergne-Rhône-Alpes,01,10,Hauteville-Lompnes,37,22 209,22 817 84,Auvergne-Rhône-Alpes,01,11,Lagnieu,26,32 825,33 453 84,Auvergne-Rhône-Alpes,01,12,Meximieux,15,32 628,33 321 84,Auvergne-Rhône-Alpes,01,13,Miribel,8,27 562,28 065 84,Auvergne-Rhône-Alpes,01,14,Nantua,17,21 477,22 253 84,Auvergne-Rhône-Alpes,01,15,Oyonnax,2,25 890,26 618 84,Auvergne-Rhône-Alpes,01,16,Pont-d'Ain,24,21 615,22 184 84,Auvergne-Rhône-Alpes,01,17,Replonges,32,30 678,31 407 84,Auvergne-Rhône-Alpes,01,18,Saint-Étienne-du-Bois,27,22 232,22 778 84,Auvergne-Rhône-Alpes,01,19,Saint-Genis-Pouilly,4,31 204,31 922 84,Auvergne-Rhône-Alpes,01,20,Thoiry,16,26 848,27 595 84,Auvergne-Rhône-Alpes,01,21,Trévoux,12,31 733,32 783 84,Auvergne-Rhône-Alpes,01,22,Villars-les-Dombes,25,31 801,32 458 84,Auvergne-Rhône-Alpes,01,23,Vonnas,19,23 438,24 003 32,Hauts-de-France,02,01,Bohain-en-Vermandois,31,22 492,22 912 32,Hauts-de-France,02,02,Château-Thierry,21,26 883,27 590 32,Hauts-de-France,02,03,Chauny,21,24 518,25 278 32,Hauts-de-France,02,04,Essômes-sur-Marne,47,29 059,29 810 32,Hauts-de-France,02,05,Fère-en-Tardenois,78,28 020,28 601 32,Hauts-de-France,02,06,Guignicourt,78,26 435,27 032 32,Hauts-de-France,02,07,Guise,45,24 055,24 542 32,Hauts-de-France,02,08,Hirson,26,22 037,22 623 32,Hauts-de-France,02,09,Laon-1,30,25 818,26 397 32,Hauts-de-France,02,10,Laon-2,25,25 553,26 462 32,Hauts-de-France,02,11,Marle,65,20 110,20 690 32,Hauts-de-France,02,12,Ribemont,52,26 771,27 212 Lorsque exporté vers fichier CSV
  • 65. Formation MongoDB – Pour débutant 2043 lignes avec la ligne des champs Code région,Nom de la région,Code département,Code canton,Nom du canton,Nombre de communes,Population municipale,Population totale 84,Auvergne-Rhône-Alpes,01,01,Ambérieu-en-Bugey,18,29 626,30 551 84,Auvergne-Rhône-Alpes,01,02,Attignat,19,24 440,24 914 84,Auvergne-Rhône-Alpes,01,03,Bellegarde-sur-Valserine,15,21 373,21 910 84,Auvergne-Rhône-Alpes,01,04,Belley,35,24 216,24 952 84,Auvergne-Rhône-Alpes,01,05,Bourg-en-Bresse-1,2,31 801,33 158 84,Auvergne-Rhône-Alpes,01,06,Bourg-en-Bresse-2,4,28 101,29 413 84,Auvergne-Rhône-Alpes,01,07,Ceyzériat,22,25 206,25 892 84,Auvergne-Rhône-Alpes,01,08,Châtillon-sur-Chalaronne,26,29 667,30 441 84,Auvergne-Rhône-Alpes,01,09,Gex,7,29 557,30 421 84,Auvergne-Rhône-Alpes,01,10,Hauteville-Lompnes,37,22 209,22 817 84,Auvergne-Rhône-Alpes,01,11,Lagnieu,26,32 825,33 453 84,Auvergne-Rhône-Alpes,01,12,Meximieux,15,32 628,33 321 84,Auvergne-Rhône-Alpes,01,13,Miribel,8,27 562,28 065 84,Auvergne-Rhône-Alpes,01,14,Nantua,17,21 477,22 253 84,Auvergne-Rhône-Alpes,01,15,Oyonnax,2,25 890,26 618 84,Auvergne-Rhône-Alpes,01,16,Pont-d'Ain,24,21 615,22 184 FICHIER CSV population2014.csv
  • 66. Formation MongoDB – Pour débutant Masse de données ./mongoimport --db mabase --collection pop2014 --type csv —headerline —file population2014.csv TP TERMINAL CLIENT
  • 67. Formation MongoDB – Pour débutant Masse de données TERMINAL CLIENT Ensuite vous lancez le client ./mongo >use mabase > db.pop2014.findOne() { "_id" : ObjectId("59f25ebfa28a8dce78cf2e9f"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 1, "Nom du canton" : "Ambérieu-en-Bugey", "Nombre de communes" : 18, "Population municipale" : "29 626", "Population totale" : "30 551" } > db.pop2014.find().count() 2042
  • 68. Formation MongoDB – Pour débutant Introduction aux requêtes de : find () Ralainirina Dina Randriantsizafy Informatique scientifique Les requêtes de MongoDB
  • 69. Formation MongoDB – Pour débutant Requêtes find db.collection.find(requêtes, projection) Sélectionne les documents dans une collection et renvoie un curseur vers les documents sélectionnés. Requêtes: optionnelle et sous forme de document, filtre de sélection des documents à afficher. Projections: Optionnelle et sous forme de document, permet de n’afficher que certains champs db.collection.findOne(requêtes, projection) Affiche le premier document correspondant à find
  • 70. Formation MongoDB – Pour débutant Requêtes find Reprenons la population 2014 >db.pop2014.find() Affiche tous les documents 20 par 20 « it » permet de passer à la « page » suivante >db.pop2014.find().pretty() Affiche tous les documents plus arrangé { "_id" : ObjectId("59f49559a28a8dce78cf3f6f"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 1, "Nom du canton" : "Ambérieu-en-Bugey", "Nombre de communes" : 18, "Population municipale" : 29626, "Population totale" : 30551, "" : "" }
  • 71. Formation MongoDB – Pour débutant Requêtes find égalité Les requêtes égalité >db.collection.find({chp1:val1,chp2,val2,…}) Affiche tous les documents dont le chp1=val1, chp2=val2, … Exemple: >db.pop2014.find({‘Code région’:84}) Affiche tous les documents dont le Code région=84 >db.pop2014.find({‘Code région’:84,‘Code canton’:19}) Affiche tous les documents dont le Code région=84 et Code canton=19 { "_id" : ObjectId("59f49559a28a8dce78cf3f6f"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 1, "Nom du canton" : "Ambérieu-en-Bugey", "Nombre de communes" : 18, "Population municipale" : 29626, "Population totale" : 30551, "" : "" }
  • 72. Formation MongoDB – Pour débutant Requêtes find comparaison Les requêtes de comparaison >db.collection.find({chp1:{$comparaison:val1}}) Affiche les documents dont le chp1 satisfait à la comparaison par rapport à la valeur val1 $comparaison: $eq Correspond aux valeurs qui sont égales à une valeur spécifiée. $gt. Correspond aux valeurs qui sont supérieures à une valeur spécifiée. $gte Correspond aux valeurs qui sont supérieures ou égales à une valeur spécifiée. $in Correspond à l'une des valeurs spécifiées dans un tableau. $lt Correspond aux valeurs qui sont inférieures à une valeur spécifiée. $lte Correspond aux valeurs qui sont inférieures ou égales à une valeur spécifiée. $ne Correspond aux valeurs qui ne sont pas égales à une valeur spécifiée. $nin Correspond à aucune des valeurs spécifiées dans un tableau.
  • 73. Formation MongoDB – Pour débutant Requêtes find comparaison Les requêtes de comparaison >db.collection.find({"Code région" : {$gt:80}}) Affiche les documents dont le Code région est supérieur à 80 >db.collection.find({"Population totale" : {$lt:27000}}) Affiche les documents dont la population totale est inférieure à 27000 >db.collection.find({"Population totale" : {$lt:27000}},{‘Nom de la région’:1,’Population totale’:1}) { "_id" : ObjectId("59f49559a28a8dce78cf3f6f"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 1, "Nom du canton" : "Ambérieu-en-Bugey", "Nombre de communes" : 18, "Population municipale" : 29626, "Population totale" : 30551, "" : "" }
  • 74. Formation MongoDB – Pour débutant Les méthodes sur cursors: limit, skip et sort Ralainirina Dina Randriantsizafy Informatique scientifique Les requêtes de MongoDB
  • 75. Formation MongoDB – Pour débutant Les méthodes de cursor db.collection.find().limit(N) Affiche les N premiers documents correspondants à la requête find() db.collection.find().skip(N) Evite les N premiers documents correspondants à la requête find(), affiche les documents à partir du N+1 document du résultat db.collection.find().sort({champ:1}) Affiche les documents correspondants à la requête en ordre croissant selon le champ db.collection.find().sort({champ:-1}) Affiche les documents correspondants à la requête en ordre décroissant selon le champ
  • 76. Formation MongoDB – Pour débutant Les méthodes de cursor > db.pop2014.find() { "_id" : ObjectId("59f49559a28a8dce78cf3f71"), "Code région" : 84, "Nom de la région" : "Auvergne- Rhône-Alpes", "Code département" : 1, "Code canton" : 5, "Nom du canton" : "Bourg-en-Bresse-1", "Nombre de communes" : 2, "Population municipale" : 31801, "Population totale" : 33158, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f72"), "Code région" : 84, "Nom de la région" : "Auvergne- Rhône-Alpes", "Code département" : 1, "Code canton" : 4, "Nom du canton" : "Belley", "Nombre de communes" : 35, "Population municipale" : 24216, "Population totale" : 24952, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f73"), "Code région" : 84, "Nom de la région" : "Auvergne- Rhône-Alpes", "Code département" : 1, "Code canton" : 7, "Nom du canton" : "Ceyzériat", "Nombre de communes" : 22, "Population municipale" : 25206, "Population totale" : 25892, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f74"), "Code région" : 84, "Nom de la région" : "Auvergne- Rhône-Alpes", "Code département" : 1, "Code canton" : 3, "Nom du canton" : "Bellegarde-sur- Valserine", "Nombre de communes" : 15, "Population municipale" : 21373, "Population totale" : 21910, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f75"), "Code région" : 84, "Nom de la région" : "Auvergne- Rhône-Alpes", "Code département" : 1, "Code canton" : 6, "Nom du canton" : "Bourg-en-Bresse-2", "Nombre de communes" : 4, "Population municipale" : 28101, "Population totale" : 29413, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f76"), "Code région" : 84, "Nom de la région" : "Auvergne- Rhône-Alpes", "Code département" : 1, "Code canton" : 8, "Nom du canton" : "Châtillon-sur- Chalaronne", "Nombre de communes" : 26, "Population municipale" : 29667, "Population totale" : 30441, "" : "" }
  • 77. Formation MongoDB – Pour débutant Les méthodes de cursor > db.pop2014.find().limit(4) { "_id" : ObjectId("59f49559a28a8dce78cf3f6f"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 1, "Nom du canton" : "Ambérieu-en-Bugey", "Nombre de communes" : 18, "Population municipale" : 29626, "Population totale" : 30551, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f70"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 2, "Nom du canton" : "Attignat", "Nombre de communes" : 19, "Population municipale" : 24440, "Population totale" : 24914, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f71"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 5, "Nom du canton" : "Bourg- en-Bresse-1", "Nombre de communes" : 2, "Population municipale" : 31801, "Population totale" : 33158, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f72"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 4, "Nom du canton" : "Belley", "Nombre de communes" : 35, "Population municipale" : 24216, "Population totale" : 24952, "" : "" }
  • 78. Formation MongoDB – Pour débutant Les méthodes de cursor Skip { "_id" : ObjectId("59f49559a28a8dce78cf3f6f"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 1, "Nom du canton" : "Ambérieu-en-Bugey", "Nombre de communes" : 18, "Population municipale" : 29626, "Population totale" : 30551, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f70"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 2, "Nom du canton" : "Attignat", "Nombre de communes" : 19, "Population municipale" : 24440, "Population totale" : 24914, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f71"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 5, "Nom du canton" : "Bourg- en-Bresse-1", "Nombre de communes" : 2, "Population municipale" : 31801, "Population totale" : 33158, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f72"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 4, "Nom du canton" : "Belley", "Nombre de communes" : 35, "Population municipale" : 24216, "Population totale" : 24952, "" : "" }
  • 79. Formation MongoDB – Pour débutant Les méthodes de cursor > db.pop2014.find().skip(2) { "_id" : ObjectId("59f49559a28a8dce78cf3f71"), "Code région" : 84, "Nom de la région" : "Auvergne- Rhône-Alpes", "Code département" : 1, "Code canton" : 5, "Nom du canton" : "Bourg-en-Bresse-1", "Nombre de communes" : 2, "Population municipale" : 31801, "Population totale" : 33158, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f72"), "Code région" : 84, "Nom de la région" : "Auvergne- Rhône-Alpes", "Code département" : 1, "Code canton" : 4, "Nom du canton" : "Belley", "Nombre de communes" : 35, "Population municipale" : 24216, "Population totale" : 24952, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f73"), "Code région" : 84, "Nom de la région" : "Auvergne- Rhône-Alpes", "Code département" : 1, "Code canton" : 7, "Nom du canton" : "Ceyzériat", "Nombre de communes" : 22, "Population municipale" : 25206, "Population totale" : 25892, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f74"), "Code région" : 84, "Nom de la région" : "Auvergne- Rhône-Alpes", "Code département" : 1, "Code canton" : 3, "Nom du canton" : "Bellegarde-sur- Valserine", "Nombre de communes" : 15, "Population municipale" : 21373, "Population totale" : 21910, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f75"), "Code région" : 84, "Nom de la région" : "Auvergne- Rhône-Alpes", "Code département" : 1, "Code canton" : 6, "Nom du canton" : "Bourg-en-Bresse-2", "Nombre de communes" : 4, "Population municipale" : 28101, "Population totale" : 29413, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf3f76"), "Code région" : 84, "Nom de la région" : "Auvergne- Rhône-Alpes", "Code département" : 1, "Code canton" : 8, "Nom du canton" : "Châtillon-sur- Chalaronne", "Nombre de communes" : 26, "Population municipale" : 29667, "Population totale" : 30441, "" : "" }
  • 80. Formation MongoDB – Pour débutant Les méthodes de cursor > db.pop2014.find().sort({‘Population totale’:1}) { "_id" : ObjectId("59f49559a28a8dce78cf4668"), "Code région" : 52, "Nom de la région" : "Pays de la Loire", "Code département" : 85, "Code canton" : 7, "Nom du canton" : "L' île-d'Yeu", "Nombre de communes" : 1, "Population municipale" : 4703, "Population totale" : 4802, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf4353"), "Code région" : 76, "Nom de la région" : "Occitanie", "Code département" : 48, "Code canton" : 7, "Nom du canton" : "Langogne", "Nombre de communes" : 10, "Population municipale" : 4724, "Population totale" : 4991, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf4351"), "Code région" : 76, "Nom de la région" : "Occitanie", "Code département" : 48, "Code canton" : 5, "Nom du canton" : "Florac", "Nombre de communes" : 10, "Population municipale" : 4934, "Population totale" : 5176, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf4352"), "Code région" : 76, "Nom de la région" : "Occitanie", "Code département" : 48, "Code canton" : 6, "Nom du canton" : "Grandrieu", "Nombre de communes" : 21, "Population municipale" : 5062, "Population totale" : 5211, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf4350"), "Code région" : 76, "Nom de la région" : "Occitanie", "Code département" : 48, "Code canton" : 4, "Nom du canton" : "Le Collet-de-Dèze", "Nombre de communes" : 23, "Population municipale" : 5083, "Population totale" : 5245, "" : "" } . . .
  • 81. Formation MongoDB – Pour débutant Les méthodes de cursor > db.pop2014.find().sort({‘Population totale’:-1}) { "_id" : ObjectId("59f49559a28a8dce78cf4531"), "Code région" : 84, "Nom de la région" : "Auvergne- Rhône-Alpes", "Code département" : 69, "Code canton" : 0, "Nom du canton" : "Métropole de Lyon (hors cantons)", "Nombre de communes" : 59, "Population municipale" : 1354476, "Population totale" : 1374964, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf46fd"), "Code région" : 11, "Nom de la région" : "Île-de- France", "Code département" : 93, "Code canton" : 5, "Nom du canton" : "Bobigny", "Nombre de communes" : 2, "Population municipale" : 90500, "Population totale" : 90949, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf4704"), "Code région" : 11, "Nom de la région" : "Île-de- France", "Code département" : 93, "Code canton" : 12, "Nom du canton" : "Montreuil-1", "Nombre de communes" : 2, "Population municipale" : 88292, "Population totale" : 88945, "" : "" } { "_id" : ObjectId("59f49559a28a8dce78cf470a"), "Code région" : 11, "Nom de la région" : "Île-de- France", "Code département" : 93, "Code canton" : 18, "Nom du canton" : "Saint-Ouen", "Nombre de communes" : 3, "Population municipale" : 86313, "Population totale" : 86814, "" : "" }
  • 82. Formation MongoDB – Pour débutant Requêtes sur les tableaux Ralainirina Dina Randriantsizafy Informatique scientifique Les requêtes de MongoDB
  • 83. Formation MongoDB – Pour débutant Requêtes sur les tableaux Les tableaux ou les tables, des array Champ:[val1,val2,val3,…] Notre exemple: eleves.json … {nom:"Henri20","prenom":"Jean","activites":["basket","piano","natation"]} {nom:"Henri21","prenom":"Jean","activites":["foot","basket","piano","natation"]} {nom:"Henri22","prenom":"Jean","activites":["basket","piano","natation","chant"]} {nom:"Henri23","prenom":"Jean","activites":["foot","violon","chant"]} {nom: »Henri24","prenom":"Jean","activites":["foot","basket","piano","natation"]} …
  • 84. Formation MongoDB – Pour débutant Requêtes sur les tableaux Rappel: importation du fichier json ./mongoimport --db mabase -c eleve --file eleves.json ./mongo >use mabase >db.eleve.findOne() Pour voir la structure des données Exercice: requêtes sur le champ activites
  • 85. Formation MongoDB – Pour débutant Requêtes sur les tableaux > db.eleve.find({"activites":"piano"}) Affiche tous les documents dont le tableau activites contient l’élément "piano" > db.eleve.find({activites:["foot","basket","piano"]}) Affiche tous les documents dont le tableau activites est exactement égal à ["foot","basket","piano"] > db.eleve.find({activites:["foot","piano"]}) Ne donne rien comme résultat.
  • 86. Formation MongoDB – Pour débutant Requêtes sur les tableaux > db.eleve.find({activites:{$all:["foot","piano"]}}) Affiche tous les documents dont le tableau activites contient les éléments "foot" et "piano" dans le désordre. > db.eleve.find({activites:{$all:[« piano","foot"]}}) Donne le même résultat
  • 87. Formation MongoDB – Pour débutant Requêtes sur les tableaux > db.eleve.find({activites:{$size:2}}) Affiche tous les documents dont le tableau activites contient 2 éléments > db.eleve.find({activites:{$all:["piano","foot"]}}).count() Affiche le nombre d'élèves qui ont comme activités le piano et le foot. Execrice: afficher le nombre d’élèves qui ont 4 activités
  • 88. Formation MongoDB – Pour débutant Indexation Ralainirina Dina Randriantsizafy Informatique scientifique Les requêtes de MongoDB
  • 89. Formation MongoDB – Pour débutant Indexation • Les index permettent à MongoDB de traiter et de répondre rapidement aux requêtes en créant des représentations petites et efficaces des documents dans une collection. • Les utilisateurs peuvent créer des index pour n'importe quelle collection sur n'importe quel champ d'un document. Par défaut, MongoDB crée un index sur le champ _id de chaque collection. • Ce tutoriel explique comment créer un index sur un seul champ. MongoDB prend également en charge les index composés, qui sont des index sur plusieurs champs.
  • 90. Formation MongoDB – Pour débutant Indexation • Principe: Document avec index par défaut Exemple pour la pop2014 { "_id" : ObjectId("59f49559a28a8dce78cf3f81"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 20, "Nom du canton" : "Thoiry", "Nombre de communes" : 16, "Population municipale" : 26848, "Population totale" : 27595, "" : "" }
  • 91. Formation MongoDB – Pour débutant Indexation • Principe: Si on fait souvent des requêtes sur nom de région, mongoDB va parcourir toute la base de données, même si elle a déjà exécuté la requête. C’est une perte de temps.
  • 92. Formation MongoDB – Pour débutant Indexation • Principe: Si un index est créé pour le champ nom de région , le champ sera trier de façon croissante ou décroissante. La recherche du champ d’une requête sera plus rapide. MongDB saura qu’il devra s’arrêté quand il aura atteint son objectif. 1 2 3 4 N
  • 93. Formation MongoDB – Pour débutant Indexation • Méthode: 1.Bien choisir le champ à indexer, pourquoi l’indexer ? 2.Indexer le champ 3.Les requêtes portent le plus souvent sur ce champ 4.Requêtes sur d’autres champs: aucun avantage 5.Un index peut être supprimé 6.Il peut y avoir plusieurs index
  • 94. Formation MongoDB – Pour débutant Indexation • Méthode: >db.collection.createIndex({champ:1},{name: nom_index}) Le champ sera indexé de façon croissante {name: nom_index} donne un nom à un index, optionnelle >db.collection.createIndex({champ:-1}) Le champ sera indexé de façon décroissante >db.collection.getIndexes() Montre les index créés pour la collection
  • 95. Formation MongoDB – Pour débutant Indexation • Méthode: Index multiple >db.collection.createIndex({champ1:1, champ2:1})
  • 96. Formation MongoDB – Pour débutant Indexation • Méthode de suppression: >db.collection.dropIndex({champ:1}) Supprime l’indexation du champ spécifié >db.collection.dropIndex(nom_index) Supprime l’index nommé nom_index >db.collection.dropIndexes() Supprime tous les index de la collection
  • 97. Formation MongoDB – Pour débutant Indexation • TP: TP d’indexation sur les nom de région et population totale
  • 98. Formation MongoDB – Pour débutant Aggrégation Ralainirina Dina Randriantsizafy Informatique scientifique Les requêtes de MongoDB
  • 99. Formation MongoDB – Pour débutant Aggregation • Les opérations d'agrégation traitent les enregistrements de données et renvoient les résultats calculés. • Les opérations d'agrégation regroupent les valeurs de plusieurs documents et peuvent effectuer diverses opérations sur les données groupées pour renvoyer un résultat unique. • MongoDB propose trois méthodes d'agrégation: le pipeline d'agrégation, la fonction de réduction de la carte (ou MapReduce) et les méthodes d'agrégation à usage unique.
  • 100. Formation MongoDB – Pour débutant Aggregation Pipeline • Le cadre d'agrégation de MongoDB est basé sur le concept des pipelines (tuyau) de traitement de données. Les documents entrent dans un pipeline à plusieurs étapes qui transforme les documents en un résultat agrégé. • $match : Les étapes de pipeline les plus élémentaires fournissent des filtres qui fonctionnent comme des requêtes et des transformations de documents qui modifient la forme du document de sortie.
  • 101. Formation MongoDB – Pour débutant Aggregation Pipeline • $group … D’autres opérations de pipeline fournissent des outils pour regrouper et trier des documents par champ ou champs spécifiques, ainsi que des outils pour agréger le contenu des tableaux, y compris des tableaux de documents. De plus, les étapes de pipeline peuvent utiliser des opérateurs pour des tâches telles que le calcul de la moyenne ou la concaténation d'une chaîne.
  • 102. Formation MongoDB – Pour débutant Aggregation Pipeline
  • 103. Formation MongoDB – Pour débutant Aggregation MapReduce MongoDB fournit également des opérations de réduction de mappage pour effectuer l'agrégation. En général, les opérations de réduction de mappage comportent deux phases: une étape de mappage qui traite chaque document et émet un ou plusieurs objets pour chaque document d'entrée, et réduit la phase qui combine la sortie de l'opération de mappage. En option, map-reduce peut avoir une étape de finalisation pour apporter des modifications finales au résultat. Comme d'autres opérations d'agrégation, map-reduce peut spécifier une condition de requête pour sélectionner les documents d'entrée, trier et limiter les résultats.
  • 104. Formation MongoDB – Pour débutant Aggregation MapReduce
  • 105. Formation MongoDB – Pour débutant Aggregation Single purpose usage unique Recherche les valeurs distinctes d'un champ spécifié dans une seule collection ou vue et renvoie les résultats dans un tableau.
  • 106. Formation MongoDB – Pour débutant Aggregation Pratique: Pipeline • Pipeline: composé de séquences $match $group $limit $skip $sort $redact $project … Des exemples avec pop2014
  • 107. Formation MongoDB – Pour débutant Aggregation Pratique: Pipeline Des exemples avec pop2014 { "_id" : ObjectId("59f49559a28a8dce78cf3f81"), "Code région" : 84, "Nom de la région" : "Auvergne-Rhône-Alpes", "Code département" : 1, "Code canton" : 20, "Nom du canton" : "Thoiry", "Nombre de communes" : 16, "Population municipale" : 26848, "Population totale" : 27595, "" : "" } Objectif: Lister les cantons qui ont un nombre déterminé de communes, par exemple 14 ou 10, ensuite les regrouper par région
  • 108. Formation MongoDB – Pour débutant Aggregation Pratique: Pipeline Des exemples avec pop2014 Objectif: Lister les cantons qui ont un nombre déterminé de communes, par exemple 14 ou 10, ensuite les regrouper par région > db.pop2014.aggregate([{$match:{"Nombre de communes":10}},{$group:{_id:"$Code région",totale:{$sum:"$Population totale"}}}])
  • 109. Formation MongoDB – Pour débutant Aggregation Pratique: Usage unique Des exemples avec pop2014 Objectif: Lister les noms des régions, et des cantons db.pop2014.distinct("Nom de la région ») db.pop2014.distinct("Nom du canton ") Pour arranger par ordre croissant: db.pop2014.distinct("Nom du canton").sort()
  • 110. Formation MongoDB – Pour débutant Principe des utilisateurs Ralainirina Dina Randriantsizafy Informatique scientifique Gestion des utilisateurs
  • 111. Formation MongoDB – Pour débutant Principe des utilisateurs, authentification •L'authentification est le processus de vérification de l'identité d'un client. Lorsque le contrôle d'accès, c'est-à-dire l'autorisation, est activé, MongoDB exige que tous les clients s'authentifient afin de déterminer leur accès. Bien que l'authentification et l'autorisation soient étroitement liées, l'authentification est distincte de l'autorisation. •L'authentification (QUI) vérifie l'identité d'un utilisateur; •L'autorisation (FAIRE QUOI) détermine l'accès de l'utilisateur vérifié aux ressources et aux opérations.
  • 112. Formation MongoDB – Pour débutant •Un utilisateur : Login, mot de passe, une base de données, rôle •Authentification : active avec l’option –auth de mongod Principe des utilisateurs, authentification
  • 113. Formation MongoDB – Pour débutant •La commande mongod - –auth •Permet l'autorisation de contrôler l'accès de l'utilisateur aux ressources et opérations de la base de données. Lorsque l'autorisation est activée, MongoDB exige que tous les clients s'authentifient d'abord afin de déterminer l'accès pour le client. •Si aucun utilisateur n'existe, l'interface localhost continuera d'avoir accès à la base de données jusqu'à ce que le premier utilisateur soit créé. Principe des utilisateurs, authentification
  • 114. Formation MongoDB – Pour débutant Gestion des utilisateurs Ralainirina Dina Randriantsizafy Informatique scientifique Gestion des utilisateurs
  • 115. Formation MongoDB – Pour débutant Gestion des utilisateurs •Création •Modification •Affichage de/des utilisateurs •Suppression
  • 116. Formation MongoDB – Pour débutant Gestion des utilisateurs •Création •use mabase •db.createUser({user:’utilisateur’,pwd:’mot de passe’,roles:[liste]}) •On peut créer plusieurs utilisateurs pour une base de données, •Exemple: •db.createUser({user:’toto’,pwd:’mdp_toto_2017’,roles:[‘readWrite’]}) •Crée l’utilisateur toto, pour la base de données en cours, avec le mot de passe mdp_toto_2017
  • 117. Formation MongoDB – Pour débutant Gestion des utilisateurs •Modification •db.changeUserPassword("utilisateur", "mot de passe") •Exemple: •db.changeUserPassword("toto", "mdp_2017") •Modifie le mot de passe de l’utilisateur toto, pour la base de données en cours. TP
  • 118. Formation MongoDB – Pour débutant Gestion des utilisateurs •Affichage •db.getUser ("utilisateur") Affiche les informations de l’utilisateur spécifié •db.getUsers() Affiche tous les utilisateurs de la base de données en cours TP
  • 119. Formation MongoDB – Pour débutant Gestion des utilisateurs •Suppression •db.dropUser ("utilisateur") Supprime le compte utilisateur spécifié •db.dropAllUsers() Supprime tous les utilisateurs de la base de données en cours TP
  • 120. Formation MongoDB – Pour débutant Authentification Ralainirina Dina Randriantsizafy Informatique scientifique Gestion des utilisateurs
  • 121. Formation MongoDB – Pour débutant Authentification •L’authentification des utilisateurs doit être activée •Une fois un utilisateur est créé pour une base de données, l’authentification est obligatoire pour cette base •L'activation du contrôle d'accès sur un déploiement MongoDB renforce l'authentification, ce qui oblige les utilisateurs à s'identifier. Lors de l'accès à un déploiement MongoDB dont le contrôle d'accès est activé, les utilisateurs peuvent uniquement effectuer des actions en fonction de leurs rôles.
  • 122. Formation MongoDB – Pour débutant Authentification, mécanisme •Il existe plusieurs types de mécanismes d’authentification •Par defaut: SCRAM-SHA-1 •SCRAM-SHA-1 vérifie les informations d'identification de l'utilisateur fournies par rapport au nom, au mot de passe et à la base de données d'authentification de l'utilisateur. La base de données d'authentification est la base de données dans laquelle l'utilisateur a été créé et, avec le nom de l'utilisateur, sert à identifier l'utilisateur.
  • 123. Formation MongoDB – Pour débutant Authentification, pratiquement •Deux méthodes d’authentification 1. Authentification sous client 2. Authentification au lancement de mongo
  • 124. Formation MongoDB – Pour débutant Authentification, pratiquement • Authentification sous client Instance ‘normale’ avec —auth ./mongod —-dbpath data/db --auth Pour le client ./mongo >use abase >db.auth({user:’utilisateur’,pwd:’motdepasse’}) Sans l’authentification, la base sera inutilisable
  • 125. Formation MongoDB – Pour débutant Authentification, pratiquement • Authentification au lancement de mongo Instance ‘normale’ avec —-auth ./mongod —-dbpath data/db --auth Pour le client ./mongo -u ‘utilisateur’ -p ‘motdepasse’ --authenticationDatabase ‘mabase’ TP
  • 126. Formation MongoDB – Pour débutant Rôle des utilisateurs Ralainirina Dina Randriantsizafy Informatique scientifique Gestion des utilisateurs
  • 127. Formation MongoDB – Pour débutant Rôles des utilisateurs •MongoDB accorde l'accès aux données et aux commandes via une autorisation basée sur les rôles et fournit des rôles intégrés (Built-in rôles) qui fournissent les différents niveaux d'accès généralement nécessaires dans un système de base de données. •Vous pouvez en outre créer des rôles définis par l'utilisateur.
  • 128. Formation MongoDB – Pour débutant Rôles des utilisateurs •MongoDB accorde l'accès aux données et aux commandes via une autorisation basée sur les rôles et fournit des rôles intégrés (Built-in rôles) qui fournissent les différents niveaux d'accès généralement nécessaires dans un système de base de données. •Vous pouvez en outre créer des rôles définis par l’utilisateur. •Un rôle accorde des privilèges pour effectuer des ensembles d'actions sur des ressources définies. Un rôle donné s'applique à la base de données sur laquelle il est défini et peut accorder un accès à un niveau de la collection.
  • 129. Formation MongoDB – Pour débutant Rôles des utilisateurs >use mabase >db.createUser( { user: "utilisateur", pwd: "motdepasse", roles: [ « role"] })
  • 130. Formation MongoDB – Pour débutant Rôles des utilisateurs 1.Rôles d’utilisateur de base de données 2.Rôles d’administration de base de données Pour ce cours
  • 131. Formation MongoDB – Pour débutant Rôles des utilisateurs Rôles utilisateurs read Offre la possibilité de lire des données sur toutes les collections non-système et sur les collections système suivantes: system.indexes, system.js et system.namespaces. Le rôle fournit un accès en lecture en accordant les actions suivantes: • collStats • dbHash • dbStats • find • killCursors • listIndexes • listCollections
  • 132. Formation MongoDB – Pour débutant Rôles utilisateurs readWrite Fournit tous les privilèges du rôle lu plus la capacité de modifier les données sur toutes les collections non système et la collection system.js. Le rôle fournit les actions suivantes sur ces collections: •collStats •convertToCapped •createCollection •dbHash •dbStats •dropCollection •createIndex •dropIndex •find •insert •killCursors •listIndexes •listCollections •remove •renameCollectionSameDB •update
  • 133. Formation MongoDB – Pour débutant Rôles des utilisateurs Rôles administrateur de base de données dbOwner Le propriétaire de la base de données peut effectuer toute action administrative sur la base de données. Ce rôle combine les privilèges accordés par les rôles readWrite, dbAdmin et userAdmin.
  • 134. Formation MongoDB – Pour débutant Rôles des utilisateurs Rôles administrateur de base de données userAdmin Offre la possibilité de créer et de modifier des rôles et des utilisateurs pour une base de données. Un utilisateur avec ce rôle sur une base de données peut attribuer n'importe quel rôle ou privilège à n'importe quel utilisateur pour cette base de données, y compris eux-mêmes. Le rôle userAdmin fournit explicitement les actions suivantes:
  • 135. Formation MongoDB – Pour débutant Rôles des utilisateurs Rôles administrateur de base de données userAdmin changeCustomData changer le mot de passe createRole Créer un utilisateur dropRole dropUser grantRole revokeRole viewRole voirUtilisateur
  • 136. Formation MongoDB – Pour débutant Principe de la réplication Ralainirina Dina Randriantsizafy Informatique scientifique Réplication
  • 137. Formation MongoDB – Pour débutant Replication • Dans une base de données, les données sont sa raison d’être • Sécurité des données dans MongoDB • Redondance • Haute disponibilité
  • 138. Formation MongoDB – Pour débutant Replication •Principe de la réplication •Mise en oeuvre de ReplSet •Configuration •Test de robustesse
  • 139. Formation MongoDB – Pour débutant Replication •Principe de la réplication - Redondance: Copie des données sur des noeuds (Replicas) de réplication. Maximum: 50 noeuds. - Des noeuds sur des serveurs différents: host:port Primaire
  • 140. Formation MongoDB – Pour débutant Replication •Principe de la réplication - Redondance: Copie des données sur des noeuds (Replicas) de réplication. - Des noeuds sur des serveurs différents: host:port - Des noeuds sur des répertoires, des disques différents Primaire
  • 141. Formation MongoDB – Pour débutant Replication •Principe de la réplication - Redondance: Copie des données sur des noeuds (Replicas) de réplication. - Le client se connecté sur le primaire - On ne peut écrire que sur le primaire Primaire Client
  • 142. Formation MongoDB – Pour débutant Replication •Principe de la réplication - Haute disponibilité (high availability): - Pour une rapidité des requêtes, les secondaires pourront être interrogés Primaire Client
  • 143. Formation MongoDB – Pour débutant Replication •Principe de la réplication - Si le primaire n’est plus disponible: - Les secondaires vont élire un nouveau primaire Primaire Client Nouveau Primaire
  • 144. Formation MongoDB – Pour débutant Replication •Principe de la réplication - Si le primaire n’est plus disponible: - Les secondaires vont élire un nouveau primaire Primaire Client Nouveau Primaire
  • 145. Formation MongoDB – Pour débutant Replication •Principe de la réplication - Si le primaire n’est plus disponible: - Faire attention: des secondaires ne doivent pas être primaire pour divers raisons - Eloignement géographique - Noeud pas trop sécurisé - … Primaire Client Nouveau Primaire Priority=0
  • 146. Formation MongoDB – Pour débutant Replication •Principe de la réplication - Des noeuds peuvent être caché, pour être invisible du coté client Client Nouveau Primaire Priority=0 Hidden true
  • 147. Formation MongoDB – Pour débutant Mise en œuvre de la réplication Ralainirina Dina Randriantsizafy Informatique scientifique Réplication
  • 148. Formation MongoDB – Pour débutant Réplication: mise en oeuvre • Objectif: Mettre en ouvre un système de replication avec 4 noeuds de replSet • 4 terminals Serveurs • 1 terminal client
  • 149. Formation MongoDB – Pour débutant Description des tâches: Nous allons créer 4 répertoires: repertoire1, repertoire2, repertoire3, repertoire4 Réplication: mise en oeuvre
  • 150. Formation MongoDB – Pour débutant Description des tâches: Sur les serveurs (Un terminal pour un serveur) • Donner un nom à la réplication: rs1 • Créer le répertoire où seront enregistrés les base de données • Identifier l’adresse du serveur (—host) adresse:port (exemple: mondomaine.com:27019) • Par défaut localhost:27017 • ./mongod - -port 27017 - -dbpath chemin_repertoire1 - -replSet rs1 • ./mongod - -port 27018 - -dbpath chemin_repertoire2 - -replSet rs1 • ./mongod - -port 27019 - -dbpath chemin_repertoire3 - -replSet rs1 • ./mongod - -port 27020 - -dbpath chemin_repertoire4 - -replSet rs1 Réplication: mise en oeuvre
  • 151. Formation MongoDB – Pour débutant Description des tâches: Pour un client(Un terminal pour un client) • Lancer le client • Initier la réplication • Ajouter les serveurs replétés • ./mongo - -host localhost:27017 Réplication: mise en oeuvre
  • 152. Formation MongoDB – Pour débutant Réplication: mise en oeuvre • Sur un client: >rsconf = { _id: « rs1", members: [ { _id: 0, host: « localhost:27017" } ] } >rs.initiate(rsconf)
  • 153. Formation MongoDB – Pour débutant Réplication: mise en oeuvre • Sur un client >rs.conf() Affiche la configuration PRIMAIRE>rs.status() Affiche l’état des replSet PRIMAIRE>rs.add(‘localhost:27018’) PRIMAIRE>rs.add(‘localhost:27019’) PRIMAIRE>rs.add(‘localhost:27020’) Affiche l’état des replSet, en particulier notez le primaire PRIMAIRE>rs.status() >use mabase Utiliser la base, ce n’est pas la base précédente car c’est dans un autre répertoire
  • 154. Formation MongoDB – Pour débutant Réplication: mise en oeuvre • Nous avons besoin de 5 terminals localhost:27017 Localhost:27019 Localhost:27020 Localhost:27018 Client
  • 155. Formation MongoDB – Pour débutant Configuration Ralainirina Dina Randriantsizafy Informatique scientifique Replication
  • 156. Formation MongoDB – Pour débutant Replication: configuration • Dans un environnement replication on est soit connécté au serveur PRIMAIRE, soit au serveur SECONDAIRE rs1.PRIMARY> rs1.SECONDARY> >rs.conf() Affiche la configuration >rs.status() Affiche l’état de la réplication
  • 157. Formation MongoDB – Pour débutant Replication: configuration Le résultat de rs.conf() peut être mis dans une variable. On peut changer la configuration des serveurs avec cette variable Exemple varConf=rs.conf() varConf.members[2].priority=0 rs.reconfig(varConf) varConf.members[2].hidden=true Va appliquer les modifications sur la réplication TP
  • 158. Formation MongoDB – Pour débutant Replication: configuration Forcer une modification Si on est en SECNDAIRE, on ne peut pas modifier une configuration, en local on peut forcer rs.reconfig(varConf,force) L’argument force est un document défini avant force={force:true} TP
  • 159. Formation MongoDB – Pour débutant Introduction au sharding Ralainirina Dina Randriantsizafy Informatique scientifique Réplication
  • 160. Formation MongoDB – Pour débutant Introduction au sharding • Pour prendre en charge des données très volumineux (Données> RAM) et des opérations à haut débit, MongoDB va utiliser la fragmentation. • Les CPU et les RAM sont limités • Une augmentation de puissance est nécessaire • Augmentation verticale et augmentation horizontale
  • 161. Formation MongoDB – Pour débutant Introduction au sharding • Vertical scaling: rendre le serveur plus puissant en augmentant la vitesse du CPU et la taille de la RAM. Limite: les offres du marché du matériel. • Horizontal scaling: distribution des charges sur plusieurs serveurs (sharding). Le traitement et le stockage des données sera partagé sur des noeuds Shard.
  • 162. Formation MongoDB – Pour débutant Introduction au sharding Routeur mongos Routeur mongos Shard replset Shard replset Shard replet Shard replset { {{ Serveur de configuration Replset
  • 163. Formation MongoDB – Pour débutant Introduction au sharding • Différence par rapport à la replication: • Replset: tous les documents sont copiés sur tous les replset secondaires • Sharding: les données sont partagés sur les serveurs shard, cela permet d’optimiser le traitement des documents volumineux
  • 164. Formation MongoDB – Pour débutant Principe du Backup-Restoration Ralainirina Dina Randriantsizafy Informatique scientifique Backup
  • 165. Formation MongoDB – Pour débutant Backup: sauvegarde • Une base de données doit avoir une stratégie de sauvegarde. • Pour la sécurité des données, très utile en cas de perte du serveur • Pour le transport ou la migration de la base vers un autre serveur
  • 166. Formation MongoDB – Pour débutant Backup: sauvegarde • Sauvegarde ./mongodump • Restoration ./mongorestore Commande dans terminale Fonctionne sous une instance mongod
  • 167. Formation MongoDB – Pour débutant Backup: sauvegarde • Sauvegarde ./mongodump Sauvegarde toute la base de données ou une partie dans un fichier BSON; forme binaire de JSON Le répertoire de sauvegarde par défaut est dump ./mongodump - -db base ./mongodump - -db base -o cheminRepertoireSauvegarde/ ./mongodump - -db base - -collection nom_collection Option —gzip pour compresser le fichier archive
  • 168. Formation MongoDB – Pour débutant Backup: sauvegarde • Restoration ./mongorestore Restore toute la base de données à partir d’un fichier BSON; forme binaire de JSON ./mongorestore - -drop - -db base chemin_vers_archive_a_restorer/
  • 169. Formation MongoDB – Pour débutant Mise en oeuvre du backup Ralainirina Dina Randriantsizafy Informatique scientifique Backup
  • 170. Formation MongoDB – Pour débutant Backup: mise en oeuvre • Besoins • Une instance Mongod • Un terminal client pour la sauvegarde • Un répertoire de sauvegarde, sinon la sauvegarde sera dans dump/ • Une stratégie de sauvergarde
  • 171. Formation MongoDB – Pour débutant Backup: mise en oeuvre de sauvegarde • Sauvegarde de mabase ./mongodump —db mabase • Sauvegarde de la collection pop2014 ./mongodump —db mabase —collection pop2014 • Sauvegarde dans un répertoire spécifique ./mongodump —db mabase —collection pop2014 -o dump2/
  • 172. Formation MongoDB – Pour débutant Backup: mise en oeuvre de restoration • Retore simple ./mongorestore —drop—db mabaseRest dump/mabase Ou ./mongorestore —drop—db mabaseRest2 dump2/mabase
  • 173. Formation MongoDB – Pour débutant Backup du replSet Ralainirina Dina Randriantsizafy Informatique scientifique Backup
  • 174. Formation MongoDB – Pour débutant Backup: replSet • Principes • Un serveur replSet fonctionnel • Backup d’une base de ce replSet • On peut sauvegarder un serveur secondaire • ./mongodump —host localhost:27017—db mabase
  • 175. Formation MongoDB – Pour débutant Backup: replSet • Principes • Un serveur replSet fonctionnel • Backup d’une base de ce replSet • On peut sauvegarder un serveur secondaire Pour la restoration • Pour faire simple : restorer le replSet primaire et les autres se synchroniseront, de plus les secondaires ne sont pas accessibles en écriture TP