Bases de Données NoSQL avec Neo4j¶
Objectifs¶
- Installer Neo4j et créer une base de données orientée graphe
- Interroger une base de données orientée graphe avec Cypher
- Importer des données dans Neo4j
- Créer une application autour de Neo4j avec Python
- Passer à l'échelle avec un cluster Neo4j
Ressources¶
Outils
- Docker
- Python
Sources et référence
Présentation de Neo4j¶
Neo4j est un Système de Gestion de Bases de Données orienté graphe open source. Il manipule les données sous leur nature connectée en les représentant sous la forme de graphe de façon native.
Cette représentation trouve ses sources dans la théorie des graphes par Leonhard Euler et exploite naturellement ses algorithmes dans des applications comme :
- Système de recommandation en temps réel
- Détection de fraude
- Transport et logistique
- Détection de communautés
Des exemples de cas d'utilisation sont publiés sur Neo4j GraphGists
Éléments de Graphe¶
Un graphe est composé de 2 éléments :
- Les noeuds (Vertices) : représentant les entités du domaines. Ils possèdent un ou plusieurs labels (étiquettes) reflétant leurs types et sous-types. Chaque noeud est décrit par un ensemble de propriétés ou attributs.
- Les relations (Edges) : qui sont les arcs reliant les noeuds et représentant une relation entre deux noeuds. Une relation possède un type et peut avoir aussi des propriétés.
Par exemple, le grpahe ci-dessous représente deux types de noeuds : Person et Movie (Personne et Film) et les relations entre eux : ACTED_IN, DIRECTED et REVIEWED (a_joué_dans, a_réalisé et a_évalué).
Ce graphe comporte 1 neoud de type Movie et 4 noeuds de type Person. Deux personnes ("Richard Harris" et "Gene Hackman") ont joué dans le film "Unforgiven". "Clint Eastwood" à joué dans ce film et l'a réalisé. "Jessica Thompson" a donné un évaluation pour le film.
Le film possède les propriétés released, tagline et title :
La relation ACTED_IN possède la propriété roles :
Caractéristiques¶
Neo4j présente les caractéristiques et les fonctionnalités suivantes :
- Conformité aux propriétés ACID garantissant une intégrité des données pour des applications OLTP/OLAP.
- Une modélisation en graphe de propriétés intuitive et flexible.
- Un langage (Cypher) simple et expressif.
- Support des langages Java, Python, .Net, Javascript et Go.
- Des outils : Data-importer pour ETL, Browser pour les requêtes, Bloom pour la visualisation, le client Neo4j Desktop ...
- Des connecteurs pour l'intégration avec Kafka, outils BI, ...
- Mise à l'échelle horizontale
- Optimisation des requêtes (1000x plus rapide que les SGBDR sur les requêtes complexes)
- Administration simplifiée avec Neo4j OPS Manager
- Importation batch et incrémentale
Neo4j est le leader du classement des SGDB orientés Graphe selon DB-Engines
Neo4j figure parmi les 20 SGBD les plus utilisés source