Data">
BD NoSQL GLSI 1
BD NoSQL GLSI 1
BD NoSQL GLSI 1
Dr Mouhamadou Lamine Ba
Mars 2023
Plan
• Concepts de base
2
BD NoSQL orientées documents
• Elles stockent une collection de documents
4
Collection
lustration des modèles NoSQ
• Est une unité logique de stockage de données dans une
base NoSQL orientée document
Contient: représentation
Exemple
• un ou plusieurs documents,
de ventespas en
forcément de
document
Introduction aux bases de données non-relationnelles
même
Exemplenature ou schéma
: Représentation de ventes en document
Collection Sales
#oid
"ticket" : 1
"date" : "01/01/16"
4d040766076 "books" : [
6b236450b45
"_id" : 2212121504
a3
"_id" : 2212141556
]
"ticket" : 2
4d040766076 "date" : "01/01/16"
6b236450b45 "books" : [
a4 "_id" : 2212141556
]
Collection Book
#oid 5
Implémentations les plus courantes
6
Modélisation logique et
JSON
7
Modélisation logique arborescence
8
JSON : Definition
• Format de représentation logique de données, hérité de la
syntaxe de création d’objets en Javascript
9
langages qui l'utilisent (sa seule fonction est d
différemment
Exemple : unpour chaque
fichier cas suivant
JSON simplele conte
1 {
2 "nom" : "Norris",
3 "prenom" : "Chuck",
4 "age" : 73,
5 "etat" : "Oklahoma"
6 }
10
JSON : règles syntaxiques
• R1 : il ne doit exister qu'un seul élément père par document contenant tous les
autres : un élément racine
• soit équivalent à [] ou {}
11
Éléments JSON et Types
• Il existe deux types d’éléments :
• Des couples de type "nom": valeur, comme l'on peut en trouver dans les
tableaux associatifs.
12
Tableaux : liste de valeurs (tableaux et objets aussi autorisés) entrées entre
séparées par des virgules.
Objets : listes de couples "nom": valeur (tableaux et objets aussi autoris
Modélisation logique avec JSON : exemple
entre accolades, séparés par des virgules.
Exemple
Gestion des cours d’une formation
1 {
2 "nom cours" : "NF29",
3 "theme" : "ingenierie documentaire",
4 "etudiants" : [
5 {
6 "nom" : "Norris",
7 "prenom" : "Chuck",
8 "age" : 73,
9 "pays" : "USA"
10 },
11 {
12 "nom" : "Doe",
13 "prenom" : "Jane",
14 "age" : 45,
15 "pays" : "Angleterre"
16 },
17 {
18 "nom" : "Ourson",
19 "prenom" : "Winnie",
20 "age" : 10,
21 "pays" : "France"
22 }
23 ]
24 }
13
Autres usages du JSON
14
Mise en oeuvre avec
MongoDB
15
MongoDB : présentation
• MongoDB est une BD NoSQL open source créée par
MongoDB, inc en 2008
16
Serveur MongoDB
• Equivaut à une instance + plusieurs bases de
données
17
Architectures possibles
18
Installation et démarrage de MongoDB
• Voir https://www.mongodb.com/docs/manual/
installation/ pour les instructions d’installation pour
chaque plateforme
19
Connexion à un serveur MongoDB
20
Création et Ajout sous MongoDB
• use nom_base
• db.createCollection(‘’nom_collection’’)
• db.nom_collection.insert(Document JSON)
21
Lecture des données sous MongoDB
22
Exemple de lecture avec restrictions
• db.etudiant.find({"nom":"Mamadou"})
23
Exemple de lecture avec restriction et projection
• db.etudiant.find({"nom":"Mamadou"}, {"nom":1,
"classe":1} )
24
Mise à jour de documents
• Trois méthodes
• db.etudiant.updateMany(
{ "nom": "ba"},
26
Suppression de documents
• Deux méthodes
• db.collection.deleteMany()
• db.collection.deleteOne()
27
Exemple de suppression de documents
• db.collection.deleteMany({})
• db.collection.deleteMany({"note": {$lt:10}})
28
Visualisation du dictionnaire de données
• On peut visualiser la liste des BD sur un serveur MongoDB
avec :
• show dbs
• show collections
• db.mycoll.find()
29
Agrégats dans MongoDB
Les utilisations standards de l’agrégat incluent :
30
Syntaxe d’un agrégat sous MongoDB
Sous MongoDB, une agrégation est une suite
d’étapes, chacune prenant en entrée un ou plusieurs
documents. Pour créer une requête d’agrégat utiliser
la syntaxe suivante :
31
Exemple de requête d’agrégat
32
Requête d’agrégat : première étape
• genres
• imdb
• title
33
Requête d’agrégat : deuxième étape
L'étape $unwind transmet un document pour chaque
élément du tableau genres à l'étape suivante du pipeline.
34
Requête d’agrégat : troisième étape
La phase $group :
35
Requête d’agrégat : troisième étape
36
Requête d’agrégat : dernière étape
L'étape $sort trie les documents qu'elle reçoit de
l'étape précédente par ordre décroissant en fonction
de la valeur du champ averageGenreRating.
37
Fonctions d’agrégation
Ceux-ci sont essentiellement utilisés dans la phase d’agrégation :
• sum
• count
• avg
• min:
• max
• first
• last
38
Distribution des données dans MongoDB
• MongoDB prend en charge la mise à l'échelle horizontale via le sharding
• MongoDB utilise la clé de partition (« shard key ») pour distribuer les documents
de la collection entre les partitions. La clé de partition consiste en un ou plusieurs
champs dans les documents.
39
Architecture d’un cluster MongoDB
40
Configuration d’un cluster MongoDB
41
Réplication dans MongoDB
42
Configuration de la replication dans MongoDB
43
Distribution des traitements dans MongoDB
• Map-reduce prend en charge les opérations sur des collections
MongoDB partitionnées, à la fois en entrée et en sortie.
44
Syntaxe de MapReduce dans MongoDB
MongoDB : MapReduce
db.runCommand(
{ mapreduce : <collection>,
map : <mapfunction>,
reduce : <reducefunction>
[, query : <query filter object>]
[, sort : <sorts the input objects using this key. Useful for optimization, like
sorting by the emit key for fewer reduces>]
[, limit : <number of objects to return from collection>]
[, out : <see output options below>]
[, keeptemp: <true|false>]
[, finalize : <finalizefunction>]
[, scope : <object where fields go into javascript global scope >]
[, jsMode : true]
[, verbose : true]
}
);
45
MapReduce dans MongoDB : exemple
MapReduce : exemple
Collection de commentaires : Fonction Reduce :
46
Autres fonctionnalités de MongoDB
• Sauvegarde/Restauration
• Import/Export
• Indexage
• Turning
47
MongoDB et langages de programmation
48
Interroger MongoDB en Javascript
Le console mongo per met d’exécuter des
programme JavaScript avec instruction load.
https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/
49
MongoDB
Mongo en
en Java Java
Connexion
1 import com. mongodb . Mongo ;
2 import com. mongodb .DB;
3 import com. mongodb . DBCollection ;
4 import com. mongodb . BasicDBObject ;
5 import com. mongodb . DBObject ;
6 import com. mongodb . DBCursor ;
7
8 Mongo m = new Mongo ();
9 // or
10 Mongo m = new Mongo ( " localhost " );
11 // or
12 Mongo m = new Mongo ( " localhost " , 27017 );
13
14 DB db = m. getDB ( " mydb " );
51
Mongo en Java
MongoDB en Java
● Insertion d'un objet (document) :
1 BasicDBObject doc = new BasicDBObject ();
2
3 doc . put (" name ", " MongoDB ");
4 doc . put (" type ", " database ");
5 doc . put (" count ", 1);
6
7 BasicDBObject info = new BasicDBObject ();
8
9 info . put ("x", 203);
10 info . put ("y", 102);
11
12 doc . put (" info ", info );
13
14 coll . insert ( doc );
53
Mongo en Java
MongoDB en Java
● Requêtes :
1 BasicDBObject query = new BasicDBObject ();
2 List < Integer > list = new ArrayList < Integer >();
3 list . add (9);
4 list . add (10);
5 query .put(" number ", new BasicDBObject (" $in ", list ));
6 DBCursor cursor = collection . find ( query );
7 while ( cursor . hasNext ()) {
8 System . out . println ( cursor . next ());
9}
LI328 –54
Technologies Web (B. Amann)
Mongo en Java
MongoDB en Java
● Requêtes :
1 BasicDBObject query = new BasicDBObject ();
2 query .put(" number ", new BasicDBObject (" $gt ", 5). append (" $lt ", 8));
3 DBCursor cursor = collection . find ( query );
4 while ( cursor . hasNext ()) {
5 System . out . println ( cursor . next ());
6}
coll . createIndex (new BasicDBObject ("i", 1)); // create index on "i", ascending