Vous êtes sur la page 1sur 42

Base de Données NoSQL

Master BDA

Présenté par : Moustapha MBODJ


02 | 6
Let’s introduce 3

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

● Qu'est-ce qu'une base de données NoSQL ?


● Différences entre les bases de données relationnelles et les bases de données
NoSQL
● Les motivations et les avantages des bases de données NoSQL
● Les inconvénients potentiels des bases de données NoSQL
Notre programme

● Choisir une solution NoSQL adaptée aux besoins



● Faire passer à l'échelle des bases de données NoSQL

● Déployer, administrer et utiliser un cluster MongoDB

● Rechercher et visualiser des documents avec ElasticSearch et Kibana
1. Choisir une solution NoSQL adaptée aux besoins

1. Choisissez votre famille NoSQL


2. Maitrisez le théorème de CAP
3. Passez à l'échelle
4. Choisissez votre base de données NoSQL
Préambule

Depuis les 70’s

➢ 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

Langage SQL = relationnel mais présente un frein dans le cadre des 3V

Implique ⇒ Apparition du Not Only Sql pour contourner ce frein


NO SQL , KESAKO?

Changement de modèle de data = Distribution - Cohérence - Tolérance


NoSql Data Family

➢ Clé/Valeur
➢ Colonnes
➢ Documents
➢ Graphes.
1.1 Les clés-valeurs

Objectif de la famille clé-valeur :


Simplicité et Efficacité.
Un système clé-valeur qui agit comme 1 grande table de
hachage distribuée sur le réseau.

● La clé va identifier la donnée de manière unique puis permettre


de la gérer.

● La valeur contient n'importe quel type de données.


Seules opérations de type CRUD peuvent être utilisées :

Create (key,value)

Read (key)

Update (key,value)

Delete (key)
Exemple clés/Valeurs

Clés Amadou Fatima Alphonse Chérif

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

Traditionnellement, les données sont représentées en ligne, représentant


l'ensemble des attributs.
Le stockage orienté colonne change ce paradigme en se focalisant sur
chaque attribut et en les distribuant.
Il est alors possible de focaliser les requêtes sur une ou plusieurs
colonnes, sans avoir à traiter les informations inutiles (les autres
colonnes).
Stockage orienté colonne

ID TITRE ID LIEU ID SPÉC ID HOBBIES

Amadou Enseignant Amadou Uvs Dakar Amadou Nosql Amadou Football


Fatima Fatima Uvs Thiès Amadou Air Amadou Film
Alphonse Resp Form Alphonse Uvs St Louis Amadou BDD Fatima Football
Chérif Professeur Chérif Uvs Dakar Fatima Analytics Fatima Natation
Fatima SEA
Alphonse DevOps
Alphonse Machine Learning
Chérif Datavisualisation
Type application stockage colonnes

● Reporting à large échelle


● Comptage (vote en ligne, compteur…)
● Journalisation
● Recherche de produits dans une catégorie
Pour qui ?

➢ BigTable (Google)

➢ HBase (Apache, Hadoop)

➢ Spark SQL (Apache)

➢ Elasticsearch (elastic) -> moteur de recherche


Gestion de documents

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

● MongoDB (MongoDB) : ADP, Adobe, Bosch, Cisco, eBay, Electronic Arts,


Expedia, Foursquare

● CouchBase (Apache, Hadoop) : AOL, AT&T, Comcast, Disney, PayPal, Ryanair

● DynamoDB (Amazon) : BMW, Dropcam, Duolingo, Supercell, Zynga

● Cassandra (Facebook -> Apache) : NY Times, eBay, Sky, Pearson Education


Les Graphes en Nosql

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

● OrientDB (Apache) : Comcast, Warner Music Group, Cisco, Sky, United


Nations, VErisign

● FlockDB (Twitter) : Twitter


2. Théorème de CAP
Propriétés BDD relationnelle
Atomicité : les transactions se font au complet ou pas du tout ; si une partie de la transaction échoue,
tout échoue.

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 ?

Dans toute base de données, vous ne pouvez respecter au


plus que 2 propriétés parmi la cohérence, la disponibilité et
la distribution.
2. Théorème de CAP
Panorama et Identification de sa solution NoSQL

Une mutlitude de données en base mais comment en tirer profit ?


Oubliez les SGBD traditionnels, ils peinent à passer à l'échelle ! Vous devez être
capable de choisir la bonne solution parmi les dizaines qui s'offrent à vous.

Focus sur deux solutions NoSQL bien connues : MongoDb et ElasticSearch.


Mise en place MONGODB

Lien de telechargement : https://www.mongodb.com/try?jmp=nav#community

Sous Debian/Ubuntu, utilisez la commande “sudo apt install mongodb”.

Le serveur sera alors installé dans le répertoire que je nommerai : $MONGO.

Sous Windows : C:\Program Files\MongoDB\Server\3.4\


Sous Linux : /opt/local/bin/
Sous Mac : /Applications
Création d’un répertoire pour les données. : C:\data\db (par
défaut)

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

Nous utiliserons Robot3T qui se trouve dans le lien ci-dessous


https://robomongo.org/download
Sous Windows, l’application est installée par défaut dans le répertoire C:\Program
Files\3T\Robo3T

Sous Mac, il suffit de placer Robo3T dans le répertoire “Applications”

Sous Linux, le fichier d’installation doit être décompressé (tar xzvf


robo3t-1.1.1-linux-x86_64-c93c6b0.tar.gz). Puis, vous pouvez exécuter le binaire “bin/robo3t”
Si besoin

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

Tout est clé/valeur : “clé” : “valeur”

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"
}
})

Vous aimerez peut-être aussi