0% ont trouvé ce document utile (0 vote)
2 vues24 pages

10 MongoDB

Transféré par

Boudhiafi Sawssen
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues24 pages

10 MongoDB

Transféré par

Boudhiafi Sawssen
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

1

MongoDB
IFT287
(Thème 10)
2

MongoDB
• Système de gestion de base de données NoSQL

• Utilise le modèle de stockage par document

• Une base de données contient des collections de


documents

• Les documents sont écrits au format BSON


• Format binaire de JSON
3

MongoDB - Document
• Un document représente une entité du système

• Chaque collection de la base de données est composée


de zéros ou plusieurs documents
• Les documents d’une même collection n’ont pas à être du même
format

• Un document peut contenir des sous-documents

• La représentation textuelle des champs est


automatiquement sauvegardée en format binaire (BSON)
4

MongoDB - Document
• La notation BSON ajoute certaines contraintes
supplémentaires à JSON

• Les champs ne peuvent contenir


• Le caractère NULL
• Le point (.)
• Le signe de dollar ($)

• Le nom de champs _id est réservé au numéro


d’identificateur unique du document
5

MongoDB - Document
• Un document peut ressembler à ceci

{
name : "Nouveau projet",
version : 1,
langages : ["C++", "Java"],
admin : { nom : "Vincent", idEmploye : 1}
}
6

MongoDB - Atomicité

• L’écriture d’un document est une opération atomique


• Les modifications se font en entier ou pas du tout

• L’écriture de plusieurs documents est atomique pour


chacun des documents, mais pas pour l’ensemble
• Si plusieurs personnes modifient plusieurs documents, les
modifications peuvent s’entrelacer
7

MongoDB - Atomicité

• Il faut donc penser à garder les écritures atomiques

• Cela a un impact sur le design des documents et des


collections

• Il faut s’assurer de maintenir la cohérence des données.


8

MongoDB - Atomicité

• Il n’y a pas de concept de transaction avec MongoDB

• Il faut donc, de préférence, définir les documents afin


qu’une modification des données ne modifie qu’un seul
document

• Pas de commit et de rollback!


9

MongoDB - Atomicité
• Une transaction d’un gestionnaire de transaction
ressemblera donc à ceci

try
{
// Validations
// Opérations
}
catch(Exception e)
{
throw e;
}
10

MongoDB - Java

• Il est possible de se connecter à une base de données


MongoDB à l’aide de Java

• Il faut utiliser le driver java de MongoDB

• Il est disponible sur le site web du cours

• Vous pouvez vous connecter au serveur centralisé du


département ou l’installer sur votre ordinateur
11

MongoDB - Java
• Pour démarrer le serveur MongoDB sur votre ordinateur il
faut
• Créer un dossier dans lequel les bases de données seront créées

• Démarrer MongoDB avec la ligne de commande suivante


• (MongoPath)\[Link] --dbpath « Chemin du dossier de BD »

• Votre serveur devrait fonctionner. Votre programme Java pourra se


connecter sur localhost, sur le port par défaut.

• Si la base de données que vous cherchez n’existe pas, elle sera


créée automatiquement par MongoDB
12

MongoDB - Java
• Pour vous connecter sur le serveur MongoDB centralisé
du département vous devrez demander à l’enseignant

• Un nom d’utilisateur

• Le mot de passe associé

• Le nom de la BD pour cet utilisateur

• Sur le serveur central, chaque compte possède sa propre


BD
13

MongoDB - Java

• Les différentes classes utiles de MongoDB se trouvent


dans les packages

• [Link].*
• [Link].*
• [Link].*
• [Link].*
14

MongoDB - Java
• Pour établir une connexion, il faut utiliser la classe
MongoClient

• new MongoClient()
• Connexion à la BD locale sur le port par défaut
• new MongoClient(String host)
• Connexion à un hôte spécifique sur le port par défaut
• new MongoClient(String host, int port)
• Connexion à un hôte spécifique sur un port spécifique
• new MongoClient(MongoClientURI uri)
• Connexion à un URI selon le format:
mongodb://username:password@host:port/bd?options
15

MongoDB - Java
• Il est possible d’obtenir une base de données particulière
à partir du client

MongoDatabase db = [Link]("db");

• L’objet MongoDatabase permet d’accéder aux


différentes collections de la base de données

MongoCollection<Document> c = [Link]("test");
16

MongoDB - Java
• Les collections contiennent des Document

• Un document est un objet au format BSON

• Il est possible de créer des documents BSON

Document d = new Document("name", "Nouveau projet")


.append("version", 1)
.append("admin", new Document("nom", "Vincent")
.append("idEmploye", 1));
17

MongoDB - Java
• Pour ajouter un document à la collection

[Link](d);

• Il est possible d’ajouter plus d’un document à la fois

List<Document> l = new ArrayList<Document>();



[Link](l);
18

MongoDB - Java

• Votre programme utilise habituellement ses propres


structures de données

• Une façon de simplifier la création et la lecture des objets


BSON est
• De donner un constructeur à vos classes de données qui reçoit un
Document en paramètre afin de construire l’objet

• De donner une méthode toDocument qui retourne l’objet au


format BSON
19

MongoDB - Java
public MaClasse(Document d)
{
[Link] = [Link]("monId");
[Link] = [Link]("nom");
[Link] = [Link]("date");
}

public Document toDocument()


{
return new Document("monId", monId)
.append("nom", nom)
.append("date", dateEnregistrement);
}
20

MongoDB - Java
• Il est possible de parcourir les documents d’une collection
particulière

MongoCursor<Document> cursor = [Link]().iterator();


try
{
while([Link]()) {
Document d = [Link]();

}
}
finally
{
[Link]();
}
21

MongoDB - Java

• La méthode find permet d’ajouter des contraintes sur la


recherche

• Il existe plusieurs classes utilitaires pour les filtres

[Link].*

[Link](eq("nom", "Vincent"));
[Link](lt("monId", 10));
[Link](and(eq("monId", 10), eq("nom", "Vincent")));

22

MongoDB - Java
• MongoDB permet aussi de mettre à jour les champs des
documents déjà sauvegardés

[Link](eq("nom", "Vincent"), set("nom", "Marc"));


[Link](lt("monId", 10), set("date", d));

• Pour combiner plusieurs champs à modifier en une seule


fois

[Link](eq("nom", "Vincent"),
combine(set("nom", "Marc"),
set("date", d)));
23

MongoDB - Java

• Pour supprimer un document d’une collection

[Link](eq("nom", "Vincent"));
[Link](lt("monId", 10));

24

MongoDB - Java
• Il existe une variété de classes pour vous aider à construire
vos requêtes

• Allez voir la documentation


• Pour les filtres
• [Link]
• Pour les mises à jour
• [Link]
• Pour les tris
• [Link]

Vous aimerez peut-être aussi