Ce premier cours introduit les systèmes de stockages NoSQL. L'objectif est d'introduire les alternatives de stockages disponibles et de sensibiliser sur les spécificités de chacun des paradigmes de stockage.
Les BD orientées graphes sont aussi présentées dans la deuxième partie du cours avec une étude du système Neo4j.
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
1. HMIN313 : 1er Cours
Les bases de donn´ees NoSQL
BD orient´ees graphes
Hatim CHAHDI
UMR Espace-DEV
Universit´e de Montpellier
14 Septembre 2016
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 1 / 42
2. Objectifs du cours
Comprendre la probl´ematique de stockage de donn´ees
Prendre conscience des alternatives No-SQL existantes par rapport
aux syst`emes traditionnels
´Etude approfondie des bases de donn´ees orient´ees graphe
Pr´esentation de Neo4J comme exemple d’une BD orient´ee graphe
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 2 / 42
3. Base de donn´ees relationnelles ! Pourquoi pas ?
”I suppose it is tempting, if the only tool you have is a hammer, to treat
everything as if it were a nail.”
Abraham Maslow : The Psychology of Science 1966
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 3 / 42
4. Base de donn´ees relationnelles ! Pourquoi pas ?
”I suppose it is tempting, if the only tool you have is a hammer, to treat
everything as if it were a nail.”
Abraham Maslow : The Psychology of Science 1966
Pourquoi utiliser d’autres types de bases de donn´ees ?
Si le seul outil que j’ai en ma possession est un SGBD relationnel. Alors
tout m’apparaˆıtra comme une table
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 3 / 42
5. Motivations
Mission principale d’un SGBD
Un SGBD cherche `a fournir un syst`eme de stockage et un acc`es pratique,
fiable, efficace et sˆur `a des quantit´es importantes de donn´ees
persistantes.
´Evolution du Web :
Plusieurs sources de donn´ees disponibles
Acquisition facilit´ee des donn´ees : Navigation, pr´ef´erences des
utilisateurs...
...
Complexit´e des donn´ees : Gros volumes de donn´ees interconnect´ees
Des besoins de flexibilit´e avec des sch´emas qui ´evoluent, des priorit´es
sur l’acc`es, des donn´ees manquantes
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 4 / 42
6. Motivations
Les performances des SGBD restaient tr`es insatisfaisantes...
Scalabilit´e
Consistance des donn´ees
Complexit´e des sch´emas
. . .
Constat :
Les SGBD relationnels ne sont pas toujours la meilleure solution de gestion
et/ou traitement des donn´ees
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 5 / 42
7. Le monde No-SQL : Des alternatives !
Des besoins diff´erents. Des structures de
stockage diff´erentes
R´esultat
Apparition des Syst`emes dits No-SQL.
Les diff´erents types des SGBD No-SQL:
Cl´e/Valeur
Colonne
Document
Graphe
. . .
No-SQL = Not Only SQL
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 6 / 42
8. Base de donn´ees orient´ee Cl´e/Valeur
Principes: Repr´esentation des donn´ees sous forme de cl´e/valeur .
Les valeurs peuvent ˆetre de simple chaˆınes de caract`eres ou des objets
s´erialis´es complexes.
Utilisation: d´epˆot de donn´ees avec besoins de requˆetage simples
(pr´ef´erences d’utilisateur, donn´ees de panier, les logs . . . )
Figure : mod`ele cl´e/valeur
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 7 / 42
9. Base de donn´ees orient´ee Cl´e/Valeur
Principes: Repr´esentation des donn´ees sous forme de cl´e/valeur .
Les valeurs peuvent ˆetre de simple chaˆınes de caract`eres ou des objets
s´erialis´es complexes.
Utilisation: d´epˆot de donn´ees avec besoins de requˆetage simples
(pr´ef´erences d’utilisateur, donn´ees de panier, les logs . . . )
Figure : mod`ele cl´e/valeur
Exploitation bas´ee sur 4
op´erations (CRUD): Acc`es par
la cl´e
Create: Cr´eation d’un objet.
Read: Lecture d’un objet.
Update: Mise `a jour d’un
objet.
Delete: Suppression un objet.
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 7 / 42
10. Base de donn´ees orient´ee colonnes
Principes: Proche du relationnel. Mais le stockage des donn´es se fait
par colonne et non par ligne.
Ajout de colonnes facile et dynamique
Possibilit´e de compression des donn´ees
Utilisation: Optimisation de la recherche, traitement et analyse de
donn´ees structur´ees (BI) . . .
Figure : mod`ele colonne
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 8 / 42
11. Base de donn´ees orient´ee colonnes
Principes: Proche du relationnel. Mais le stockage des donn´es se fait
par colonne et non par ligne.
Ajout de colonnes facile et dynamique
Possibilit´e de compression des donn´ees
Utilisation: Optimisation de la recherche, traitement et analyse de
donn´ees structur´ees (BI) . . .
Figure : mod`ele colonne
Impl´ementation `a ´etudier dans
la suite de l’UE
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 8 / 42
12. Base de donn´ees orient´ee document
Principes: C’est une variante des SGBD cl´e/valeur, o`u la valeur est
un document de type XML ou JSON.
Les documents ont une structure arborescente, ils sont compos´es de
champs et des valeurs associ´ees
Ce type de SGBD permet d’effectuer des requˆetes sur le contenu des
documents.
Utilisation: Enregistrements d’´ev´enements, gestion de contenu . . .
Figure : mod`ele document
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 9 / 42
13. Base de donn´ees orient´ee document
Principes: C’est une variante des SGBD cl´e/valeur, o`u la valeur est
un document de type XML ou JSON.
Les documents ont une structure arborescente, ils sont compos´es de
champs et des valeurs associ´ees
Ce type de SGBD permet d’effectuer des requˆetes sur le contenu des
documents.
Utilisation: Enregistrements d’´ev´enements, gestion de contenu . . .
Figure : mod`ele document
Impl´ementations connues
CouchDB fondation apache
MangoDB
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 9 / 42
14. Base de donn´ees orient´ee graphe
Principes
Les donn´ees sont repr´esent´ees sous-forme de graphe : Des noeuds pour
les entit´es, des arcs pour les relations entre les entit´es
Ce type de SGBD est adapt´e `a la manipulation de donn´ees fortement
connect´ees
Utilisation: Syst`emes de recommandations, R´eseaux sociaux,
Syst`emes de transport . . .
Figure : mod`ele graphe
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 10 / 42
15. Base de donn´ees orient´ee graphe
Principes
Les donn´ees sont repr´esent´ees sous-forme de graphe : Des noeuds pour
les entit´es, des arcs pour les relations entre les entit´es
Ce type de SGBD est adapt´e `a la manipulation de donn´ees fortement
connect´ees
Utilisation: Syst`emes de recommandations, R´eseaux sociaux,
Syst`emes de transport . . .
Figure : mod`ele graphe
Impl´ementations connues
Neo4J
AllegroGraph
. . .
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 10 / 42
16. Passage oblig´e au NoSQL ?
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 11 / 42
17. R´ecapitulatif : Passage oblig´e au NoSQL ?
Alternatives adapt´ees `a des cas particuliers
´Evolution fr´equente des sch´emas
Flexibilit´e dans la gestion des donn´ees manquantes (ou non
conformes)
Flux important : Passage `a l’´echelle
. . .
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 12 / 42
18. Des syst`emes compl´ementaires
Utilisation conjointe pour une meilleure gestion des donn´ees
Figure : Persistance dite polyglotte
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 13 / 42
19. Des syst`emes compl´ementaires
Utilisation conjointe pour une meilleure gestion des donn´ees
Figure : Persistance dite polyglotte
One Size doesn’t fit all
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 13 / 42
20. Caract´eristiques des syst`emes NoSQL : CAP
Consistency, Availability, Partition tolerance
Consistency ou coh´erence des donn´ees : toute modification de
donn´ee est suivie d’effet pour tous les noeuds du syst`eme
Availability ou disponibilit´e des donn´ees : toute requˆete ´emise et
trait´ee par un noeud du syst`eme, re¸coit une r´eponse (mˆeme en
situation d’´echec `a produire une r´eponse)
Partition tolerance ou recouvrement des noeuds assurer une
continuit´e du fonctionnement en cas d’ajout/suppression de noeud
(ou partition) du syst`eme distribu´e
Constat de Brewer : aucun des syst`emes distribu´es n’est `a mˆeme de
satisfaire en mˆeme temps les principes C, A et P
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 14 / 42
21. Th´eor`eme CAP : un choix `a faire !
Un syst`eme distribu´e va satisfaire deux des trois points CAP
Consid´erations SGBDR / Syst`emes NoSQL
SGBDR : Coh´erence et haute disponibilit´e (pas ou peu de P : de
diff´erents noeuds syst`eme)
Syst`emes NoSQL : Choix du P (syst`eme naturellement distribu´e) et
s´election soit du C, soit du A
abandon du A ⇐ Accepte d’attendre que les donn´ees soient coh´erentes
abandon du C ⇐ Accepte de recevoir des donn´ees parfois incoh´erentes
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 15 / 42
22. Positionnement des syst`emes / CAP
Figure : Synth`ese CAP
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 16 / 42
23. Les Bases de Donn´ees orient´ees Graphes
Figure : Graphe du trafic a´erien mondial
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 17 / 42
24. Base de Donn´ees orient´ee Graphes
Histoire des graphes
Th´eorie des graphes
Les graphes en base de donn´ees
Neo4J: un SGBD orient´e graphe open source*
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 18 / 42
25. Des probl`emes remontant `a 840 . . .
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 19 / 42
26. Des probl`emes remontant `a 840 . . .
Le probl`eme du cavalier
Pos´e par le joueur et th´eoricien
d’´echecs al-Adli ar-Rumi :
Comment un cavalier peut-il
visiter toute les cases sans passer
deux fois par la mˆeme ?
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 19 / 42
27. Des probl`emes remontant `a 840 . . .
Le probl`eme du cavalier
Pos´e par le joueur et th´eoricien
d’´echecs al-Adli ar-Rumi :
Comment un cavalier peut-il
visiter toute les cases sans passer
deux fois par la mˆeme ?
Figure : La solution de Ar-Rumi
Une solution parmi les milliards de
solution possibles
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 19 / 42
28. Les sept ponts de K¨onigsberg
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 20 / 42
29. Les sept ponts de K¨onigsberg
Figure : Mod´elisation simple
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 20 / 42
30. Les sept ponts de K¨onigsberg
Figure : Mod´elisation simple
Solution d´emontr´ee par Euler
Pas de promenade possible
Naissance de la th´eorie des
graphes : 1736
Figure : Mod´elisation sous forme de
graphe
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 20 / 42
31. Des probl´ematiques plus r´ecentes...
Gestion de code
R´eseaux sociaux
Transport et logistique
Collaborations
Chimie et biologie
spatial
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 21 / 42
32. Des probl´ematiques plus r´ecentes...
Gestion de code
R´eseaux sociaux
Transport et logistique
Collaborations
Chimie et biologie
spatial
Pourquoi et quand utiliser les graphes ?
Mod´elisation efficace des donn´ees connect´ees
Donner de l’importance aux relations entre diff´erentes entit´es
. . .
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 21 / 42
33. Des probl´ematiques plus r´ecentes...
Gestion de code
R´eseaux sociaux
Transport et logistique
Collaborations
Chimie et biologie
spatial
Pourquoi et quand utiliser les graphes ?
Mod´elisation efficace des donn´ees connect´ees
Donner de l’importance aux relations entre diff´erentes entit´es
. . .
Quand les SGBD relationnels et les autres SGBD No-SQL n´egligent
les relations, toute la puissance des SGBD graphes est dans leur
prise en compte et repr´esentation explicite des relations
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 21 / 42
34. La th´eorie des graphes : Notions de base
D´efinitions
Un graphe permet de repr´esenter simplement la structure, les
connexions et les cheminements possibles d’un ensemble
complexe comprenant un grand nombre de situations, en
exprimant les relations, les d´ependances entre ses ´el´ements
G = ( V , E , L ) o`u L : E -> V x V
avec :
V: Ensemble des sommets.
E: Ensemble des arˆetes.
L: fonction associant `a chaque arˆete une paire de sommets.
Les diff´erents types de graphes: orient´e, non orient´e,
multigraphe, r´eflexif . . .
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 22 / 42
35. La th´eorie des graphes : Notions de base
Op´erations
Adjacent(G,x,y): Tester s’il existe une arˆete de x `a y.
Voisinage(G,x): Retourner, s’ils existent, les sommets li´es par
une arˆete avec le sommet x.
Ajout(G,x,y,l): Ajouter `a un graphe G une arˆete ,´etiquet´ee l,
entre les sommets x et y.
Atteindre(G,x,y): Tester s’il existe un chemin entre les
sommets x et y.
Chemin(G,x,y): Retourne le plus court chemin entre les
sommets x et y.
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 23 / 42
36. Les BD graphes
Mod`ele de representation des donn´ees s’appuyant sur les algorithmes
d´evelopp´es en th´eorie des graphes pour offrir des impl´ementations
simples et efficaces.
Mod´elisation, stockage et manipulation de donn´ees complexes
li´ees par des relations.
Le Graphe est l’entit´e qui va enregistrer les donn´ees dans des Noeuds
qui poss`edent des propri´et´es. Ces Noeuds peuvent ˆetre reli´es entre
eux avec des arcs (relations).
Figure : Graphe avec 3 noeuds et 2 relations
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 24 / 42
37. Les impl´ementations des graphes
Liste d’adjacence
Pour chaque noeud, on repr´esente la liste des voisins.
Efficace pour obtenir les voisins d’un noeud.
N’est pas optimale pour tester l’existence de chemin entre deux noeuds.
Liste d’incidence
Les arcs et les noeuds sont stock´es comme des objets dans la base.
chaque noeud enregistre les arcs incidents.
chaque arc enregistre les noeuds incidents.
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 25 / 42
38. Les impl´ementations des graphes
Matrice d’adjacence
repr´esentation du graphe en deux dimensions.
Les lignes repr´esentent les noeuds sources.
Les colonnes repr´esentent les noeuds de destination.
Les valeurs repr´esentent les arcs.
Matrice d’incidence
repr´esentation du graphe en deux dimensions.
Les lignes repr´esentent les noeuds.
Les colonnes repr´esentent les colonnes.
La valeur pr´ecise si le noeud est la source ou la destination des arcs.
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 26 / 42
39. Les SGBD orient´es graphe disponibles
Deux courants d’impl´ementations : Pour des besoins diff´erents
Stockage optimis´e : des SGBD offrant des performances accrues pour
le stockage de graphe.
Analyse optimis´ee : des SGBD performant pour l’analyse et le calcul
de graphes.
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 27 / 42
40. Neo4J
Qu’est ce que c’est Neo4J ?
Un SGBD orient´e graphe ´ecrit en Java.
Transactionnel : ACID (Atomicit´e, Consistance, Isolation, Durabilit´e).
Scalabilit´e : Jusqu’`a un degr´e
Disponible en version embarqu´ee et serveur.
Dispose d’une API REST.
Peut-il servir comme un endpoint SPARQL ?
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 28 / 42
41. Neo4J : Couches logiques
Figure : Couches logiques de Neo4J
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 29 / 42
42. Neo4J : Architecture
Figure : Architecture technique de Neo4J
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 30 / 42
43. Neo4J : deux modes :Embarqu´e et Serveur
Mode embarqu´e:
Ex´ecution de Neo4J dans le mˆeme processus de l’application.
Acc`es direct aux diff´erentes API du SGBD : Core API, traversal
framework et cypher le langage de requˆetage.
Contrˆole total sur le cycle des transactions.
Remarques:
Faire attention au GC de la JVM.
L’application doit g´erer les cycles de la base de donn´ees.
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 31 / 42
44. Neo4J : API Java avec deux modes : Embarqu´e et
Serveur
Mode serveur:
Au coeur de chaque serveur, une instance embarqu´ee de Neo4J.
Communication avec le SGBD au travers de l’API REST : envoi de
requˆetes format´ees en JSON avec le protocole HTTP.
B´enificie des avantages de l’architecture Client/Serveur.
Remarques:
Faire attention aux communications sur le r´eseau.
Chaque requˆete est execut´ee dans une transaction s´epar´ee.
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 32 / 42
45. Neo4J : Schema-less
Figure : Exemple (Documentation Neo4J)
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 33 / 42
46. Neo4J : Mod`ele de donn´ees
mod`ele : graphe marqu´e, orient´e , attribu´e et multi-valu´e
Figure : Un autre exemple (Documentation Neo4J)
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 34 / 42
47. Jeux de donn´ees plus larges : OpenStreetMap ou
MusicBrainz
Gestion pouvant aller jusqu’`a plusieurs milliards de nœuds
Figure : Un exemple plus complet : cartographie en Norv`ege avec OSM
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 35 / 42
48. Cypher : expressions pour poser des filtres sur le graphe
Figure : Exemple de requˆete (Documentation Neo4J)
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 36 / 42
49. Exemple Cypher
Clauses dans une grammaire d´eclarative `a rapprocher de SQL : START,
MATCH, WHERE, RETURN
Listing 1: Read-Only Query Structure (doc. Neo4J)
START me = node : people (name = ’ Pierre ’ )
MATCH me −[:FRIEND]−> f r i e n d
WHERE f r i e n d . age > 28
RETURN f r i e n d . name
ORDER BY f r i e n d . age ASC
SKIP 5 LIMIT 10
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 37 / 42
50. Autre exemple Cypher
Listing 2: Compter sur le type des relations
MATCH () −[ r ]−>()
RETURN TYPE( r ) AS r e l t y p e , count (∗) AS r e l c a r d i n a l i t
MATCH ( : Person ) −[: l i k e s ]−>( r : Restaurant )
WITH r , count (∗) as t r
WHERE t r > 2
RETURN r . name as RESTAURANT, t r as TOTAL
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 38 / 42
51. Une force : les appels r´ecursifs
Listing 3: parcourir le graphe
(A)−>()−>()−>()−>(B)
(A)−[∗]−>(B)
MATCH ( John {name : ’ John ’ }) −[: f r i e n d ]−> ()
−[: f r i e n d ]−> ( f o f )}
RETURN John , f o f
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 39 / 42
52. Retrouver le sch´ema
Listing 4: Infos sur le sch´ema
match n
r e t u r n d i s t i n c t l a b e l s (n )
match n−[ r ] −()
r e t u r n d i s t i n c t type ( r )
match n−[ r ] −()
r e t u r n d i s t i n c t l a b e l s (n ) , type ( r )
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 40 / 42
53. Exemple Cypher
Autres op´erations CRUD
Listing 5: Tout supprimer dans la base (doc. Neo4J)
MATCH ( n)
OPTIONAL MATCH (n)−[ r ] −()
DELETE n , r
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 41 / 42
54. Conclusion
Bienvenue dans le cot´e obscure de la force : NoSQL!
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 42 / 42
55. Conclusion
Bienvenue dans le cot´e obscure de la force : NoSQL!
Salle TD : 5.08
Hatim CHAHDI (Espace Dev - UM) Intro NoSQL, BD Graphes 14 Septembre 2016 42 / 42