SlideShare une entreprise Scribd logo
Présentation Neo4j
BORIS GUARISMA
CONSULTANT DATA SCIENCE ET BIG DATA
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 1
Présentation
•CNAM 2013-2014:
• NFE204: Bases de données avancées (1)
• NFE211 / 212: Ingénierie des systèmes décisionnels (1 et 2)
• EAR206: Analyse données et décisions dans l’entreprise
•LinkedIn:
• fr.linkedin.com/in/borisguarisma
• SlideShare:
• fr.slideshare.net/BorisGuarisma
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 2
Présentation
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 3
Présentation
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 4
Sommaire
• L’entreprise connectée
• Pour quoi une base de données graphe ?
• Stockage et traitement graphe
• Labeled Property Graph
• Base de données graphe: cas d’usage … vers une vraie adoption
•Neo4j: autres informations « produit »
• Import des données
• Architecture
• Réplication: cohérence, Causal Clustering/Consistency
• Sharding
• Autres features
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 5
L’entreprise connectée
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 6
Source YouTube :
Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
L’entreprise connectée
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 7
Source YouTube :
Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
need a real-time view of
every single store,
related to user’s
geography and position
need entire purchase
story
L’entreprise connectée
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 8
Source YouTube :
Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
not good at managing relationships
within dataset
between datasets
L’entreprise connectée
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 9
Source YouTube :
Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
L’entreprise connectée
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 10
Source YouTube :
Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
Pour quoi une base de données graphe?
FAITS
• Les systèmes de gestion de base de données relationnelles (SGBDR) ne sont plus adaptés au Big
Data
• Les données sont fortement connectées (notion de « relation »)
• La redéfinition du schéma (ajouter de nouveaux types de données ou une nouvelle relation), …
cela prend beaucoup de temps pour les SGBDR …
• SGBDR : les requêtes SQL avec des multiples jointures de plus en plus complexes avec des
latences en lecture de plus en plus importante
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 11
Pour quoi une base de données graphe?
DES SOLUTIONS
• Les bases de données NoSQL (Not Only SQL):
• clé – valeur
• orientées colonne
• orientées documents
• graphe
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 12
Pour quoi une base de données graphe?
RELATIONNEL
• Qui sont les amis d’Alice ? la recherche via
l’index global possède généralement une
complexité en temps de O(log n).
• Qui est ami avec Alice ? lorsque l’on effectue
une recherche dans le sens opposé de celui à
partir duquel l’index à été construit, on doit
effectuer plusieurs recherches via l’index pour
chaque personne (ami potentiel d’Alice), pour
un coût total de O(m log n).
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 13
Pour quoi une base de données graphe?
GRAPHE
• Illustration de l'adjacence entre éléments sans index (index-free adjacency).
• Pour trouver les amis de Alice, nous suivons tout simplement ses relations FRIEND sortants,
chacune avec un coût O(1).
• Pour trouver qui est ami avec Alice, nous suivons tout simplement toutes les relations FRIEND
entrants d'Alice, chacune avec un coût de O(1), pour un coût total de O(m).
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 14
Pour quoi une base de données graphe?
EFFET « WHITEBOARD »
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 15
le dessin sur le tableau est le
modèle physique, c’est la façon
comment les données sont
stockées sur disque
Pour quoi une base de données graphe?
CEPENDANT LES SGBDR ONT QUELQUE CHOSE DE BIEN !
Elles sont ACID … et Neo4j aussi
• Atomicité : Tout ou rien. Soit l’opération se fait en entier, soit elle ne se fait pas du tout. La
notion d’atomicité sous-entend la possibilité de défaire un opération avortée.
• Cohérence : L’opération doit assurer que la base de données sera dans un état valide après
l’opération.
• Liée à la configuration en cluster des nœuds (maître-esclaves, core-replicas, etc.) de la base de données
NoSQL (voir slides « Casual Clustering » à la fin de la présentation)
• Isolation : L’opération doit se faire en toute autonomie sans dépendance à une autre opération.
• Durabilité : En cas de problème important (coupure d’électricité), les modifications apportées
sont bien enregistrées
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 16
Stockage et traitement graphe
LES SYSTEMES NoSQL
• En général, il n'y a pas de structure de données pour
modéliser et stocker les relations.
• La plupart des bases NoSQL n’ont pas un
« bon concept » de requête pour les relations
• modélise et stocke les relations
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 17
Stockage et traitement graphe
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 18
bases de données graphe qui
sérialisent le graphe (sous forme de
table) pour un SGBDR, pour une base
de donnés orientée objet ou pour un
autre type de stockage.
Stockage et traitement graphe
• Stockage Graphe
• Objectif: performance et scalabilité.
• Stockage des données représentées sous forme d'un graphe, avec des nœuds et des relations.
• Utilisant des structures de stockage dédiées aux nœuds et relations.
• Traitement Graphe
• Objectif: performance des traversals.
• Parcours des relations grâce à des pointeurs physiques.
• Système de stockage capable de fournir une adjacence entre éléments voisins : chaque voisin d'une
entité est accessible grâce à un pointeur physique.
• Lecture et parcours des données sans recours à un index, en utilisant les arcs pour passer d'un
nœud à l'autre.
• Les bases de données graphe profitent de l’avantage donné par l'adjacence entre éléments sans
index (index-free adjacency).
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 19
Traitement graphe: CYPHER
LATENCE DES REPONSES DES REQUETES
• Avec une base de données graphe, la plupart des requêtes suivent un schéma dans lequel un
index est utilisé simplement pour trouver le(s) nœud(s) de départ.
• Le reste du parcours utilise ensuite une combinaison de chasse au pointeur + pattern
matching pour rechercher les données. Requête CYPHER:
MATCH (:BAILLEUR)-[r1:EST_BAILLEUR_DE]->(b)-[r2:A_CONJOINT]->(:CONJOINT)
• La performance ne dépend pas de la taille totale de l'ensemble de données, mais uniquement
sur les données interrogées (sous-graphes).
• Cela conduit à des temps de performance qui sont à peu près constant (liés à la taille de
l'ensemble de résultat), même si la taille de l'ensemble de données augmente.
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 20
“openCypher project aims to bring graph querying to the masses, with support from Oracle,
Databricks, Tableau and other leading companies”
Traitement graphe: Transversal
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 21
CORE API: JAVA
Labeled Property Graph
• Libellés – types de nœuds
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 22
:PERSONNE :PERSONNE
Labeled Property Graph
• Libellés – types de nœuds
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 23
:PERSONNE:BENEFICIAIRE :PERSONNE:CONJOINT
Labeled Property Graph
• Libellés – types de relations
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 24
:PERSONNE:BENEFICIAIRE :PERSONNE:CONJOINT
A_CONJOINT
Labeled Property Graph
• Propriétés – nœuds et relations
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 25
:PERSONNE:BENEFICIAIRE :PERSONNE:CONJOINT
A_CONJOINT
nuinp:
matricule:
nom :
prenom:
nir:
dtnaires:
numteldo:
nutel2do:
email:
adresse:
iban:
mtloy:
mttotdro:
toprsa:
nuinp:
nom:
nir:
sitfam: ‘MAR’
Labeled Property Graph
• Propriétés – nœuds et relations
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 26
:PERSONNE:BENEFICIAIRE :PERSONNE:CONJOINT
CVA_CONJOINT
nuinp:
matricule:
nom :
prenom:
nir:
dtnaires:
numteldo:
nutel2do:
email:
adresse:
iban:
mtloy:
mttotdro:
toprsa:
nuinp:
nom :
nir:
matricule:sitfam: ‘MAR’
matricule:
respdos: ‘MME’
sitdos: ‘A’
numteldo:
nutel2do:
emaildos:
toprsa:
:DOSSIER
Labeled Property Graph
• En conclusion
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 27
:SUJET :SUJET
CVVERBE
adjectif:
adjectif:
adjectif:
adjectif:
adverbe:
adjectif:
adjectif:
Base de données graphe: cas d’usage
• Réseaux sociaux
• Détection de fraude (PANAMA PAPERS !)
• Analyse des réseaux IT
• Systèmes de recommandations
• …
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 28
Pas que des cas d’usage
• Vers une adoption généralisée des bases de données graphe
• La valeur (avantage compétitif) est dans la relation entre les données, e.g. Google (search)
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 29
Neo4j: autres informations produit
• Comparaison versions « Enterprise » et « Community (gratuit) »
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 30
Neo4j: autres informations produit
• Comparaison versions « Enterprise » et « Community (gratuit) »
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 31
Neo4j: Import des données
• Comparaison versions « Enterprise » et « Community (gratuit) »
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 32
Neo4j: Architecture
• Architecture
• Le Core API est une API Java qui expose les
primitives de graphe des nœuds, des relations,
des propriétés et des libellés à l'utilisateur.
• Neo4j possède un langage de requête
puissant, Cypher, qui permet d’interroger le
graphe pour obtenir toutes sortes
d’informations sur les nœuds, leurs liens et le
contenu de ces derniers.
• Le Traversal ou parcours de graphe est un
processus qui visite les nœuds dans le graphe
en suivant les relations entre les nœuds d'une
manière particulière.
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 33
in-memory
La cohérence
• Capacité d’un système à refléter fidèlement les actions d’un utilisateur.
• Cohérence forte – nécessite une réplication synchrone, et potentiellement des verrouillages complexes
(two phases commit)
• Cohérence faible – on accepte le risque de lectures ne reflétant pas les mises à jour
• Cohérence à terme (Eventual consistency) – le système garantit que les incohérences ne sont que
transitoires.
• En général, les systèmes NoSQL abandonnent la cohérence forte pour favoriser la réplication
asynchrone, et donc le débit en écriture/lecture.
• La notion de cohérence est liée à la configuration en cluster des nœuds (maître-esclaves, core-
replicas, etc.) de la base de données NoSQL
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 34
Transactions et logs
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 35
Neo4j: Causal Clustering
1. Core servers: mis à jour du graphe, opérations en continue
2. Read replicas (scalabilité): requêtes, analyses, reporting
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 36
RAFT
BOLT
source YouTube :Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
avant
maintenant
Neo4j: Causal Consistency
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 37
source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
Neo4j: Causal Consistency
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 38
source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
Consensus log: stores both
committed and
uncommitted transactions
Neo4j: Causal Consistency - bookmarks
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 39
source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
The client can ask for a bookmark which it then presents as a parameter to the next transaction. Using
that bookmark the cluster can ensure that only servers which have processed the client’s bookmarked
transaction will be able to run its next transaction. This provides a causal chain which ensures correct
behaviour from the client’s point of view
Neo4j: Causal Consistency - bookmarks
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 40
source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
Neo4j: Causal Consistency - bookmarks
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 41
source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
Neo4j: Sharding
• Scalabilité: sharding
• S'il faut dépasser la capacité d'un cluster, nous pouvons partitionner le graphe sur plusieurs
instances de la base via la construction d'une logique de sharding dans l'application.
• Le sharding implique l'utilisation d'un identifiant synthétique pour la jointure des données sur
plusieurs instances de la base au niveau applicatif.
• Comment cela s'effectuera dépend beaucoup de la forme du graphe. Certains graphes se prêtent
très bien à ce cas avec des « frontières pratiques ». Bien sûr, pas tous les graphes ont des
« frontières » si évidentes.
• L'objectif futur de la plupart des bases de données graphe est d'être capable de partitionner un
graphe sur plusieurs machines sans intervention au niveau de l'application, de sorte que l'accès en
lecture et en écriture sur le graphe puisse être scalable horizontalement.
• Dans le cas général, cela est connu pour être un problème NP-dur, et donc impossible à résoudre.
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 42
“On Sharding
Graph Databases”
(Feb 2011)
Part of the reason Neo4j does not shard the graph is that since a graph is a highly connected data structure, traversing through a
distributed/sharded graph would involve lots of network latency as the traversal "hops" from machine to machine.
http://stackoverflow.com/questions/35982619/neo4j-difference-between-high-availability-and-distributed-mechanism
Neo4j: Performance & Scale
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 43
Neo4j: Performance & Scale
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 44
Neo4j: Performance & Scale
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 45
Neo4j: Productivity & Convenience
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 46
Neo4j: Ops & Security
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 47
Neo4j: + Apache Spark
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 48
Références
• [1] Robinson I., Webber J, Eifrem E., “Graph Databases”, O’Reilly, 2nd edition, ISBN
9781491930892
• [2] Vukotic A., Watt N., “Neo4j in Action”, Manning Publications, ISBN 9781617290763
• [3] Wikipedia, “Base de données orientée graphe”,
https://fr.wikipedia.org/wiki/Base_de_donn%C3%A9es_orient%C3%A9e_graphe
• [4] Willemsen C., “Découverte de Neo4j, la base de données graphe”,
http://neoxygen.io/articles/decouverte-de-neo4j.html , version 1.1, 14-01-2015
• [5] Maury F., “Pourquoi s’intéresser aux graph-databases ?”,
http://www.arolla.fr/blog/2013/10/pourquoi-sinteresser-aux-graph-databases/
• [6] Fauvet C., “Nouvelles opportunités pour les données fortement connectées: La base de
graphe Neo4j”, 10 décembre 2013
• [7] Robert M., Dutheil L., Domenjoud M., « Introduction aux graphes avec Neo4j et Gephi »
http://blog.octo.com/introduction-aux-graphes-avec-neo4j-et-gephi/
• [8] Lyon William, Introduction to Graph Databases and Neo4j - January 14, 2016,
https://www.youtube.com/watch?v=83P81ebgCxA
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 49
Backup
• la réplication
• la réplication n'est pas une distribution !!
• c'est une copie des données qui sert avant tout à assurer la redondance, donc la protection contre
la perte de données
• tolérance aux pannes, distribution des lectures, des écritures
• théorème CAP: compromis entre cohérence, disponibilité, tolérance au partitionnement
• cohérence synchrone, un maître (SGBDR)
• cohérence asynchrone, un maître
• cohérence faible
• cohérence à terme (EM: eventual consistency) e.g. MongoDB
• cohérence asynchrone, plusieurs maîtres
• cohérence faible e.g. CouchDB
• cohérence à terme (EM: eventual consistency) e.g. Cassandra
• disponibilité: élection d’un maître si ce dernier tombe en panne
• tolérance au partitionnement: élection d’un maître si cluster est coupé en deux parties
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 50
Backup
• le sharding ou partionnement
• découper une (grande) collection en fragments en fonction d’une clé
• placer chaque fragment sur un serveur
• maintenir un répertoire indiquent que telle clé se trouve dans tel fragment sur tel serveur
• le partionnement apporte la répartition de charge (load balancing)
• il doit être dynamique (ajout/retrait de serveurs) pour s’adapter « élastiquement »
• s’applique à des collections de paires (clé, valeur), où valeur est n’importe quelle information
structurée
• distribution avec maître
• partitionnement par intervalle e.g. MongoDB, Hbase, Cassandra, Redis
• l’index est tout petit par rapport à la collection
• le « routeur » reçoit les requêtes et détermine le(s) serveur(s) à solliciter
• distribution sans maître
• partitionnement par hachage e.g. memcached, Dynamo
• faire hachage cohérent (consistent hashing)
17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 51

Contenu connexe

Tendances

BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J
Lilia Sfaxi
 
Neo4j et ses cas d'usages
Neo4j et ses cas d'usagesNeo4j et ses cas d'usages
Neo4j et ses cas d'usages
Neo4j
 
Big data
Big dataBig data
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
Lilia Sfaxi
 
Introduction au BIG DATA
Introduction au BIG DATAIntroduction au BIG DATA
Introduction au BIG DATA
Zakariyaa AIT ELMOUDEN
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1
Amal Abid
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
Lilia Sfaxi
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQL
Antoine Augusti
 
Chp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique DécisionnelleChp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique Décisionnelle
Lilia Sfaxi
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
Lilia Sfaxi
 
Big data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-businessBig data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-business
Vincent de Stoecklin
 
Etude sur le Big Data
Etude sur le Big DataEtude sur le Big Data
Etude sur le Big Data
Nexialog Consulting
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
Amal Abid
 
Neo4j - Cas d'usages pour votre métier
Neo4j - Cas d'usages pour votre métierNeo4j - Cas d'usages pour votre métier
Neo4j - Cas d'usages pour votre métier
Neo4j
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
Lilia Sfaxi
 
Introduction à la big data V2
Introduction à la big data V2Introduction à la big data V2
Introduction à la big data V2
Mehdi TAZI
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
MICHRAFY MUSTAFA
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2
Amal Abid
 
Les Base de Données NOSQL
Les Base de Données NOSQLLes Base de Données NOSQL
Les Base de Données NOSQL
kamar MEDDAH
 

Tendances (20)

BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J
 
Neo4j et ses cas d'usages
Neo4j et ses cas d'usagesNeo4j et ses cas d'usages
Neo4j et ses cas d'usages
 
Big data
Big dataBig data
Big data
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
 
Introduction au BIG DATA
Introduction au BIG DATAIntroduction au BIG DATA
Introduction au BIG DATA
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQL
 
Base des données réparties
Base des données répartiesBase des données réparties
Base des données réparties
 
Chp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique DécisionnelleChp1 - Introduction à l'Informatique Décisionnelle
Chp1 - Introduction à l'Informatique Décisionnelle
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
 
Big data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-businessBig data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-business
 
Etude sur le Big Data
Etude sur le Big DataEtude sur le Big Data
Etude sur le Big Data
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
Neo4j - Cas d'usages pour votre métier
Neo4j - Cas d'usages pour votre métierNeo4j - Cas d'usages pour votre métier
Neo4j - Cas d'usages pour votre métier
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
 
Introduction à la big data V2
Introduction à la big data V2Introduction à la big data V2
Introduction à la big data V2
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2
 
Les Base de Données NOSQL
Les Base de Données NOSQLLes Base de Données NOSQL
Les Base de Données NOSQL
 

En vedette

5.1 K plus proches voisins
5.1 K plus proches voisins5.1 K plus proches voisins
5.1 K plus proches voisins
Boris Guarisma
 
03 Apprentissage statistique
03 Apprentissage statistique03 Apprentissage statistique
03 Apprentissage statistique
Boris Guarisma
 
5.3 Régression logistique
5.3 Régression logistique5.3 Régression logistique
5.3 Régression logistique
Boris Guarisma
 
5.4 Arbres et forêts aléatoires
5.4 Arbres et forêts aléatoires5.4 Arbres et forêts aléatoires
5.4 Arbres et forêts aléatoires
Boris Guarisma
 
5.5 Clustering
5.5 Clustering5.5 Clustering
5.5 Clustering
Boris Guarisma
 
04 Introduction au logiciel R
04 Introduction au logiciel R04 Introduction au logiciel R
04 Introduction au logiciel R
Boris Guarisma
 
05 Sélection de modèle linéaire
05 Sélection de modèle linéaire05 Sélection de modèle linéaire
05 Sélection de modèle linéaire
Boris Guarisma
 
5.2 Régression linéaire
5.2 Régression linéaire5.2 Régression linéaire
5.2 Régression linéaire
Boris Guarisma
 
Introduction à la Data Science l data business
Introduction à la Data Science l data businessIntroduction à la Data Science l data business
Introduction à la Data Science l data business
Vincent de Stoecklin
 
Du Data Mining à la Data Science
Du Data Mining à la Data ScienceDu Data Mining à la Data Science
Du Data Mining à la Data Science
Soft Computing
 
[FRENCH] - Neo4j and Cypher - Remi Delhaye
[FRENCH] - Neo4j and Cypher - Remi Delhaye[FRENCH] - Neo4j and Cypher - Remi Delhaye
[FRENCH] - Neo4j and Cypher - Remi Delhaye
Rémi Delhaye
 
201301 - Focus Neo4j
201301 - Focus Neo4j201301 - Focus Neo4j
201301 - Focus Neo4jlyonjug
 
Microsoft Technologies for Data Science 201612
Microsoft Technologies for Data Science 201612Microsoft Technologies for Data Science 201612
Microsoft Technologies for Data Science 201612
Mark Tabladillo
 
Neo4j
Neo4jNeo4j
Neo4j
Von Stark
 
Regression lineaire Multiple (Autosaved) (Autosaved)
Regression lineaire Multiple (Autosaved) (Autosaved)Regression lineaire Multiple (Autosaved) (Autosaved)
Regression lineaire Multiple (Autosaved) (Autosaved)Pierre Robentz Cassion
 
Moteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareRecoMoteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareReco
Christophe Willemsen
 
Music recommendations API with Neo4j
Music recommendations API with Neo4jMusic recommendations API with Neo4j
Music recommendations API with Neo4j
Boris Guarisma
 
Neo4j: Graph-like power
Neo4j: Graph-like powerNeo4j: Graph-like power
Neo4j: Graph-like power
Roman Rodomansky
 
2.8 accuracy and ensemble methods
2.8 accuracy and ensemble methods2.8 accuracy and ensemble methods
2.8 accuracy and ensemble methods
Krish_ver2
 

En vedette (20)

5.1 K plus proches voisins
5.1 K plus proches voisins5.1 K plus proches voisins
5.1 K plus proches voisins
 
03 Apprentissage statistique
03 Apprentissage statistique03 Apprentissage statistique
03 Apprentissage statistique
 
5.3 Régression logistique
5.3 Régression logistique5.3 Régression logistique
5.3 Régression logistique
 
5.4 Arbres et forêts aléatoires
5.4 Arbres et forêts aléatoires5.4 Arbres et forêts aléatoires
5.4 Arbres et forêts aléatoires
 
5.5 Clustering
5.5 Clustering5.5 Clustering
5.5 Clustering
 
04 Introduction au logiciel R
04 Introduction au logiciel R04 Introduction au logiciel R
04 Introduction au logiciel R
 
05 Sélection de modèle linéaire
05 Sélection de modèle linéaire05 Sélection de modèle linéaire
05 Sélection de modèle linéaire
 
5.2 Régression linéaire
5.2 Régression linéaire5.2 Régression linéaire
5.2 Régression linéaire
 
Introduction à la Data Science l data business
Introduction à la Data Science l data businessIntroduction à la Data Science l data business
Introduction à la Data Science l data business
 
Du Data Mining à la Data Science
Du Data Mining à la Data ScienceDu Data Mining à la Data Science
Du Data Mining à la Data Science
 
[FRENCH] - Neo4j and Cypher - Remi Delhaye
[FRENCH] - Neo4j and Cypher - Remi Delhaye[FRENCH] - Neo4j and Cypher - Remi Delhaye
[FRENCH] - Neo4j and Cypher - Remi Delhaye
 
201301 - Focus Neo4j
201301 - Focus Neo4j201301 - Focus Neo4j
201301 - Focus Neo4j
 
Microsoft Technologies for Data Science 201612
Microsoft Technologies for Data Science 201612Microsoft Technologies for Data Science 201612
Microsoft Technologies for Data Science 201612
 
Neo4j
Neo4jNeo4j
Neo4j
 
Regression lineaire Multiple (Autosaved) (Autosaved)
Regression lineaire Multiple (Autosaved) (Autosaved)Regression lineaire Multiple (Autosaved) (Autosaved)
Regression lineaire Multiple (Autosaved) (Autosaved)
 
Moteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareRecoMoteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareReco
 
Music recommendations API with Neo4j
Music recommendations API with Neo4jMusic recommendations API with Neo4j
Music recommendations API with Neo4j
 
log
loglog
log
 
Neo4j: Graph-like power
Neo4j: Graph-like powerNeo4j: Graph-like power
Neo4j: Graph-like power
 
2.8 accuracy and ensemble methods
2.8 accuracy and ensemble methods2.8 accuracy and ensemble methods
2.8 accuracy and ensemble methods
 

Similaire à Base de données graphe et Neo4j

Introduction au big data
Introduction au big dataIntroduction au big data
Introduction au big data
Abdelghani Azri
 
GraphTour Paris - Cas d'usages populaires Neo4j
GraphTour Paris - Cas d'usages populaires Neo4jGraphTour Paris - Cas d'usages populaires Neo4j
GraphTour Paris - Cas d'usages populaires Neo4j
Neo4j
 
Introduction à Neo4j
Introduction à Neo4jIntroduction à Neo4j
Introduction à Neo4j
Neo4j
 
Les cas d’usages populaires de Neo4j
Les cas d’usages populaires de Neo4jLes cas d’usages populaires de Neo4j
Les cas d’usages populaires de Neo4j
Neo4j
 
Meetup juin2013
Meetup juin2013Meetup juin2013
Meetup juin2013nperu
 
Découverte de la Graph Data Science
Découverte de la Graph Data ScienceDécouverte de la Graph Data Science
Découverte de la Graph Data Science
Neo4j
 
Neo4j
Neo4jNeo4j
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQLWebinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
MongoDB
 
Geek Time Novembre 2016 : Neo4j
Geek Time Novembre 2016 : Neo4jGeek Time Novembre 2016 : Neo4j
Geek Time Novembre 2016 : Neo4j
OLBATI
 
Introduction à Neo4j
Introduction à Neo4jIntroduction à Neo4j
Introduction à Neo4j
Neo4j
 
Big data : défis & technologies
Big data : défis & technologiesBig data : défis & technologies
Big data : défis & technologies
Mohamed Ramzi Haddad
 
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeGestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
MongoDB
 
Morning with MongoDB Paris 2012 - Fast Connect
Morning with MongoDB Paris 2012 - Fast ConnectMorning with MongoDB Paris 2012 - Fast Connect
Morning with MongoDB Paris 2012 - Fast ConnectMongoDB
 
Google Data Studio et Google Search Console : l'intégration via le data blending
Google Data Studio et Google Search Console : l'intégration via le data blendingGoogle Data Studio et Google Search Console : l'intégration via le data blending
Google Data Studio et Google Search Console : l'intégration via le data blending
Woptimo
 
introNoSQL.pdf
introNoSQL.pdfintroNoSQL.pdf
introNoSQL.pdf
HanenAbbesEpGhorbel
 
Découvrez le parcours de vos données : lignage de données de bout en bout ...
Découvrez le parcours de vos données : lignage de données de bout en bout ...Découvrez le parcours de vos données : lignage de données de bout en bout ...
Découvrez le parcours de vos données : lignage de données de bout en bout ...
Wiiisdom
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigData
Ludovic Piot
 
Data Modeling Power BI [SqlSat '18]
Data Modeling Power BI [SqlSat '18]Data Modeling Power BI [SqlSat '18]
Data Modeling Power BI [SqlSat '18]
Joël Crest
 
Digital GraphTour Paris - 26 March, 2020
Digital GraphTour Paris -  26 March, 2020Digital GraphTour Paris -  26 March, 2020
Digital GraphTour Paris - 26 March, 2020
Neo4j
 

Similaire à Base de données graphe et Neo4j (20)

Introduction au big data
Introduction au big dataIntroduction au big data
Introduction au big data
 
GraphTour Paris - Cas d'usages populaires Neo4j
GraphTour Paris - Cas d'usages populaires Neo4jGraphTour Paris - Cas d'usages populaires Neo4j
GraphTour Paris - Cas d'usages populaires Neo4j
 
Introduction à Neo4j
Introduction à Neo4jIntroduction à Neo4j
Introduction à Neo4j
 
Les cas d’usages populaires de Neo4j
Les cas d’usages populaires de Neo4jLes cas d’usages populaires de Neo4j
Les cas d’usages populaires de Neo4j
 
Meetup juin2013
Meetup juin2013Meetup juin2013
Meetup juin2013
 
Découverte de la Graph Data Science
Découverte de la Graph Data ScienceDécouverte de la Graph Data Science
Découverte de la Graph Data Science
 
Neo4j
Neo4jNeo4j
Neo4j
 
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQLWebinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
 
Geek Time Novembre 2016 : Neo4j
Geek Time Novembre 2016 : Neo4jGeek Time Novembre 2016 : Neo4j
Geek Time Novembre 2016 : Neo4j
 
Introduction à Neo4j
Introduction à Neo4jIntroduction à Neo4j
Introduction à Neo4j
 
Big data : défis & technologies
Big data : défis & technologiesBig data : défis & technologies
Big data : défis & technologies
 
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data LakeGestion des données d'entreprise à l'ère de MongoDB et du Data Lake
Gestion des données d'entreprise à l'ère de MongoDB et du Data Lake
 
Morning with MongoDB Paris 2012 - Fast Connect
Morning with MongoDB Paris 2012 - Fast ConnectMorning with MongoDB Paris 2012 - Fast Connect
Morning with MongoDB Paris 2012 - Fast Connect
 
Base de données
Base de donnéesBase de données
Base de données
 
Google Data Studio et Google Search Console : l'intégration via le data blending
Google Data Studio et Google Search Console : l'intégration via le data blendingGoogle Data Studio et Google Search Console : l'intégration via le data blending
Google Data Studio et Google Search Console : l'intégration via le data blending
 
introNoSQL.pdf
introNoSQL.pdfintroNoSQL.pdf
introNoSQL.pdf
 
Découvrez le parcours de vos données : lignage de données de bout en bout ...
Découvrez le parcours de vos données : lignage de données de bout en bout ...Découvrez le parcours de vos données : lignage de données de bout en bout ...
Découvrez le parcours de vos données : lignage de données de bout en bout ...
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigData
 
Data Modeling Power BI [SqlSat '18]
Data Modeling Power BI [SqlSat '18]Data Modeling Power BI [SqlSat '18]
Data Modeling Power BI [SqlSat '18]
 
Digital GraphTour Paris - 26 March, 2020
Digital GraphTour Paris -  26 March, 2020Digital GraphTour Paris -  26 March, 2020
Digital GraphTour Paris - 26 March, 2020
 

Dernier

Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
UNITECBordeaux
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
OCTO Technology
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Laurent Speyser
 
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO Technology
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
Université de Franche-Comté
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
OCTO Technology
 

Dernier (6)

Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
 
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
 

Base de données graphe et Neo4j

  • 1. Présentation Neo4j BORIS GUARISMA CONSULTANT DATA SCIENCE ET BIG DATA 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 1
  • 2. Présentation •CNAM 2013-2014: • NFE204: Bases de données avancées (1) • NFE211 / 212: Ingénierie des systèmes décisionnels (1 et 2) • EAR206: Analyse données et décisions dans l’entreprise •LinkedIn: • fr.linkedin.com/in/borisguarisma • SlideShare: • fr.slideshare.net/BorisGuarisma 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 2
  • 3. Présentation 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 3
  • 4. Présentation 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 4
  • 5. Sommaire • L’entreprise connectée • Pour quoi une base de données graphe ? • Stockage et traitement graphe • Labeled Property Graph • Base de données graphe: cas d’usage … vers une vraie adoption •Neo4j: autres informations « produit » • Import des données • Architecture • Réplication: cohérence, Causal Clustering/Consistency • Sharding • Autres features 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 5
  • 6. L’entreprise connectée 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 6 Source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
  • 7. L’entreprise connectée 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 7 Source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise need a real-time view of every single store, related to user’s geography and position need entire purchase story
  • 8. L’entreprise connectée 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 8 Source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise not good at managing relationships within dataset between datasets
  • 9. L’entreprise connectée 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 9 Source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
  • 10. L’entreprise connectée 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 10 Source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
  • 11. Pour quoi une base de données graphe? FAITS • Les systèmes de gestion de base de données relationnelles (SGBDR) ne sont plus adaptés au Big Data • Les données sont fortement connectées (notion de « relation ») • La redéfinition du schéma (ajouter de nouveaux types de données ou une nouvelle relation), … cela prend beaucoup de temps pour les SGBDR … • SGBDR : les requêtes SQL avec des multiples jointures de plus en plus complexes avec des latences en lecture de plus en plus importante 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 11
  • 12. Pour quoi une base de données graphe? DES SOLUTIONS • Les bases de données NoSQL (Not Only SQL): • clé – valeur • orientées colonne • orientées documents • graphe 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 12
  • 13. Pour quoi une base de données graphe? RELATIONNEL • Qui sont les amis d’Alice ? la recherche via l’index global possède généralement une complexité en temps de O(log n). • Qui est ami avec Alice ? lorsque l’on effectue une recherche dans le sens opposé de celui à partir duquel l’index à été construit, on doit effectuer plusieurs recherches via l’index pour chaque personne (ami potentiel d’Alice), pour un coût total de O(m log n). 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 13
  • 14. Pour quoi une base de données graphe? GRAPHE • Illustration de l'adjacence entre éléments sans index (index-free adjacency). • Pour trouver les amis de Alice, nous suivons tout simplement ses relations FRIEND sortants, chacune avec un coût O(1). • Pour trouver qui est ami avec Alice, nous suivons tout simplement toutes les relations FRIEND entrants d'Alice, chacune avec un coût de O(1), pour un coût total de O(m). 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 14
  • 15. Pour quoi une base de données graphe? EFFET « WHITEBOARD » 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 15 le dessin sur le tableau est le modèle physique, c’est la façon comment les données sont stockées sur disque
  • 16. Pour quoi une base de données graphe? CEPENDANT LES SGBDR ONT QUELQUE CHOSE DE BIEN ! Elles sont ACID … et Neo4j aussi • Atomicité : Tout ou rien. Soit l’opération se fait en entier, soit elle ne se fait pas du tout. La notion d’atomicité sous-entend la possibilité de défaire un opération avortée. • Cohérence : L’opération doit assurer que la base de données sera dans un état valide après l’opération. • Liée à la configuration en cluster des nœuds (maître-esclaves, core-replicas, etc.) de la base de données NoSQL (voir slides « Casual Clustering » à la fin de la présentation) • Isolation : L’opération doit se faire en toute autonomie sans dépendance à une autre opération. • Durabilité : En cas de problème important (coupure d’électricité), les modifications apportées sont bien enregistrées 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 16
  • 17. Stockage et traitement graphe LES SYSTEMES NoSQL • En général, il n'y a pas de structure de données pour modéliser et stocker les relations. • La plupart des bases NoSQL n’ont pas un « bon concept » de requête pour les relations • modélise et stocke les relations 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 17
  • 18. Stockage et traitement graphe 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 18 bases de données graphe qui sérialisent le graphe (sous forme de table) pour un SGBDR, pour une base de donnés orientée objet ou pour un autre type de stockage.
  • 19. Stockage et traitement graphe • Stockage Graphe • Objectif: performance et scalabilité. • Stockage des données représentées sous forme d'un graphe, avec des nœuds et des relations. • Utilisant des structures de stockage dédiées aux nœuds et relations. • Traitement Graphe • Objectif: performance des traversals. • Parcours des relations grâce à des pointeurs physiques. • Système de stockage capable de fournir une adjacence entre éléments voisins : chaque voisin d'une entité est accessible grâce à un pointeur physique. • Lecture et parcours des données sans recours à un index, en utilisant les arcs pour passer d'un nœud à l'autre. • Les bases de données graphe profitent de l’avantage donné par l'adjacence entre éléments sans index (index-free adjacency). 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 19
  • 20. Traitement graphe: CYPHER LATENCE DES REPONSES DES REQUETES • Avec une base de données graphe, la plupart des requêtes suivent un schéma dans lequel un index est utilisé simplement pour trouver le(s) nœud(s) de départ. • Le reste du parcours utilise ensuite une combinaison de chasse au pointeur + pattern matching pour rechercher les données. Requête CYPHER: MATCH (:BAILLEUR)-[r1:EST_BAILLEUR_DE]->(b)-[r2:A_CONJOINT]->(:CONJOINT) • La performance ne dépend pas de la taille totale de l'ensemble de données, mais uniquement sur les données interrogées (sous-graphes). • Cela conduit à des temps de performance qui sont à peu près constant (liés à la taille de l'ensemble de résultat), même si la taille de l'ensemble de données augmente. 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 20 “openCypher project aims to bring graph querying to the masses, with support from Oracle, Databricks, Tableau and other leading companies”
  • 21. Traitement graphe: Transversal 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 21 CORE API: JAVA
  • 22. Labeled Property Graph • Libellés – types de nœuds 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 22 :PERSONNE :PERSONNE
  • 23. Labeled Property Graph • Libellés – types de nœuds 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 23 :PERSONNE:BENEFICIAIRE :PERSONNE:CONJOINT
  • 24. Labeled Property Graph • Libellés – types de relations 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 24 :PERSONNE:BENEFICIAIRE :PERSONNE:CONJOINT A_CONJOINT
  • 25. Labeled Property Graph • Propriétés – nœuds et relations 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 25 :PERSONNE:BENEFICIAIRE :PERSONNE:CONJOINT A_CONJOINT nuinp: matricule: nom : prenom: nir: dtnaires: numteldo: nutel2do: email: adresse: iban: mtloy: mttotdro: toprsa: nuinp: nom: nir: sitfam: ‘MAR’
  • 26. Labeled Property Graph • Propriétés – nœuds et relations 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 26 :PERSONNE:BENEFICIAIRE :PERSONNE:CONJOINT CVA_CONJOINT nuinp: matricule: nom : prenom: nir: dtnaires: numteldo: nutel2do: email: adresse: iban: mtloy: mttotdro: toprsa: nuinp: nom : nir: matricule:sitfam: ‘MAR’ matricule: respdos: ‘MME’ sitdos: ‘A’ numteldo: nutel2do: emaildos: toprsa: :DOSSIER
  • 27. Labeled Property Graph • En conclusion 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 27 :SUJET :SUJET CVVERBE adjectif: adjectif: adjectif: adjectif: adverbe: adjectif: adjectif:
  • 28. Base de données graphe: cas d’usage • Réseaux sociaux • Détection de fraude (PANAMA PAPERS !) • Analyse des réseaux IT • Systèmes de recommandations • … 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 28
  • 29. Pas que des cas d’usage • Vers une adoption généralisée des bases de données graphe • La valeur (avantage compétitif) est dans la relation entre les données, e.g. Google (search) 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 29
  • 30. Neo4j: autres informations produit • Comparaison versions « Enterprise » et « Community (gratuit) » 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 30
  • 31. Neo4j: autres informations produit • Comparaison versions « Enterprise » et « Community (gratuit) » 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 31
  • 32. Neo4j: Import des données • Comparaison versions « Enterprise » et « Community (gratuit) » 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 32
  • 33. Neo4j: Architecture • Architecture • Le Core API est une API Java qui expose les primitives de graphe des nœuds, des relations, des propriétés et des libellés à l'utilisateur. • Neo4j possède un langage de requête puissant, Cypher, qui permet d’interroger le graphe pour obtenir toutes sortes d’informations sur les nœuds, leurs liens et le contenu de ces derniers. • Le Traversal ou parcours de graphe est un processus qui visite les nœuds dans le graphe en suivant les relations entre les nœuds d'une manière particulière. 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 33 in-memory
  • 34. La cohérence • Capacité d’un système à refléter fidèlement les actions d’un utilisateur. • Cohérence forte – nécessite une réplication synchrone, et potentiellement des verrouillages complexes (two phases commit) • Cohérence faible – on accepte le risque de lectures ne reflétant pas les mises à jour • Cohérence à terme (Eventual consistency) – le système garantit que les incohérences ne sont que transitoires. • En général, les systèmes NoSQL abandonnent la cohérence forte pour favoriser la réplication asynchrone, et donc le débit en écriture/lecture. • La notion de cohérence est liée à la configuration en cluster des nœuds (maître-esclaves, core- replicas, etc.) de la base de données NoSQL 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 34
  • 35. Transactions et logs 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 35
  • 36. Neo4j: Causal Clustering 1. Core servers: mis à jour du graphe, opérations en continue 2. Read replicas (scalabilité): requêtes, analyses, reporting 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 36 RAFT BOLT source YouTube :Introducing Neo4j 3.1: The Graph Foundation for the Enterprise avant maintenant
  • 37. Neo4j: Causal Consistency 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 37 source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
  • 38. Neo4j: Causal Consistency 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 38 source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise Consensus log: stores both committed and uncommitted transactions
  • 39. Neo4j: Causal Consistency - bookmarks 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 39 source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise The client can ask for a bookmark which it then presents as a parameter to the next transaction. Using that bookmark the cluster can ensure that only servers which have processed the client’s bookmarked transaction will be able to run its next transaction. This provides a causal chain which ensures correct behaviour from the client’s point of view
  • 40. Neo4j: Causal Consistency - bookmarks 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 40 source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
  • 41. Neo4j: Causal Consistency - bookmarks 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 41 source YouTube : Introducing Neo4j 3.1: The Graph Foundation for the Enterprise
  • 42. Neo4j: Sharding • Scalabilité: sharding • S'il faut dépasser la capacité d'un cluster, nous pouvons partitionner le graphe sur plusieurs instances de la base via la construction d'une logique de sharding dans l'application. • Le sharding implique l'utilisation d'un identifiant synthétique pour la jointure des données sur plusieurs instances de la base au niveau applicatif. • Comment cela s'effectuera dépend beaucoup de la forme du graphe. Certains graphes se prêtent très bien à ce cas avec des « frontières pratiques ». Bien sûr, pas tous les graphes ont des « frontières » si évidentes. • L'objectif futur de la plupart des bases de données graphe est d'être capable de partitionner un graphe sur plusieurs machines sans intervention au niveau de l'application, de sorte que l'accès en lecture et en écriture sur le graphe puisse être scalable horizontalement. • Dans le cas général, cela est connu pour être un problème NP-dur, et donc impossible à résoudre. 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 42 “On Sharding Graph Databases” (Feb 2011) Part of the reason Neo4j does not shard the graph is that since a graph is a highly connected data structure, traversing through a distributed/sharded graph would involve lots of network latency as the traversal "hops" from machine to machine. http://stackoverflow.com/questions/35982619/neo4j-difference-between-high-availability-and-distributed-mechanism
  • 43. Neo4j: Performance & Scale 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 43
  • 44. Neo4j: Performance & Scale 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 44
  • 45. Neo4j: Performance & Scale 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 45
  • 46. Neo4j: Productivity & Convenience 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 46
  • 47. Neo4j: Ops & Security 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 47
  • 48. Neo4j: + Apache Spark 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 48
  • 49. Références • [1] Robinson I., Webber J, Eifrem E., “Graph Databases”, O’Reilly, 2nd edition, ISBN 9781491930892 • [2] Vukotic A., Watt N., “Neo4j in Action”, Manning Publications, ISBN 9781617290763 • [3] Wikipedia, “Base de données orientée graphe”, https://fr.wikipedia.org/wiki/Base_de_donn%C3%A9es_orient%C3%A9e_graphe • [4] Willemsen C., “Découverte de Neo4j, la base de données graphe”, http://neoxygen.io/articles/decouverte-de-neo4j.html , version 1.1, 14-01-2015 • [5] Maury F., “Pourquoi s’intéresser aux graph-databases ?”, http://www.arolla.fr/blog/2013/10/pourquoi-sinteresser-aux-graph-databases/ • [6] Fauvet C., “Nouvelles opportunités pour les données fortement connectées: La base de graphe Neo4j”, 10 décembre 2013 • [7] Robert M., Dutheil L., Domenjoud M., « Introduction aux graphes avec Neo4j et Gephi » http://blog.octo.com/introduction-aux-graphes-avec-neo4j-et-gephi/ • [8] Lyon William, Introduction to Graph Databases and Neo4j - January 14, 2016, https://www.youtube.com/watch?v=83P81ebgCxA 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 49
  • 50. Backup • la réplication • la réplication n'est pas une distribution !! • c'est une copie des données qui sert avant tout à assurer la redondance, donc la protection contre la perte de données • tolérance aux pannes, distribution des lectures, des écritures • théorème CAP: compromis entre cohérence, disponibilité, tolérance au partitionnement • cohérence synchrone, un maître (SGBDR) • cohérence asynchrone, un maître • cohérence faible • cohérence à terme (EM: eventual consistency) e.g. MongoDB • cohérence asynchrone, plusieurs maîtres • cohérence faible e.g. CouchDB • cohérence à terme (EM: eventual consistency) e.g. Cassandra • disponibilité: élection d’un maître si ce dernier tombe en panne • tolérance au partitionnement: élection d’un maître si cluster est coupé en deux parties 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 50
  • 51. Backup • le sharding ou partionnement • découper une (grande) collection en fragments en fonction d’une clé • placer chaque fragment sur un serveur • maintenir un répertoire indiquent que telle clé se trouve dans tel fragment sur tel serveur • le partionnement apporte la répartition de charge (load balancing) • il doit être dynamique (ajout/retrait de serveurs) pour s’adapter « élastiquement » • s’applique à des collections de paires (clé, valeur), où valeur est n’importe quelle information structurée • distribution avec maître • partitionnement par intervalle e.g. MongoDB, Hbase, Cassandra, Redis • l’index est tout petit par rapport à la collection • le « routeur » reçoit les requêtes et détermine le(s) serveur(s) à solliciter • distribution sans maître • partitionnement par hachage e.g. memcached, Dynamo • faire hachage cohérent (consistent hashing) 17/01/2017 BORIS GUARISMA - PRÉSENTATION NEO4J POUR LE CNAM 51