Bases de Données Avancé PDF [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

INSTITUT SUPERIEUR D'INFORMATIQUE ET TECHNOLOGIE DE COMMUNICATION HAMMAM SOUSSE

Tp1 : compte rendu TPMongoDB

Haifa Azrelli 3DNI 1

Bases de Données Avancé I. Objectifs : 1. Familiarisation avec un syst_eme NoSQL 2. Prise en main de la logique Map/Reduce 3. Familiarisation avec les concepts de r_eplication et sharding et Mise en place d'un cluster MongoDB

II. partie théorique : MongoDB est une base de données de documents open source et distribuée NoSQL . Le tableau suivant montre la relation entre la terminologie SGBDR et MongoDB

III. Partie pratique : 1. Installation : Le logiciel MongoDB 1 peut être installé et utilisé dans un environnement local ou distribué. Il est disponible sur claroline, et également en ligne : http://www.mongodb.org/downloads/ Ensuite on ajoute mongodir/bin dans la variable d'environnement PATH. Apres avoir installé la base de donnée mongo on peut : Lancer le serveur :avec la commande mongod

Haifa Azrelli 3DNI1

Page 2

 Résultat :

Lancer le client : avec la commande mongo

 Résultat :

Dans la console client le langage de manipulation de données de MongoDB est inspiré de JavaScript avec des objets. Pour faciliter l’utilisation, il est possible de : — Commandes précédente : flèche vers le haut — Compléter automatiquement une instruction : tabulation — Utiliser des variables

Haifa Azrelli 3DNI1

Page 3

2. Mise en route et opérations basiques 2.1. Shell Mongo et CRUD Commençons par : Afficher les bases de données créées par la commande : show dbs

Afficher les bases les collections crées par la commande : show collections

Se placer sur la base dbTest on utilise la commande : use bdTest

Insertion : dans cette section on va essayer les commandes d’insertion : 1. Insérer un document dans la collection « inventory » comme suit : 2. Inserer un seul élement :

 Résultat :

db.inventory.insertOne({ id:1, nom: "prod1"})

 Résultat :

Haifa Azrelli 3DNI1

Page 4

Insérer plusieurs documents `a la fois avec la commande insertMany :

 Résultat :

Pour afficher le contenu de la collection inventory.:

Recherche : Les recherches dans MongoDB se font avec les methodes suivantes : find, findOne et findMany. La commande db.inventory.find({qty :25}) :permet de chercher les documents qui ont comme qty=25  Résultat

Haifa Azrelli 3DNI1

Page 5

 Résultat

db.inventory.find({ "size.h" : 27 })  Résultat

db.inventory.find({ item : /^p/ })  Résultat

db.inventory.find({ qty : 25 }, { item : 1 })

db.inventory.find({ qty : { $lt: 30 } })

db.inventory.find({ qty : { $gt: 30 } })

db.inventory.find({ $or: [ { status: "A" }, { qty: { $gte: 10 } } ] })

Haifa Azrelli 3DNI1

Page 6

Modification Les modifications se font avec les méthodes update, updateOne et updateMany. db.inventory.updateOne({item:"paper"}, { $set: {"size.uom": "cm", status: "P"} })

db.inventory.updateOne({ id:1}, { $unset: {nom:""} })

Suppression La suppression se fait avec les méthodes delete, deleteOne et deleteMany.

db.inventory.deleteOne({ id:1})

La méthode drop sert à supprimer une collection : db.inventory.drop() La m´ethode dropDatabase sert à supprimer une base de données : db.dropDatabase()

2.2 Import d’un fichier : Pour importer la collection movies on commence par la télécharger à partir du lien: https://drive.google.com/file/d/0BxrjRB_M1OMVOHJHQ3RDdW5KM2c/view?usp=sh aring

Haifa Azrelli 3DNI1

Page 7

Puis on écrit la commande : mongoimport -d mrid -c movies --file movies.json --jsonArray  Résultat

3. Requête find & Map/Reduce 3.1. Indexation Un index est une structure de données permettant de retrouver rapidement les données. Sommairement, il existe 2 familles de structures, les arbres (notamment l'arbre B+) et les tables de hachage. Les structures arborescentes permettent les recherches par intervalle et les recherches exactes. Les tables de hachage sont trés écaches pour les recherches exactes (O(1)) mais ne permettent pas les recherches par intervalle. MongoDB permet les 2 types d'indexation. MongoDB permet d'analyser le plan d'exécution d'une requête en lui ajoutant .explain("executionStats"). Nous allons utiliser cette option pour observer l'e_et de l'indexation sur les performances d'une requéte. 1. Executez la requete ci-apr_es et observez son plan d'ex_ecution db.movies.find(f"actors.birth date":"1955"g).explain("executionStats")  Résultat

Haifa Azrelli 3DNI1

Page 8

2. Indexez la collection movies sur l'attribut actors.birth date comme suit db.movies.createIndex({"actors.birth date":1})  Résultat

1. Compter les film dans lesquels joue l'acteur "DiCaprio"  Résultat

2. Compter le nombre de film par acteur bases de Données avancée var mapFilmsActeur = function() { for (var i = 0; i < this.actors.length; i++) { emit(this.actors[i]._id, 1);} } var reduceFilmsActeur = function(acteur_id, values) {return values.length;} 3. Compter le nombre d'acteurs dirigés par un réalisateur var mapActeursRealisateur = function(){ emit(this.director._id, this.actors.length);} var reduceActeursRealisateur = function(realisateur, acteurs) { var res=0; for (var i=0; i