Neo4j pour le requêtage de données interconnectées

Neo4J

Confrontées au traitement de quantités grandissantes de données, les applications modernes utilisant les bases relationnelles traditionnelles peinent à requêter de manière efficace et rapide leurs données notamment sur des niveaux de profondeur importants ou un grand nombre de relations.

Neo4j offre une solution adaptée dans des contextes où les données sont fortement connectées et organisées selon des modèles complexes. Son modèle de données est à la fois flexible, simple, évolutif et robuste et s’ajuste aux besoins de n’importe quelle application.

La technologie Neo4j permet de requêter en temps réel et de manière extrêmement performante les données quels que soient le volume, la profondeur et le nombre de relations.

Détection de doublons, de relations directes ou indirectes, prédictions, recommandations, … ou simple visualisation de l’écosystème, autant de cas d’usage auxquels pourra répondre la technologie Neo4j qui a déjà séduit plusieurs des plus grands acteurs du marché mais aussi et surtout certains de nos clients.

Problématique client

Les données interconnectées sur plusieurs niveaux de profondeur sont difficilement représentables et requêtables de manière performante sur la base de données relationnelle en place. Par exemple l’affichage d’un arbre d’actionnariat d’une entreprise s’avère assez complexe quand il s’agit en plus de calculer des pourcentages de détention directs ou indirects nécessitant, avec la structure en place, des calculs itératifs sur chacun des niveaux ralentissant les traitements et surtout complexifiant le code et sa maintenance.

Arbre d’actionnariat
Calcul récursif des détentions de chaque actionnaire

Les datas émanant de diverses sources mais surtout de la saisie des utilisateurs, il est primordial, lors de ces saisies de proposer les données déjà existantes en prenant soin de vérifier les droits d’accès à ces données mais également de les dédoublonner en se basant sur des critères de rapprochement et de liens directs ou indirects.

Enfin, il s’avère difficile voir même quasi impossible d’afficher et de parcourir l’écosystème complet sans filtrage préalable.

Ainsi, le besoin était donc de trouver une solution pérenne permettant l’affichage d’une vue d’ensemble de l’écosystème, son parcours de manière simple, le requêtage de manière rapide et rendre possible et performantes des opérations telles que dédoublonnage d’entités métiers, rapprochement au travers de relations communes, recherches approchantes, identification de potentielles relations manquantes pour alerter et demander la saisie, …

Nous avons choisi d’utiliser neo4j qui offre des fonctionnalités permettant d’adresser cette problématique et de mettre en place les différentes fonctionnalités demandées.

La solution proposée

La solution technique proposée et mise en place est développée sur une stack micro-services Spring Boot (solution utilisée pour la solution cliente) mais est transposable sur d’autres langages tels que node / pyhton /…

Afin d’être développé indépendamment de la solution existante, un nouveau micro-service a été mis en place, permettant d’isoler les communications entre la base graph et le reste de l’application. Ce microservice permet d’instancier une connexion à la base de données neo4j et de gérer des entités représentant les nœuds et relations au sein du graph.

La base de données neo4j peut être installée et utilisée très facilement grâce aux images docker tout-en-un fournies par neo4j ou via son offre cloud managée pour une utilisation clé en main.

Un système événementiel est utilisé pour détecter les données à créer / modifier / supprimer dans la base neo4j. Ces événements, émis par l’application existante seront récupérés pour réaliser l’opération
équivalente dans la base de données neo4j.

Neo4j met à disposition plusieurs outils pour visualiser / requêter les données disponibles dans neo4j, notamment neo4j browser qui permet d’afficher de manière graphique les résultats d’une requête. De multiples fonctionnalités permettent de customiser sa représentation graphique pour mettre en évidence des noeuds au sein de son écosystème.

Concernant la reprise des données, neo4j offre la possibilité d’importer des fichiers csv contenant les données à intégrer. Un simple paramétrage (entité à utiliser, mapping des champs) permet l’import de manière rapide et reproductible.

Affichage et parcours de l’écosystème complet avec neo4j browser

Pour aller plus loin

L’écosystème neo4j possède une multitude de fonctionnalités sur le traitement et l’analyse des données inter-connectées : analyse, recommandations, détection des doublons, data science, …

https://neo4j.com/

Un programme startup est mis en place par la société neo4j permettant d’utiliser gratuitement une base de données neo4j cloud ainsi que l’outil neo4j desktop

https://neo4j.com/startups/

Un besoin ? Une question ? N’hésitez pas à nous contacter