Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Exemple : mongo DB
MongoDB est un engin de base de données dans la famille des engins NoSQL. Dans ce
contexte, il n’y a pas de table ou de schéma de structure de données. Les données sont
enregistrées dans des structures nommées Documents.
MongoBD est une base de données open source NoSQL orientée document. Elle stocke des
données au format JSON (en fait BSON, qui est une version binaire de JSON).
Le serveur MongoDB est organisé en plusieurs databases :
Chaque database contient des collections.
Chaque collection contient des documents.
Chaque document est au format JSON et contient des propriétés.
SQL MongoDB
base de données ou schéma base de données
table collection
enregistrement document
attribut (atomique) propriété
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)
1
•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
La notion de document est la base d’un système NoSQL. Toutefois, sachez que
MongoDB est plus que cela. Par exemple, MongoDB offre:
Schema-less
Mongodb est une base schema-less, une collection peut contenir des
documents de structures différentes et il n'est pas possible de définir la
structure a priori d'une collection.
La structure d'une collection n'est donc définie que par les documents qui
la composent, et elle peut évoluer dynamiquement au fur et à mesure des
insertions et suppressions.
Architecture
2
MongoDB fonctionne sous la forme d'un serveur auquel il est possible de
se connecter avec un client textuel (mongo shell).
MongoDb peut être distribuée sur plusieurs serveurs (partitionnement
horizontal ou sharding) et accédée à travers de multiples couches
applicatives (langages, API...)
Installation de MongoDB
MongoDB est disponible sur Windows, OSX et Linux :
https://docs.mongodb.com/manual/installation
MongoDB nécessite un répertoire pour stocker toutes les données. Par défaut, le chemin de ce
répertoire est \data\db. Créer ce répertoire. On obtient le répertoire c:\data\db.
Ou bien
logpath=C:\data\logs\mongo.log
dbpath=C:\data\db
Vous pouvez spécifier un autre chemin pour les fichiers de données mais en utilisant l'option
Exemple :
3
Pour se connecter à un serveur MongoDB :
présent sur la même machine : exécuter simplement mongo dans un terminal ;
distant sur le port standard de MongoDB : exécuter mongo --host nom-du-serveur.
mongod est le processus démon primaire pour le système MongoDB. Il traite les requêtes
sur les données, gère l'accès aux données, et effectue des opérations de traitement en
arrière-plan.
Lancez mongo via une invite de commandes en tapant la commande suivante : mongo
La connexion ne peut réussir que si le service MongoDB est lancé.
Par défaut, mongo recherche un serveur de base de données sur le port 27017 sur
l'interface locale. Pour se connecter à un serveur sur un port ou une interface différente,
utilisez les paramètres --port et --host.
Types de données
JSON-like documents
6 data types: null, boolean, numeric, string, array, object
4
Query Criteria
Exemples
5
Exemple
use db1
db.col1.insert( { "nom":"salima" } )
6
Exemple
db.Cinema.insert(
{
"nom":"Honkytonk Man",
"realisateur":{
"nom":"Eastwood",
"prenom":"Clint"
},
"annee":1982,
"acteurs":[
{
"nom":"Eastwood",
"prenom":"Kyle"
},
{
"nom":"Eastwood",
"prenom":"Clint"
}
]
}
)
Exemple
Restriction
db.Cinema.find({"nom":"Honkytonk Man"})
retourne les documents JSON tels qu'ils ont à la racine un attribut "nom" avec la valeur
"Honkytonk Man".
Restriction et projection
db.Cinema.find({"nom":"Honkytonk Man"}, {"nom":1, "realisateur":1,"_id":0} )
retourne les documents JSON tels qu'ils ont à la racine un attribut "nom" avec la valeur
7
"Honkytonk Man", et seul les attributs situés à la racine "nom" et "realisateur" sont
projetés.
Il est possible de générer des données de test en utilisant une boucle for. À partir du Shell mongo,
tapez la commande suivante :
Les données précédentes peuvent être générées en utilisant une fonction JavaScript :
la base de données ;
le nom de la collection (existante ou non) ;
le nombre de documents à créer.
//test.js
2 print("Hello world");
> load("test.js")
8
//query.js
conn = new Mongo();
db = conn.getDB("db1");
while ( recordset.hasNext() ) {
printjson( recordset.next() );
}
9
Il est possible de manipuler un objet «cursor» comme s'il était un
tableau :
var c = db.testData.find()
Pour de très grands volumes de données, mongo peut ainsi manquer de mémoire.
Dans notre cas : retrouvons les documents ayant 7 pour valeur de x, par
exemple. La requête est la suivante :
db.testData.find( { x : 7 } )
db.testData.findOne()
10
Limiter le nombre de documents du résultat d'une requête
Exemple :
db.testData.find().limit(3)
Insertion
# on pourra matcher depuis son sous document ainsi (notez bien les guillemets autour
de agenda.mardi) :
db.db1.find().sort({ addedOn: 1 })
db.db1.find().count()
11