Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
BigData & Bases NoSQLNicolas Travers
1
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Plan
I. Contextea. Les 3V et le Décisionnelb. Limites des SGBDRc. ACID vs BASE
II.NoSQLa.Distributionb.Les 4 famillesc. Théorème de CAPd.Map/Reduce
III.NoSQL vs JointuresIV.Modélisation avec JSon
2
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Contexte
• Croissance de la quantité des données exponentielle
3
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Contexte (2)
• La quantité de données digitales produites double tous les 2 ans. • En d'autres termes, on a produit autant de données digitales ces 2
dernières années que tout ce qui a été produit auparavant.
4
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Volume et Variété
5
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Décisionnel : ancienne méthode
6
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Décisionnel vs 3V• L’approche classique incompatible avec les 3V du BigData :
• Le Volume: les entrepôts sont conçus pour gérer des Go ou To de données alors que la croissance exponentielle des données nous conduit aux Po ou Eo
• Le type (Variety): le nombre de types, incluant les données textuelles semi ou non structurées, augmente
• La vitesse (Velocity): les données sont créées de plus en plus vite et nécessitent des traitements en temps-réel
7
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Compagnies Données traitées (2014)
Données stockées (2014)
Google 100 Po 15 000 Po
Ebay 100 Po 90 Po
Facebook 600 To 300 Po
Twitter 100 To 100 To
Baidu 10-100 Po 2 000 Po
NSA 29 Po 10 000 Po
Contexte (3) : encore des chiffres
8
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Contexte : et le business• On estime que le volume de données
professionnelles double tous les 1,2 ans
• Les ¾ des décideurs estiment que les Big Data vont affecter significativementleurs systèmes de stockage
• Le Big Data serait un marché à 50 milliards de $ en 2017
• En Europe, l'utilisation du Big Data pour améliorer l'efficacité des “traitements” permettrait d'économiser100 milliards de $ 9
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Contexte : Conséquences
• Les volumes à gérer sans précédents impliquent :• Données hétérogènes, complexes et souvent liées
• produites par des applications parfois différentes,• par des utilisateurs différents,• avec des liens explicites (par exemple citations, ancres url, etc) ou implicites (à extraire ou à
apprendre)
• Nombreux serveurs/clusters• un serveur unique ne peut stocker cette quantité d'information, garantir des temps d'accès
pour grand nombre d'utilisateur, faire des calculs rapides, etc
• Besoin de distribuer les calculs et les données• comme plusieurs serveurs/clusters, besoin d'algorithmes permettant le calcul et la distribution
des données à large échelle
10
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
DataCenters
• Data centers de quelques grands acteurs du Big Data• Google DataCenter : 70000 servers/data center et 16 data centers, ~1M de serveurs• Facebook : 5 data centers• Amazon : 7 data centers, 450 000 severs• Microsoft : ~1M serveurs
11
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Big Data : Exemples d’utilisation
• Décodage du génôme humain: le génôme d’une personne (env. 100Go) décodé en 30mns
• Prédiction des résultats des élections US en 2012 à partir de l’analyse de tweets
• Découverte d’un effet secondaire dû à la prise de deux médicaments par analyse des requêtes d’internautes (Yahoo)
• Étude des déplacements de population (migration, tourisme, circulation urbaine, etc)
12
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
NoSQL ne remplace pas les SGBDR
13
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
SGBDR vs Distribution
• Fonctionnalités▫ Jointures entre les tables▫ Langage d’interrogation riche▫ Contraintes d’intégrité solides
• Limites dans le contexte distribué :• Comment distribuer/partitionner les données▫ Liens entre entités -> Même serveur▫ Mais plus on a de liens, plus le placement des données est complexe
14
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
SGBDR vs Distribution
• Propriétés ACID pour les transactions• Atomicité : une transaction s’effectue
entièrement ou pas du tout• Cohérence : le contenu d’une base doit être
cohérent au début et à la fin d’une transaction• Isolation : les modifications d’une transaction
ne sont visibles/modifiables que quand celle-ci a validé
• Durabilité : une fois la transaction validée, l’étatde la base est permanent (non affecté par les pannes ou autre)
• Systèmes distribués : modèle BASE• Basically Available : garantie minimale pour
taux de disponibilité face grande quantité de requêtes
• Soft-state : l’état du système peut changer au cours du temps même sans nouveaux inputs (cela est du au modèle de consistance).
• Eventually consistent : tous les réplicas atteignent le même état, et le système devient à un moment consistant, si on stoppe les inputs
15
ACID vs BASE
0 141 2 3 4 5 6 7 8 9 10 11 12 13
ACID BASEAtomicityConsistencyIsolationDurability
Basically AvailableSoft-StateEventually Consistent
NoSQLSGBDR VS
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
NoSQL : une solution
• NoSQL : Not Only SQL• Nouvelle approche de stockage et de gestion de données• Permet le passage à l’échelle via un contexte hautement distribué• Gestion de données complexes et hétérogènes
� Pas de schéma pour les objets
• Ne remplace pas les SGBDR !!• Quantité de données énorme (PétaBytes)• Besoin de temps de réponse• Cohérence de données faible
16
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Les bases de données NoSQL
17
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
BD NoSQL : Caractéristiques
• Pas de relations• Pas de schéma physiques ou dynamiques• Notion de “collections”
• Données éventuellement complexes• Imbrication, tableaux
• Distribution de données (milliers de serveurs)• Parallélisation des traitements (Map/Reduce)
• Replication des données• Disponibilité vs Cohérence (pas de transactions)• Peu d’écritures, beaucoup de lectures
18
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Sharding : Passage à l’échelle
• Distribution des blocs de données sur un ensemble de serveurs• Partitionnement horizontal• Trois types de techniques :
1. Basée sur l’allocation de ressources : HDFS2. Basée sur une structure arborescente : Index non-dense3. Basée sur le hachage : Hachage Cohérent
19
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Sharding : HDFS
• HDFS1
• Système de fichier distribué• Dépend de la charge des serveurs• Distribution, tolérance aux pannes• Allocation dynamique et optimisée
20
Allocation de ressources
(1) Voir cours sur Hadoop Distributed File System http://chewbii.com/transparents-hdfs-hadoop/
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Sharding : HDFS
21
NameNode
DataNode
DataNode
DataNode
DataNode
DataNode
DataNode
DataNode
NameNode
DataNode
DataNodeRack Rack
DataNode
DataNode
DataNode
DataNode
DataNode
DataNodeRack
DataNode
NameNode
DataNode
DataNode
switch
switch
switch
Rack Rack
DataNode
DataNode
DataNode
DataNodeChunk 3
DataNode
DataNodeRack
DataNode
NameNode
Chunk 1
DataNodeChunk 4
DataNode
Chunk 2
Chunk 5
Chunk 6
switch
switch
switch
Rack Rack
DataNode
DataNode
DataNode
DataNodeChunk 3
DataNode
DataNodeRack
DataNode
NameNode
Chunk 1 Chunk 2
DataNodeChunk 4
Chunk 5DataNode
Chunk 2
Chunk 1 Chunk 3Chunk 4
Chunk 6Chunk 5
Chunk 6
switch
switch
switch
Rack Rack
DataNode
DataNode
DataNode
DataNodeChunk 3
DataNode
DataNodeRack
DataNode
NameNode
Chunk 1 Chunk 2
DataNode
Chunk 5
Chunk 4Chunk 1
Chunk 2
Chunk 3
Chunk 5DataNode
Chunk 2
Chunk 1 Chunk 3
Chunk 4
Chunk 4
Chunk 6Chunk 5
Chunk 6
Chunk 6
switch
switch
switch
Rack Rack
DataNode
DataNode
DataNode
DataNodeChunk 3
DataNode
DataNodeRack
DataNode
NameNode
Chunk 1
Secondary NameNode
Chunk 2
DataNode
Chunk 5
Chunk 4Chunk 1
Chunk 2
Chunk 3
Chunk 5DataNode
Chunk 2
Chunk 1 Chunk 3
Chunk 4
Chunk 4
Chunk 6Chunk 5
Chunk 6
Chunk 6
switch
switch
switch
Exemple
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Distribution de calcul Tolérance aux pannes
Sharding : HDFS
22
Solutions
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Sharding : Clustered index
• Index non-dense2 distribué • Données triées physiquement
• Découpées en blocs sur les nœuds (souvent 256Mo)• Distribution, tolérance�Requêtes par intervalles / regroupement⚠ Bien choisir la clé pour le tri
23
Technique arborescente
(2) Voir cours sur index dense vs non-dense http://chewbii.com/videos-optimisation-bases-de-donnees/ (Vidéo 4)
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Sharding : Clustered index
24
Exemple
Chunk-inf -> 10 000
Chunk10 001 -> 20 000
Chunk20 001 -> 30 000
Chunk30 001 -> 40 000
Chunk40 001 -> 50 000
Chunk50 001 -> 60 000
Chunk60 001 -> 70 000
Chunk70 001 -> 80 000
Chunk80 001 —> inf
Noeud
Chunk-inf -> 10 000
Chunk10 001 -> 20 000
Chunk20 001 -> 30 000
Chunk30 001 -> 40 000
Chunk40 001 -> 50 000
Chunk50 001 -> 60 000
Chunk60 001 -> 70 000
Chunk70 001 -> 80 000
Chunk80 001 —> inf
Noeud Noeud Noeud NoeudNoeud + réplicas
Chunk-inf -> 10 000
Chunk10 001 -> 20 000
Chunk20 001 -> 30 000
Chunk30 001 -> 40 000
Chunk40 001 -> 50 000
Chunk50 001 -> 60 000
Chunk60 001 -> 70 000
Chunk70 001 -> 80 000
Chunk80 001 —> inf
Noeud + réplicas Noeud + réplicas Noeud + réplicas Noeud + répl.Noeud + réplicas
Feuille-inf -> 30 000
Feuille60 001 -> +inf
Feuille30 001 -> 60 000
Chunk-inf -> 10 000
Chunk10 001 -> 20 000
Chunk20 001 -> 30 000
Chunk30 001 -> 40 000
Chunk40 001 -> 50 000
Chunk50 001 -> 60 000
Chunk60 001 -> 70 000
Chunk70 001 -> 80 000
Chunk80 001 —> inf
Noeud + réplicas Noeud + réplicas Noeud + réplicas Noeud + répl.Noeud + réplicas
Racine
Feuille-inf -> 30 000
Feuille60 001 -> +inf
Feuille30 001 -> 60 000
Chunk-inf -> 10 000
Chunk10 001 -> 20 000
Chunk20 001 -> 30 000
Chunk30 001 -> 40 000
Chunk40 001 -> 50 000
Chunk50 001 -> 60 000
Chunk60 001 -> 70 000
Chunk70 001 -> 80 000
Chunk80 001 —> inf
Noeud + réplicas Noeud + réplicas Noeud + réplicas Noeud + répl.Noeud + réplicas
RouteurRacine
Feuille-inf -> 30 000
Feuille60 001 -> +inf
Feuille30 001 -> 60 000
Chunk-inf -> 10 000
Chunk10 001 -> 20 000
Chunk20 001 -> 30 000
Chunk30 001 -> 40 000
Chunk40 001 -> 50 000
Chunk50 001 -> 60 000
Chunk60 001 -> 70 000
Chunk70 001 -> 80 000
Chunk80 001 —> inf
Noeud + réplicas Noeud + réplicas Noeud + réplicas Noeud + répl.Noeud + réplicas
Routeur x3Racine
Feuille-inf -> 30 000
Feuille60 001 -> +inf
Feuille30 001 -> 60 000
Chunk-inf -> 10 000
Chunk10 001 -> 20 000
Chunk20 001 -> 30 000
Chunk30 001 -> 40 000
Chunk40 001 -> 50 000
Chunk50 001 -> 60 000
Chunk60 001 -> 70 000
Chunk70 001 -> 80 000
Chunk80 001 —> inf
Noeud + réplicas Noeud + réplicas Noeud + réplicas Noeud + répl.
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Regroupement Dynamicité
Sharding : Clustered index
25
Solutions
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Sharding : Consistent Hashing
• Hachage cohérent (DHT3)• Technique de hachage unique et dynamique pour les données et les serveurs• Distribution en anneau (virtuel)• Pas de serveur centralisé (tout est client/serveur)• Autonomie de gestion
26
Une table de hachage distribuée
(3) Voir cours sur DHT http://chewbii.com/hachagedynamique/ (Vidéo 4 & 5)
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Sharding : Consistent Hashing
27
Exemple0 = 264 = 4 x 262
262
263 = 2 x 262
3 x 262
0 = 264 = 4 x 262
Portion du
serveur S1
Portion duserveur S2
Portion du serveur S3
Port
ion
duse
rveu
r S4
Portion du
serveur S5
S3
S4
S5
S1
S2
262
263 = 2 x 262
3 x 262
0 = 264 = 4 x 262
Portion du
serveur S1
Portion duserveur S2
Portion du serveur S3
Port
ion
duse
rveu
r S4
Portion du
serveur S5
S3
S4
S5
S1
S2
262
263 = 2 x 262
3 x 262
d1
d2
d3
d4
d5
d6
d7
0 = 264 = 4 x 262
Portion du
serveur S1
Portion duserveur S2
Portion du serveur S3
Port
ion
duse
rveu
r S4
Portion du
serveur S5
S3
S4
S5
S1
S2
262
263 = 2 x 262
3 x 262
d1
d2
d3
d4
d5
d6 Chunk S1d1
d5 d2 d4réplicas
resp
Chunk S2d5 d2
d4réplicas
resp
d3
Chunk S3d4
réplicas
resp
d3 d6
d7
d7
Chunk S4d3
réplicas
resp
d6 d1
Chunk S5d6
réplicas
resp
d1 d5 d2
d7
d7
0 = 264 = 4 x 262
Portion du
serveur S1
Portion duserveur S2
Portion du serveur S3
Port
ion
duse
rveu
r S4
Portion du
serveur S5
S3
S4
S5
S1
S2
262
263 = 2 x 262
3 x 262
d1
d2
d3
d4
d5
d6 Chunk S1d1
d5 d2 d4réplicas
resp
Chunk S2d5 d2
d4réplicas
resp
d3
Chunk S3d4
réplicas
resp
d3 d6
d7
d7
Chunk S4d3
réplicas
resp
d6 d1
Chunk S5d6
réplicas
resp
d1 d5 d2
d7
d7
0 = 264 = 4 x 262d3 ?
Portion du
serveur S1
Portion duserveur S2
Portion du serveur S3
Port
ion
duse
rveu
r S4
Portion du
serveur S5
S3
S4
S5
S1
S2
262
263 = 2 x 262
3 x 262
d1
d2
d3
d4
d5
d6 Chunk S1d1
d5 d2 d4réplicas
resp
Chunk S2d5 d2
d4réplicas
resp
d3
Chunk S3d4
réplicas
resp
d3 d6
d7
d7
Chunk S4d3
réplicas
resp
d6 d1
Chunk S5d6
réplicas
resp
d1 d5 d2
d7
d7
0 = 264 = 4 x 262d3 ?
Portion du
serveur S1
Portion duserveur S2
Portion du serveur S3
Port
ion
duse
rveu
r S4
Portion du
serveur S5
S3
S4
S5
S1
S2
262
263 = 2 x 262
3 x 262
d1
d2
d3
d4
d5
d6 Chunk S1d1
d5 d2 d4réplicas
resp
Chunk S2d5 d2
d4réplicas
resp
d3
Chunk S3d4
réplicas
resp
d3 d6
d7
d7
Chunk S4d3
réplicas
resp
d6 d1
Chunk S5d6
réplicas
resp
d1 d5 d2
d7
d7
0 = 264 = 4 x 262d3 ?
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Elasticité Auto-gestion
Sharding : Consistent Hashing
28
solutions
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
NoSQL : une grande famille
29
4 famillestype lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
employeur
employeur
employeur
vacation
Paris Gif-sur-Yvette
siège social siège social siège social
vacation employeur
vacation
vacation
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Clés-Valeurs
Orienté colonnes
Orienté documents Orienté graphes
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
I - NoSQL & Clé-Valeurs
•“HashMap” distribué•Couple Clé+Valeur▫ Pas de schéma pour la valeur (chaine, objet, entier, binaires…) qui peut donc
être différente pour chaque•Conséquences▫ Pas de structure ni de types▫ Pas d’expressivité d’interrogation (pré/post traitement pour manipuler
concrètement les données)
30
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
I - NoSQL & Clé-Valeurs
31
Exempletype lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Relationnel
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
I - NoSQL & Clé-Valeurs
• CRUD▫ CREATE ( clé, valeur )
� CREATE ("Nicolas", "type:'prof',lieu:'CNAM',spec:'BDD,NoSQL',interets:'BZH,Star Wars' ") à OK▫ READ( clé )
� READ("Nicolas") à "type:'prof',lieu:'CNAM',spec:'BDD,NoSQL',interets:'BZH,Star Wars' "▫ UPDATE( clé, valeur )
� UPDATE("Nicolas", "type:'prof',lieu:'CNAM,CS',spec:'BDD,NoSQL' ") à OK▫ DELETE( clé )
� DELETE("Nicolas") à OK
32
interrogation
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Efficacité Facilité de mise en œuvre
I - NoSQL & Clé-Valeurs
33
solutions
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
I - NoSQL & Clé-Valeurs
• Exemples d’utilisation:
• Logs de sites Web ou d’application
• Profils utilisateurs de site Web/réseaux sociaux
• Données de capteurs
• Cache Web ou BD
• Paniers sur sites de e-commerce
• …
34
applications
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
II - NoSQL & Colonnes
•Stockage des données par colonnes▫ SGBD : tuples (lignes)
•Facile d’ajouter une colonne (pas une ligne!)▫ Schéma peut être dynamique (d’un tuple à l’autre)
35
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
II - NoSQL & Colonnes
36
exemple
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
II - NoSQL & Colonnes
• Requêtes sur les colonnes▫ Combien de professeurs (type) à
CentraleSupelec (lieu)
37
interrogation
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Agrégations Corrélations
II - NoSQL & Colonnes
38
solutions
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
II - NoSQL & Colonnes
• Exemples d’utilisation:
• Comptage (vote en ligne, compteur, etc)
• Journalisation
• Recherche de produits dans une catégorie (Ebay)
• Reporting large échelle (agrégats calculés sur une colonne)
39
applications
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
III - NoSQL & Documents
• Basé sur le modèle clé-valeur▫ Ajout de données semi-structurées (JSon ou XML)▫ Idem que “clé-valeur” mais “valeur = document”▫ Document composé de clés/valeurs▫ Types simples (Int, String, Date)▫ Schéma non nécessaire (peut varier d’un document à l’autre)▫ Imbrication de données (schéma arborescent)▫ Listes de valeurs
• Requêtes : Interface HTTP▫ Plus complexe que CRUD▫ Chaque clé du document peut être interrogée
40
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
III - NoSQL & Documents
41
exemple type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
III - NoSQL & Documents
• Requêtes sur le contenu des documents▫ Etablissement (lieu.nom) des professeurs (type) spécialisé en BDD (in spec)
42
interrogation
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Requêtes riches Gestion d'objets
III - NoSQL & Documents
43
solutions
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
III - NoSQL & Documents
• Exemples d’utilisation:
• Gestion de contenu: bibliothèques numériques, collections de produits, dépôts de logiciels « xxxStores », collections multimédia, etc
• Collection d’événements complexes
• Gestion de boîtes email
• Gestion des historiques d’utilisateurs sur réseaux sociaux
44
applications
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
IV - NoSQL & Graph
•Stockage des noeuds, relations et propriétés▫ Théorie des graphes▫ Interrogation par traversées de graphe▫ Appel des données sur demande (parcours performants)▫ Modélisation non triviale
45
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
Nicolas RégisLuc CélineNicolas
type:profRégis
Luctype:resp formation
Célinetype:prof
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
employeur
employeur
employeur employeur
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
employeur
employeur
employeur
vacation
vacation employeur
vacation
vacation
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
employeur
employeur
employeur
vacation
Paris Gif-sur-Yvette
vacation employeur
vacation
vacation
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
employeur
employeur
employeur
vacation
Paris Gif-sur-Yvette
siège social siège social siège social
vacation employeur
vacation
vacation
IV - NoSQL & Graph
46
exemple
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
employeur
employeur
employeur
vacation
Paris Gif-sur-Yvette
siège social siège social siège social
vacation employeur
vacation
vacation
IV - NoSQL & Graph
• Requêtes sur les graphes▫ Personnes faisant des vacations à Paris et à Gif-sur-Yvette
47
interrogation
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
FlockDB
Réseaux Recommandation
IV - NoSQL & Graph
48
solutions
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
IV - NoSQL & Graph
• Exemples d’applications:
• Calcul sur les graphes sociaux (recommandations, plus courts chemins, atteignabilité,…)
• Calculs sur les réseaux des SIG: réseaux routiers, canalisations, électricité, …
• Web social (linked data)
49
applications
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
DB-Engines
50
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
“Théorème de CAP”•Théorème de Brewer (2000) •3 propriétés fondamentales pour les systèmesdistribués
1.Consistency: Tous les serveurs voient la mêmedonnée (valeur) en même temps (ou Cohérence)2.Availability: Si un serveur tombe en panne, les données restent disponibles3.Partition Tolerance: Le système même partitionnédoit répondre correctement à toute requête (sauf en casde panne réseau)
Théorème : “Dans un système distribué, il estimpossible que ces 3 propriétés co-existent, vous devez choisir 2 d’entre elles”.
51
ConsistencyCohérence
AvailabilityDisponibilité
Partition ToleranceDistribution
CA AP
CP
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v1 v1 v1 v1v1
écriture
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v2v1 v1 v1 v1v1
L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v2v1 v1 v1 v1v1
v2 v2L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v2v1 v1 v1 v1v1
L1écriture L2 écriture
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v2v1 v2v1 v1 v1v1
L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v2v1 v2v1 v1 v1v1
L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v2v1 v2v1 v1 v1v1
attenteL1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
v2v1 v2v1 v2v1 v1v1
attente
ack
L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
v2v1 v2v1 v2v1 v1v1
v2 v2L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
v2v1 v2v1 v2v1 v1v1
L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
écriture
v2v1 v2v1 v2v1 v2v1 v1
L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
L1écriture L2
v2v1 v2v1 v2v1 v2v1 v1
v2 v1L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
L1écriture L2
asynchrone
v2v1 v2v1 v2v1 v2v1 v1
v2 v1L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
L1écriture L2
asynchrone
v2v1 v2v1 v2v1 v2v1 v2v1
v2 v1
“Théorème de CAP”
52
illustration
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
Modèle
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
OracleMySQL
SQLServer
DB2PostgreSQL
Modèle
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
RedisMemcached
CosmosDB
SimpleDB OracleMySQL
SQLServer
DB2PostgreSQL
Modèle
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
RedisMemcached
CosmosDB
SimpleDB
BigTableHBase
ElasticsearchSpark
OracleMySQL
SQLServer
DB2PostgreSQL
Modèle
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
MongoDB
RedisMemcached
CosmosDB
SimpleDB
BigTableHBase
ElasticsearchSpark
OracleMySQL
SQLServer
DB2PostgreSQL
CouchBase DynamoDB
Cassandra
Modèle
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
MongoDB
RedisMemcached
CosmosDB
SimpleDB
BigTableHBase
ElasticsearchSpark
OracleMySQL
SQLServer
DB2PostgreSQL
CouchBase DynamoDB
Cassandra
Neo4jOrientDBFlockDB
Modèle
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
MongoDB*
RedisMemcached*
CosmosDB*
SimpleDB*
BigTableHBase
ElasticsearchSpark
OracleMySQL
SQLServer
DB2PostgreSQL
CouchBase*DynamoDB*
Cassandra*
Neo4jOrientDBFlockDB
* Possibilité de changer le mode de cohérence
Cohérence <-> Disponibilité
Modèle
“Théorème de CAP”
53
Triangle de CAP
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Map/Reduce (résumé)
• Framework de calcul distribué• Programme décomposé en 2 fonctions
• Map : transformation de données• Entrée : une donnée• Sortie : un ensemble de pairs - clé + valeur
• Reduce : agrège par clé un ensemble de valeurs• Entrée : liste de valeurs d’une clé - clé + liste(valeurs)• Sortie : une valeur - clé + valeur
• Passage à l’échelle et Tolérance aux pannes• Envoyé à tous les serveurs, appliquée à chaque donnée• Reprise de traitements en cas de panne
54
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Map/Reduce : Principe
55
Introduction aux NoSQL
Nicolas - TraversDépartement Informatique [email protected]
Conclusion
•NoSQL▫ Dédié à un contexte extrêmement distribué▫ Calcul fortement distribué▫ 4 types de calculs complexes(clé-valeur, document, colonnes, graphes)▫ Théorème de CAP
•Ne doit pas remplacer automatiquement un SGBD▫ Propriétés ACID▫ Requêtes complexes▫ Performance de jointure
56