3. 1960 1970 1980 1990 2000 2010 2020 2030
BASES DE DONNEES
RELATIONNELLES CLASSIQUES
Stocker et récupérer des données
2-3 sauts
dans une
requête
4. 1960 1970 1980 1990 2000 2010 2020 2030
2-3 sauts
dans une
requête
TECHNOLOGIE BIG DATA
Agréger et filtrer des données
1 saut
dans une
requête
BASES DE DONNEES
RELATIONNELLES CLASSIQUES
Stocker et récupérer des données
5. 1960 1970 1980 1990 2000 2010 2020 2030
2-3 sauts
dans une
requête
1 saut
dans une
requête
Des millions
de sauts
BASES DE DONNEES
RELATIONNELLES CLASSIQUES
Stocker et récupérer des données
TECHNOLOGIE BIG DATA
Agréger et filtrer des données Connecter les données
6. Connecter les données
2-3 hops
in a query
1 hop
in a query
Des millions
de sauts
Stockage et extraction
en temps réel
Traitement parallèle
par lots
Graphe de connaissances temps réel
“Our Neo4j solution is literally thousands of times faster
than the prior MySQL solution, with queries that require
10-100 times less code”
Volker Pacher, Senior Developer
BASES DE DONNEES
RELATIONNELLES CLASSIQUES
Stocker et récupérer des données
TECHNOLOGIE BIG DATA
Agréger et filtrer des données
7. Adjacence hors indexes
A l’écriture
Les données sont connectées au
moment-même où elles sont
stockées
A la lecture
Extraction ultra-rapide des
données et des relations par
saut de pointeurs
8. Passage à l’échelle illimité IA et apprentissage
Dévoiler le contexte Sécurité et confidentialité des données
Horizontalement et verticalement Intégrer la science des données
dans les systèmes opérationnels
Utiliser la richesse des données pour
révéler le contexte des données et les
relations de cause à effet en temps réel
Assurer la protection des données et
le respect de la réglementation
9. • Au sein d’une infrastructure
partagée, les données et les
transactions sont physiquement
isolées
• Plusieurs bases de données
fonctionnent en parallèle
sur un même cluster Neo4j
(ou sur un même serveur autonome)
• Gestion agile “cloud-friendly” :
déplacement facile et rapide de
bases de données d’un cluster à un
autre
10. Cas d’usage:
• Multi-tenancy: Une même instance de Serveur Neo4j ou
de Cluster Neo4j Cluster peut servir différents groupes
d’utilisateurs/clients au sein d’une organisation.
• Rapid Test/Développement/Déploiement: Les DBAs et
développeurs peuvent créer plusieurs copies de la même
base de données.
• Scalabilité: Les données sont réparties dans des
structures séparées physiquement.
• Elasticité “Cloud-Friendly” : Les bases de données
peuvent être associées à un stockage de type cloud et
être facilement détachées d’un serveur pour être
rattachées à un autre.
La base de données system :
Référentiel interne contenant les informations système,
disponible pour toutes les bases de données (“single” ou
cluster)
Commandes d’administration:
• CREATE|DROP|START|STOP DATABASE name
User commands:
• HTTP API: http://server:port/.../database
• Browser & Cypher Shell: :USE database
• Drivers: Session(database)
• Browser:
12. Base de données ACID en mode cluster basé sur le
protocole RAFT:
- Des transactions de graphe avec Cohérence ACID
- Garantit l’intégrité au fil du temps
Replica Servers
Query, View
Core Servers
Synced Cluster
13. Vous
Modélisation et stockage des
graphes dans des bases de
données Neo4j dédiées, selon
vos besoins métier
Neo4j
Distribution et parallélisation
des requêtes sur ces différentes
bases de données Neo4j lorsque
vous devez regrouper des
résultats
14. Passage à l’échelle illimité pour Neo4j en ajoutant la scalabilité horizontale
à la puissance du modèle existant de scalabilité verticale.
SHARDING: exploiter un seul graphe étendu
FEDERATION: interroger des graphes disjoints
15. • Exécution en parallèle de requêtes sur plusieurs bases de données graphes, en combinant ou en
agrégeant les résultats.
• Chaînage des requêtes provenant de différentes bases de données graphe pour produire des
analyses temps réel avancées.
SQL
MATCH (boss)-[:MANAGES*0..3]->(sub), (sub)-[:MANAGES*1..3]->(report)
WHERE boss.name = “John Doe”
RETURN sub.name AS Subordinate, count(report) AS Total
Cypher en Neo4j 3.5
UNWIND corporate.graphIds() AS gid
CALL {
USE corporate.graph( gid )
MATCH (boss)-[:MANAGES*0..3]->(sub),
(sub)-[:MANAGES*1..3]->(report)
RETURN boss.name AS Boss,
sub.name AS Subordinate,
count(report) AS Total
}
RETURN Boss, Subordinate, Total ORDER BY Total
Cypher en Neo4j 4.0
18. BobJoe
• Conçue pour de nouveaux cas d’usage - PII, credit card,
patient information, etc.
• Basée sur le Contrôle d’accès en fonction des rôles
(RBAC) pour les graphes
• Restrictions sur les données pouvant être accédées par
différents utilisateurs, appliquées à toutes les
interactions avec la base de données
• Vue sécurité implicite sur les données pour chaque
utilisateur via des définitions de sécurité basées sur le
schéma
• Des permissions Grant/Deny pour les opérations sur les
données TRAVERSE, READ ou WRITE, basées sur les
labels, les types de relations ou la base de données et
sur les noms des propriétés
• Les règles de sécurité sont dupliquées sur l’ensemble
du cluster grâce aux rôles associés aux utilisateurs
Baseline_Personnel
_Security_Standard
Security_Check Counter_Terrorism
_Check
Developed_Vetting
19.
20. • L’agent du centre d’appel a besoin du nom du médecin mais ne
doit pas avoir accès au diagnostic
• Le médecin doit pouvoir consulter les dossiers des patients et les
diagnostics
21. // Doctors get wide-ranging access
GRANT ACCESS ON DATABASE healthcare TO doctor;
GRANT TRAVERSE ON GRAPH healthcare TO doctor;
GRANT READ {*} ON GRAPH healthcare TO doctor;
GRANT WRITE ON GRAPH healthcare TO doctor;
// Agents get narrower access
GRANT ACCESS ON DATABASE healthcare TO agent;
GRANT TRAVERSE {*} ON GRAPH healthcare TO agent;
GRANT READ {Name} ON GRAPH healthcare NODES Doctor
TO agent;
GRANT READ {Name} ON GRAPH healthcare NODES Patient
TO agent;
MATCH (:CallcenterAgent {name: 'Alice'})
<-[:CALLED]-(p:Patient)-[:HAS_DIAGNOSIS]-(dia)
<-[:ESTABLISHED]-(d:Doctor)
RETURN p.name, d.name, dia.name;
22.
23. • Contrôle des flux dans toute la chaîne, permettant à l’application cliente de contrôler entièrement la
production et le flux des enregistrements dans un résultat
• Exécution Synchrone/Asynchrone
• Basée sur les “reactive streams” avec une librairie backpressure non-bloquante
• Les applications clientes peuvent extraire ou rejeter tout le résultat ou N éléments
•
• Exposée via une API reactive dans les Drivers Neo4j v4.0
• Cas d’Usage :
• Requêtes longues / résultats volumineux
• Résultats paginés
• Clients légers
24. String query = "MATCH (a:Person) RETURN a.name";
try (Session session = driver.session()) {
StatementResult result = session.run(query);
while (result.hasNext()) {
Record record = result.next();
String name = record.get(0).asString();
if (name.equals("Emil Eifrem")) {
break; // Looks ok, but whoops!
}
System.out.println(name);
}
}
String query = "MATCH (a:Person) RETURN a.name";
return Flux.using(driver::rxSession,
session -> {
RxStatementResult result = session.run(query);
return Flux.from(result.records())
.limitRate(10)
.map(record -> record.get(0).asString())
.takeUntil(name ->
name.equals("Emil Eifrem"))
.doOnNext(System.out::println)
.then( /* discard example records */ );
}, RxSession::close);
25. Basée sur une fondation Neo4j native et robuste,
Neo4j 4.0 apporte:
La scalabilité illimitée avec le sharding & la fédération
Une architecture 100% reactive adaptée aux applications modernes
Des contrôles de sécurité granulaires pour la sécurité et la vie privée
Une souplesse de déploiement avec le multi-base de données
28. 28
Neo4j Desktop
Les outils indispensables
- Neo4j Browser pour éditer les requêtes Cypher
- Neo4j Bloom, l’interface intuitive d’exploration de graphes
- Les outils des Neo4j Labs : Neo4j ETL, Halin, Query Log Analyzer, NEuler
- Et bien d’autres applications fantastiques de Kineviz, yWorks, et autres !
29. 29
Neo4j Desktop
Connexion aux bases de données Neo4j, où qu’elles soient
- instances uniques locales de développement et d’expérimentation
- déploiements sur site dans des environnements de test et d’intégration
- déploiements en production dans le cloud avec Neo4j Aura
30. 30
Neo4j Desktop
Facilite le travail des développeurs en 2020
- intégration avec le système de fichiers local
- outils CLI tooling pour s’intégrer avec vos plates-formes de build
- modèles de projets pour développer des applications
- prototypage facile d’applications avec interface utilisateur
- développement GraphQL de qualité
- excellente intégration avec Aura
31. Flexible Fiable Orienté développeur
● Zéro Maintenance
● Scalabilité à la demande
● Tarification simple,
basée sur le capacitaire
● 100% haute dispo,
redémarrage automatique,
configuration en mode cluster
● Intégrité & Durabilité des
données
● Sécurité et cryptage de bout
en bout
● Performance graphe native
● Le langage d’interrogation de
graphes le + populaire au
monde
● Vaste couverture des langages
- drivers pour Java, .NET,
JavaScript, Python, Go, Spring,
etc.
33. Neo4j Bloom
Sur étagère avec Neo4j
Exclusivement sur les bases
graphes Neo4j
Centré sur des besoins ad-hoc
d’exploration de graphes
Paradigme d’exploration “Search
first”
Pour les data analysts, data
scientists et les développeurs
Boîtes à outils de
visualisation
Editeurs tiers e.g. Ogma, Keylines,
vis.js, d3.js, sigma.js, yFiles
Besoin de développement
d’applications custom ou
d’intégration de visualisations
Parfois supportées par des
fournisseurs
Développements spécifiques parfois
nécessaires
Offrent des APIs robustes pour un
contrôle souple de l’expérience
utilisateur
Pour les développeurs d’applications
Outils de BI
Supportés par des éditeurs tiers
e.g. Tableau, Power BI, Qlik
Création de rapports et tableaux de
bord associant diverses sources de
données et de nombreux types de
visualisation
Non optimisés pour les données de
graphe - requièrent un connecteur
Neo4j spécifique
Pour les data analysts et
utilisateurs métier
Apps de visualisation
de graphes
Supportés par des éditeurs tiers e.g.
Linkurious, Kineviz, Graphileon
Purpose-built applications for specific
domains and graph visualization needs
Supporte plusieurs modèles graphe &
sources de données
Capacité de personnalisation et
d’intégration
Pour les data analysts, data scientists et
utilisateurs métier
Peu d’expertise technique Forte implication technique
+ #utilisateurs +++ #utilisateurs
Apprentissage autonome Gros effort d’encadrement
36. Recherche avec
auto-complétion / suggestions
automatiques
Couleurs, tailles et icônes
ajustables
Visualisation, Exploration et
Découverte
Panorame, Zoom et Sélection
Navigateur et éditeur de
propriétés
37. Couleurs et tailles flexibles Style utilisant les propriétés
Développement du graphe par type
de relation ou par type de voisin
Recherche insensible à la casse Spécification des types de paramètres Export de données CSV
38.
39. Recettes & Analytics
orientées graphe
ML & IA augmentés
par les graphes
Graph Data Science
La GDS est une approche scientifique pour acquérir des connaissances sur les
relations et les structures des données, généralement pour alimenter des prévisions
Elle utilise des méthodes pluridisciplinaires incluant les requêtes,
les statistiques, les algorithmes et l'apprentissage automatique.
`
Répondre à des questions spécifiques afin de mieux
comprendre les connections entre données
actuelles et historiques
Les approches incluent généralement des requêtes
et des algorithmes globaux et l'utilisation directe des
résultats
Modèles d’entraînement (ML) fondés sur des
données “graphes”
Utilisés pour simuler des décisions humaines et
probabilistes au sein d’une solution/application
(Système IA)
40. Optimisée
pour les Analytics
Exploitez des structures de données
personnalisées optimisées pour les
traversées et l’agrégation globales
Partitionnez et refactorez votre
graphe pour des cas d’utilisation
spécifiques
Des Algorithmes pour
créer de la connaissance
Algorithmes robustes fortement
parallélisés et applicables à
plusieurs milliards de noeuds
Accès rapide à des dizaines de
tutoriels / expérimentations
Interface
intuitive
API drastiquement simplifiée et
standardisée permettant des
configurations personnalisées
Documentation, formation, et
exemples disponibles => montée en
compétences facile
La librairie Graph Algos devient la
Produit Supporté, en Développement Dynamique & Continu
Graph Data Science Library
41. Parallel BFS
Parallel DFS
Shortest Path
Single Source Shortest
path
All Pairs Shortest Path
Minimum Spanning Tree
A* Shortest Path
Yen’s K-Shortest Path
Minimum Spanning Tree
Random Walk
Degree Centrality
Closeness Centrality
(inc. harmonic,
Dangalchev, Wasserman
& Faust)
Betweenness Centrality
Approx. Betweenness
Centrality
Page Rank
Personalized Page Rank
ArticleRank
Eigenvector Centrality
Triangle Count
Clustering Coefficients
Connected Components
(aka Union Find)
Strongly Connected
Components
Label Propagation
Louvain Modularity
Balanced Triad
Adamic Adar
Common Neighbours
Preferential Attachment
Resource Allocations
Same Community
Total Neighbours
Euclidean Distance
Cosine Similarity
Jaccard Similarity
Overlap Similarity
Pearson Similarity
Approximate KNN
Pathfinding
& Search
Centrality /
Importance
Community
Detection
Link
Prediction
Similarity
42. Projections analytiques:
- Structure de données spécialisée pour les
algorithmes, supporte des milliards de
noeuds
- Loaders Cypher pour l’expérimentation
- Remodeler, combiner, agréger et dédupliquer
rapidement vos données transactionnelles
- Prise en charge des noeuds multi-labels, des
types de relations et des propriétés
- Gestion parallèle en mémoire d’algorithmes
de graphes simultanés
- Réduction drastique de l’empreinte mémoire
Algorithmes de graphes & outils :
- >40 algorithmes dans 5 catégories: détection de
communauté, centralité, similarité, parcours et
prédiction de lien
- Algorithmes complémentaires (génération de
graphes, encodage à chaud, random walk)
- Aperçu de nouvelles implémentations
(namespaces alpha & beta)
- Les algorithmes scalables supportés comprennent
le seeding, le déterminisme et les calculs
incrémentiels
- Mode d’estimation des besoins en mémoire