Académique Documents
Professionnel Documents
Culture Documents
Master BDA
ourselves !
Let’s introduce
● Votre prénom
● Votre animal totem
● Adjectif qui définit votre animal totem
● Vos attentes par rapport au cours
Qui suis je?
Intro
➢ Stockage
➢ Interrogation
➢ Cohérence
Dédié au relationnel
Préambule
Depuis début millénaire
➢ Afflux massif de
données
➢ Diversité de la
données
➢ Débit élevé
Préambule
➢ Clé/Valeur
➢ Colonnes
➢ Documents
➢ Graphes.
1.1 Les clés-valeurs
Create (key,value)
Read (key)
Update (key,value)
Delete (key)
Exemple clés/Valeurs
Valeurs Titre : Enseignant Lieu : UVS Thiès Titre : Resp Titre : Professeur
Lieu : Dakar Spécialité : Analytics, Formation Lieu : UVS Dakar
Spécialité : Nosql, Air, SEA Lieu : UVS St Louis Spécialité :
BDD Hobbies : Football, Spécialité : Datavisualisation
Hobbies : Football, Film Natation DevOps, Machine
Learning
1.2 Les lignes ⇒ les colonnes
➢ BigTable (Google)
Les bases orientées documents ressemblent sans doute le plus à ce que l'on peut faire
dans une base de données classique pour des requêtes complexes. Le but de ce
stockage est de manipuler des documents contenant des informations avec une
structure complexe (types, listes, imbrications). Il repose sur le principe du clé/valeur,
mais avec une extension sur les champs qui composent ce document.
Clés Amadou Fatima Alphonse Chérif
{ { { {
"_id":"Amadou", "_id":"Fatima", "_id":"Alphonse", "_id":"Chérif",
"titre":"Enseigant", "lieu":{ "titre":"Resp Form", "titre":"Professeur",
"lieu":{ "nom":"Uvs Thiès", "lieu":{ "lieu":{
"nom":"Uvs Dakar", "adresse":"Fahu1", "nom":"Uvs St Louis", "nom":"Uvs Dakar",
"adresse":"Mermoz", "ville":"Thiès" "adresse":"Sor", "adresse":"Point E",
Documents "ville":"Dakar" }, "ville":"St Louis" "ville":"Dakar"
}, "spec":["Analytics"," }, },
"spec":["Nosql","Air"], SEA"], "spec":["DevOps","Machine "spec":["Datavisualisation"]
"hobbies":["Football", "Film"] "hobbies":["Football", Learning"] }
} "Natation"] }
}
L'avantage de cette solution est d'avoir une approche structurée de chaque valeur, formant ainsi un document.
De fait, ces solutions proposent des langages d'interrogation riches permettant de faire des manipulations
complexes sur chaque attribut du document (et sous-documents) comme dans une base de données
traditionnelles, tout en passant à l'échelle dans un contexte distribué.
Solutions existants pour gestion documents
Dans la base orientée graphe, les données stockées sont : les nœuds, les liens
et des propriétés sur ces nœuds et ces liens. Les requêtes que l'on peut
exprimer sont basées sur la gestion de chemins, de propagations, d'agrégations,
voire de recommandations.
Schéma Graphes
Quelles BDD pour la gestion des gros graphes?
● Neo4j : eBay, Cisco, UBS, HP, TomTom, The National Geographic Society
Cohérence : la transaction transformera la base de données en un autre état valide, c'est-à-dire qu’une
opération, telle que l'écriture de données, n'entraînera pas la fin de la base de données dans un état
non autorisé (par paramètres de base de données).
Isolation : si une série de transactions se produit simultanément, l'état final de la base de données doit
être le même que celui qui serait obtenu si les transactions se produisaient une à la fois en série.
Durabilité : les transactions terminées ne sont jamais vénérées, même en cas de sinistre.
Que dit le théorème de CAP ?
Sous Windows, il faut ouvrir l’explorateur de fichiers, aller à la racine “C:\”, puis créer le répertoire
“data”. Ensuite, aller dans ce répertoire et créer le répertoire “db”.
Sous Linux ou Mac, il faut créer le répertoire data à la racine avec “sudo mkdir /data”. Vous donnez
les droits (ex. utilisateur ‘toto’) : “sudo chown toto /data”. Et enfin, créer le répertoire db : “mkdir
/data/db”.
Sous Mac, décompressez l’archive et déplacez le répertoire dans vos applications “/Applications”
Il est possible de créer un autre répertoire dédié “$REP” pour les données de MongoDB. Dans ce
cas, le lancement du serveur (slide d’après ) devra utiliser le paramètre --dbpath $REP.
Lancement du serveur, avec l’exécutable mongod
(disponible sur $MONGO/bin)
ATTENTION ! ! !
Ne pas fermer la fenêtre sous peine d’éteindre la base de données.
Le serveur attend une connexion sur le port 27017.
Log de connexion du serveur mongod
Interface utilisateur MongoDB
Il peut être demandé la plateforme “Qt” avec le plugin “xcb”. Dans ce cas,
suivez la procédure indiqué via ce lien:
https://stackoverflow.com/questions/45671105/robo3t-crashing-in-ubuntu-16
-04-and-above-version-this-application-failed-to-st
Création d’une collection MongoDB
Création d’ une base de données ‘ma_bd’ (bouton droit sur la connexion “Create
database”), puis sur les collections de cette base, créer une collection “test” (bouton
droit sur “Collections(0)”)
Modélisation documents JSON
Un document est encapsulé dans des accolades {...}, pouvant contenir des listes de
clés/valeurs
Une valeur peut être un type scalaire (entier, nombre, texte, booléen, null), des listes
de valeurs [...], ou des documents imbriqués
On peut donc insérer un document dans notre collection “test” (double click sur la
collection, champ de texte en noir pour exécuter une requête) :
Exemple
db.test.save (
{
"cours" : "NoSQL",
"chapitres" : ["familles", "CAP", "sharding", "choix"],
"auteur" : {
"nom" : "Ndiaye",
"prenom" : "Amadou"
}
})