Vous êtes sur la page 1sur 76

MongoDB

Dr. BAATI
● système de gestion de base de données NoSQL orientée documents ´
● crée en 2007
● open-source
● développée en C++
● disponibilité de plusieurs fonctionnalités SQL (COUNT, GROUP BY, ORDER BY,
SUM...)
● possibilite d'acceder aux données via une console JavaScript
● des drivers disponibles pour plusieurs langages de programmation (Java,
JavaScript, PHP, Python, Ruby...)
● données stockées sous format JSON (JavaScript Object Notation)
● SGBD NoSQL le plus populaire en 2017
● utilisé par MTV, Disney, Doodle, Adobe, eBay...

Dr. BAATI
SQL vs MongoDB

● Base = Base
● Table = Collection
● Enregistrement (tuple) = Document
● En BDR, tous les tuples d’une table ont les mêmes champs (mais les
valeurs peuvent être différentes (les valeurs sont affectées à des
colonnes)
● Dans une collection MongoDB, les documents peuvent ne pas avoir un
champ partage (pas de colonnes dans un document MongoDB).

Dr. BAATI
Présentation de MongoDB

Prise en main de MongoDB

Travailler avec les documents

Réplication et Sharding

Dr. BAATI
Instance mongodb

Dr. BAATI
Arrêt démarrage

Dr. BAATI
Dr. BAATI
Les outils et commandes de mongodb

Dr. BAATI
Architecture de mongodb

Dr. BAATI
Utilisation des bases de données mongodb

Dr. BAATI
Les bases de données

Dr. BAATI
Dr. BAATI
Les espaces de nom - namespace

Dr. BAATI
Les collections

Dr. BAATI
Les opérateurs sur les collections

Dr. BAATI
Les documents

Dr. BAATI
Les documents : hiérarchie des objets

Dr. BAATI
Les documents dans mongodb
● Le format JSON/BSON
○ MongoDB stocke les documents au format BSON (Binary JSON)
○ BSON est la représentation binaire des objets JSON (JavaScript Object Notation)

Dr. BAATI
Les documents : rappel JSON

Dr. BAATI
Dr. BAATI
Les documents

Dr. BAATI
Dr. BAATI
Dr. BAATI
Dr. BAATI
Dr. BAATI
Les opérations CRUD en mongoDB

Dr. BAATI
Les opérations CRUD en mongoDB

Dr. BAATI
Les opérations CRUD en mongoDB

Dr. BAATI
Les opérations CRUD en mongoDB

Dr. BAATI
Les opérations CRUD en mongoDB

Dr. BAATI
Les opérations CRUD en mongoDB

Dr. BAATI
Les opérations CRUD en mongoDB

Dr. BAATI
Les opérations CRUD en mongoDB

Dr. BAATI
Les opérations CRUD en mongoDB

Dr. BAATI
Les opérations CRUD en mongoDB

Dr. BAATI
Patrons de conception appliqués en
MongoDB Imbrication ou références

Dr. BAATI
Patrons de conception appliqués en MongoDB Imbrication ou références

Dr. BAATI
Patrons de conception appliqués en MongoDB Imbrication ou références

Dr. BAATI
Patrons de conception appliqués en
MongoDB Imbrication ou références

Dr. BAATI
Patrons de conception appliqués en MongoDB Imbrication ou références

Dr. BAATI
Patrons de conception appliqués en
MongoDB Imbrication ou références

Dr. BAATI
Patrons de conception appliqués en
MongoDB Imbrication ou références

Dr. BAATI
Patrons de conception appliqués en
MongoDB Imbrication ou références

Dr. BAATI
Patrons de conception appliqués en MongoDB Imbrication ou références

Dr. BAATI
Patrons de conception appliqués en
MongoDB Imbrication ou références

Dr. BAATI
Patrons de conception appliqués en
MongoDB schémas polymorphiques et POO

Dr. BAATI
Patrons de conception appliqués en MongoDB schémas polymorphiques et POO

Dr. BAATI
Patrons de conception appliqués en MongoDB schéma polymorphique
et données semi-structurées

Dr. BAATI
Patrons de conception appliqués en MongoDB
schéma polymorphique

Dr. BAATI
Insertion d’un document

Dr. BAATI
Consultation des collections

Dr. BAATI
Interrogation d’une collection

Dr. BAATI
Interrogation d’une collection

Dr. BAATI
Interrogation d’une collection

Dr. BAATI
Interrogation d’une collection

Dr. BAATI
Interrogation d’une collection

Dr. BAATI
Interrogation d’une collection - fonctions de groupe

Dr. BAATI
Interrogation d’une collection

Dr. BAATI
Interrogation d’une collection

Dr. BAATI
Interrogation d’une collection

Dr. BAATI
Interrogation d’une collection

BSON Types — MongoDB Manual


Dr. BAATI
Interrogation d’une collection

BSON Types — MongoDB Manual


Dr. BAATI
Interrogation d’une collection

BSON Types — MongoDB Manual


Dr. BAATI
Interrogation d’une collection

Dr. BAATI
Gestion des index
Gestion des index

Dr. BAATI
Gestion des index

Dr. BAATI
Gestion des index

Dr. BAATI
MongoDB – Gestion des
utilisateurs
Gestion des utilisateurs

Par défaut, Mongo est accessible sans authentification et permet toutes les actions sur la base.
Cette configuration doit être modifiée via le fichier de configuration /etc/mongod.conf :

# network interfaces .
net: .
port: 27017 .
# n'autorise que l'ip localhost (réglage par défaut) .
bindIp: 127.0.0.1 .

Dr. BAATI
De manière similaire à MySQL, vous ajoutez des utilisateurs et leur attribuez des droits (ici des
rôles, sur divers bases).

Exemple créer un utilisateur “test” qui peut lire et écrire dans la base “blog_test” :

# on se place dans la base de données "test_blog"


use test_blog
db.createUser(
{
user: "test",
pwd: "azertyytreza",
roles: [
{ role: "readWrite", db: "test_blog" },

# on peut ajouter d'autres rôles sur d'autres bases


{ role: "read", db: "test_shop" }
]
Dr.} BAATI
)
Une fois les utilisateurs créés, il faut configurier mongo pour qu’il demande les accès. Pour cela,
dans le fichier de config – situé dans /etc/mongod.conf – il faut ajouter le paramètre de sécurité
correspondant :

# sécurity est normalement commenté, il faut le décommenter


# ou l'ajouter s'il n'existe pas
# et ajouter la ligne suivante
security:
authorization: enabled

# vous pouvez aussi démarrer mongo avec le mode auth directement depuis la ligne de commande
mongod --auth

Si vous avez modifié le fichier de config, il faut que vous redémarriez mongo pour que les
changements
Dr. BAATI
s’appliquent. Pour cela, faites sudo service mongod restart
Attention, si vous créez un utilisateur non administrateur et que vous activez ensuite
l’authentification, vous ne pourrez plus créer d’autres utilisateurs. Pour créer un utilisateur avec
les droits administrateur :

db.createUser(
{
user: "admin",
pwd: "azertyytreza",
roles: [
{ role: "dbOwner", db: "blog_test" }
]
}
)

Bien pratique, vous trouverez la liste des rôles dans la doc et vous pouvez même créer des rôles
sur mesure pour plus de souplesse.

Dr. BAATI
La commande db.getUsers() vous permet de vérifier les utilisateurs d’une base ainsi que leurs
rôles. Alternativement, pour lister l’ensemble des utilisateurs vous pouvez exécuter la
commande show users depuis la base admin.

En outre, il est également possible d’utiliser la commande db.runCommand( { usersInfo: {


forAllDBs: true } } ) afin de lister tous les utilisateurs depuis n’importe quelle base.

Vous pouvez changer le mot de passe d’un utilisateur avec


db.changeUserPassword("username", "newPass") et effacer un utilisateur avec
db.dropUser("username"). Ces deux commandes nécessitent les privilèges administrateur et elles
doivent être exécutées depuis la base à laquelle les utilisateurs sont liés.
Dr. BAATI
Il est possible d’ajouter et révoquer des droits ultérieurement. Nous utiliserons pour cela les commandes
db.grantRolesToUser et db.revokeRolesFromUser :

# il faut être placé dans la bonne base…


# vous commencez à avoir l'habitude

# pour ajouter des droits


db.grantRolesToUser(
"test",
[
{ role: "readWrite", db: "logs" }
]
)

# et pour enlever des droits


db.revokeRolesFromUser(
"test",
[
{ role: "readWrite", db: "logs" }
]
)
Dr. BAATI
Connexion

Une fois les utilisateurs créés et la base paramétrée pour passer en mode “authorization”, il
faudra que vous vous connectiez avec vos identifiants, sinon, vous serez jetés ! Pour ce faire, il
faut préciser le login et le mot de passe ainsi que la base à laquelle l’utilisateur est rattaché :

mongo -u test -p azertyyterza --authenticationDatabase blog_test

# il est aussi possible de se logger après la connexion


mongo
use blog_test
db.auth("test", "azertyyterza")

Dr. BAATI

Vous aimerez peut-être aussi