Explorer une base de données orientée graphes

Nederlandstalige versie

Depuis 2017, nous mettons en avant dans ces pages (ici, , ou encore ici) l’utilisation de bases de données orientées graphes (ou Graph Databases). Gartner prédit que d’ici 2025, les technologies graphes seront utilisées dans 80 % des innovations en données et analytique, contre 10 % en 2021, facilitant la prise de décision rapide au travers d’une organisation. 

Les bases de données graphes ont deux grandes familles d’application :

  • L’analytique, dans laquelle des calculs complexes sont effectués sur de grands volumes de données (identification de structures, de communautés, de nœuds caractéristiques, de relations manquantes, d’anomalies, de chemins…) ;
  • L’exploration, permettant à des agents de rechercher un nœud ou une relation particulière, pour ensuite explorer son voisinage proche dans un contexte d’investigation.

Il est bien sûr fréquent de combiner les deux : une première phase d’analytique permet d’identifier des situations à examiner (suspicion de fraude, d’incident ou de faiblesse dans une infrastructure…), chaque cas pouvant ensuite être exploré localement pour prendre une décision. Dans la suite de cet article, nous allons nous focaliser sur l’aspect exploratoire. 

Dans la phase exploratoire, un des avantages majeurs des bases de données orientées graphe est la proximité forte entre le modèle de données et le monde réel. Généralement, les nœuds ou entités vont représenter des concepts clairs pour les gens de métier (personnes, entreprises, documents, serveurs…) et les relations auront une sémantique naturelle (travaille pour, appartient à, est connecté à…). Ce qui a pour conséquence qu’une interface graphique générique peut souvent être connectée à une base de données et mise dans les mains d’experts sans connaissances IT, avec uniquement un peu de configuration et paramétrisation au préalable, mais pas de développement. Ceci ne sera pas vrai dans les bases de données relationnelles, ou une table peut autant représenter une entité qu’une relation, et attribut représentera tantôt une réelle information, tantôt une clé primaire ou étrangère.

Les Knowledge graphs sont typiquement un exemple où une interface graphique générique pourra offrir une grande plus-value sans nécessiter de développement spécifique.

Pour illustrer cette possibilité, nous allons parcourir un certain nombre d’outils, des plus simples aux plus élaborés, qui permettent de visualiser des données stockées dans une base de données orientée graphe Neo4J

Librairies JavaScript

Il existe de nombreuses librairies capables d’afficher un réseau (vis.js, D3, Sigma.js, …). Mais certaines permettent directement d’interagir avec Neo4j. On peut donc avoir, dans le JavaScript, une requête Cypher (le langage de requêtes de Neo4j), qui sera envoyée au serveur Neo4j, et dont le résultat pourra être affiché à l’écran :

  • Neovis.js (Extension de vis.js, gratuit) ;
  • popoto.js (Extension de D3.js, gratuit) ;
  • Cytoscape.js, probablement la librairie open-source la plus évoluée, compagnon de CytoScape Desktop que nous évoquerons plus bas ;
  • KeyLines, solution commerciale très évoluée à destination des entreprises.

Ces solutions ne répondent pas directement à la possibilité évoquée ci-dessus d’un outil qu’il suffit de paramétrer, puisqu’elles nécessitent des développements importants avant une mise en production. Par ailleurs, le fait qu’elles puissent communiquer directement avec Neo4j rend sans doute les développements plus faciles, mais implique aussi qu’un accès direct à Neo4j depuis le navigateur est ouvert, et que les informations de connexion sont présentes dans le code JavaScript, ou demandées à l’utilisateur.

Ingestion

Une large gamme de produits permettent d’ingérer des données Neo4j dans leur propre système de données, soit en aspirant la totalité des données, soit en exécutant une requête Cypher pour en récupérer le résultat.

Nous pouvons par exemple citer deux outils open-source destinés à de l’analyse réseaux : 

  • Gephi, avec un plugin dédié. On a le choix entre l’importation de la totalité des nœuds et relations appartenant à un ou des type(s) sélectionné(s), ou uniquement le résultat d’une requête Cypher. Le processus est malheureusement assez laborieux et nécessite de bonnes connaissances de Cypher, ce qui ne permet pas de mettre cette solution dans les mains d’un expert métier. Il est par exemple nécessaire de fournir une requête listant les nœuds à importer, puis une autre requête listant les relations. Il sera de fait particulièrement complexe d’importer l’ensemble du réseau à une distance de maximum 3 d’un nœud “cible”.
    Par ailleurs, une fois les données importées, elle seront complètement découplées de la base de données. Il ne sera pas possible, à moins d’un nouvel import, de récupérer les voisins d’un nœud présent dans l’espace de travail.
  • Cytoscape, avec un plugin dédié (Cytoscape Neo4j Plugin). Sur le papier, il s’agit d’une solution plus avancée que celle de Gephi : l’intégration des données via une requête est beaucoup plus souple, et une fois qu’une partie du réseau est importée, on peut en deux clics aller chercher les voisins d’un nœud présent dans l’espace de travail. On a donc un véritable outil d’exploration. Néanmoins, trois limitations sont à noter :
    • Lors de nos tests, si les nœuds étaient correctement importés, ça n’était pas le cas des relations, importées de façon très aléatoire ;
    • On ne peut pas enrichir une visualisation avec une nouvelle requête (qui créera une nouvelle visualisation), ce qui limite fortement l’interactivité ;
    • Cytoscape est à la base un outil conçu pour la bioinformatique et la chimie. S’il est extrêmement puissant, il est également complexe, et difficile à mettre dans les mains d’utilisateurs peu techniques.

En dehors de ces solutions open-source, il existe un grand nombre de plateformes professionnelles et commerciales, aux possibilités d’analyse très étendues, se focalisant sur une approche “graphe” et permettant d’importer un grand nombre de formats de données, dont Neo4j. En général à destination d’organisation (sécurité, renseignement…) ayant des besoins d’investigation, elles dupliqueront donc les données de Neo4j (compliquant la synchronisation) et les combineront potentiellement à d’autres. On peut par exemple citer (plus de détails ici) :

Exploration

Intéressons-nous maintenant à des applications qui permettront directement de se connecter à une base de données Neo4j pour l’explorer, sans copier les données dans un système interne, et sans demander de développement, du moins dans un premier temps.

Citons tout d’abord l’outil de base fourni (gratuitement) avec Neo4j : Neo4j Browser. Il s’agit d’un outil à destination des développeurs ou data-scientists, permettant de tester des requêtes et d’en visualiser le résultat, avec des possibilités d’expansion (affichage des voisins d’un nœud) limitées. Il faut toujours commencer par une requête Cypher, et on ne peut étendre un nœud qu’en affichant la totalité de ses voisins.

Neo4j Bloom

Neo4j Bloom est une option (payante) de la version Enterprise de Neo4j (payante aussi), il s’agit là d’un véritable outil à destination d’experts métier. Il pourront rechercher des informations en “full text”, étendre sélectivement (ajouter uniquement les voisins d’un certain type, ou lié via une relation d’un certain type), et même définir graphiquement des “patterns” à rechercher, sans nécessiter la moindre ligne de Cypher.

Bloom est disponible gratuitement avec Neo4j Desktop (version installée localement), mais uniquement pour explorer des graphes locaux, et sans possibilités de sauvegarder ses visualisations, rendant cette version gratuite peu compatible avec une utilisation dans un contexte professionnel.

yWorks Neo4j Explorer

Développé par la même société que yFiles ou yEd, yWorks Neo4j Explorer offre (gratuitement) une interface simple, permettant une recherche full-text, une expansion sélective et offre même la possibilité d’utiliser ChatGPT pour générer une requête Cypher répondant à un besoin spécifique. On regrettera cependant ne pas y trouver de réelle possibilité de sauvegarder ou de partager une visualisation.

On peut utiliser yWorks Explorer soit en utilisant la version cloud, soit en l’installant dans Neo4j Desktop. Il est à noter que dans la version cloud, la connexion à la base de données se fait depuis le navigateur, et qu’il est donc possible d’accéder à une base de données interne ou locale.

Graphileon

Graphileon, version cloud (payant) ou desktop (gratuite, mais est dépréciée) n’est à ce stade pas réellement accessible à tous, parce qu’elle nécessite une requête Cypher comme point de départ. Mais on offre la possibilité de créer une “app”, permettant à des développeurs de rajouter des boutons à l’interface ayant une action programmée, ce qui étendra les fonctionnalités. Les possibilités de l’outil sont cependant relativement limitées, nécessitant par ailleurs souvent des compétences techniques, comme la nécessité d’éditer du JavaScript pour modifier les styles (couleurs, formes, icônes…).

Le petit plus est la séparation entre un utilisateur “admin”, qui configure la connexion à la DB, et l’utilisateur “classique”, qui n’a ainsi pas besoin de connaître les informations techniques de la base de données.

Tom Sawyer Graph Database Browser

Tom Sawyer Software

De la part d’un tel éditeur de logiciel, on aurait pu s’attendre à un outil comparable à ses concurrents présentés sur cette page, mais en ce qui concerne l’exploration de Neo4j, il n’en est rien. Une interface vieillotte, des possibilités de paramétrisation des styles nécessitant d’éditer un code à la JavaScript, des requêtes Cypher comme seul point de départ, pas de recherche full-text (à part dans objets déjà présents dans l’espace de travail), pas d’expansion sélective… S’il s’agissait d’un outil gratuit, il aurait pu constituer une alternative valable, mais Tom Sawyer Graph Database Browser ne propose que des options payantes. La valeur de cet éditeur est sans doute à trouver dans les autres produits de son catalogue.

Linkurious Enterprise

À notre sens le plus évolué des outils testés jusqu’ici. Pour les utilisateurs finaux, Linkurious Enterprise propose une interface facile à prendre en main pour les non-initiés, des possibilités puissantes de recherche, de filtrage ou de personnalisation des styles ; des visualisations qui peuvent être sauvegardées, organisées, partagées, exportées ou commentées. Pour les administrateurs, la possibilité de gérer finement les utilisateurs, groupes, droits d’accès, en les liant potentiellement à un AD ou LDAP.

On regrettera l’absence d’un outil tel que celui proposé par Bloom, permettant de construire des requêtes (relativement) élaborées sans nécessiter la connaissance de Cypher. Mais ceci est compensé par la possibilité pour les administrateurs de définir des requêtes Cypher, éventuellement paramétriques, permettant aux utilisateurs des recherches ou extensions puissantes, sans connaissances techniques.

Une API avancée permet par ailleurs une grande automatisation. On peut par exemple créer automatiquement une visualisation, pour en créer ensuite un “widget” (mini-vue interactive) que l’on pourra ensuite intégrer dans une application.

Contrairement à la majorité des outils cités dans cet article, il n’existe pas de version gratuite de Linkurious, même limitée.

Graphlytic

Sans doute la seule réelle alternative à Bloom ou Linkurious, on aura avec Graphlytic une version gratuite, soit via Neo4j Desktop, soit en on-premise, mais avec un seul utilisateur. On reste cependant un niveau en dessous en termes de possibilités : aspects collaboratifs limités, pas vraiment d’exploration sélective, pas de requêtes paramétriques.

On notera cependant un “Query builder”, encore limité mais avec du potentiel, la possibilité de personnaliser le style (taille de nœuds, couleurs, styles et épaisseur de bords, formes de flèches…) de façon fine, la présence du API ou la connexion à une SSO (non testés).

Conclusions

Il existe donc un certain nombre d’alternatives permettant l’exploration de données dans Neo4j (ainsi que, souvent, d’autres modèles comme MemGraph ou AllegroGraph). Cela va d’outils simples et gratuits à la portée de petites organisations, comme yWorks ou Graphlytic, à des solutions beaucoup plus élaborées, mais à des prix que seules des grosses structures peuvent s’offrir, comme Bloom ou Linkurious. Mais il faudra bien sûr tenir compte d’un ensemble de critères non détaillés ici ; quel est le modèle de “pricing”, l’outil est-il compatible avec l’infrastructure logicielle et réseau de l’entreprise, qu’en est-il par rapport au GDPR…

Une première évaluation avec un outil gratuit permettra de mettre en évidence toutes ces contraintes, de sorte de choisir l’outil idéal en toute connaissance de cause.


Ce post est une contribution individuelle de Vandy Berten, spécialisé en data science chez Smals Research. Cet article est écrit en son nom propre et n’impacte en rien le point de vue de Smals.

This entry was posted in [FR], Open Source and tagged , by Vandy Berten. Bookmark the permalink.
avatar

About Vandy Berten

Consultant Recherche chez Smals depuis mai 2013. Vandy était auparavant Professeur Assistant à l'ULB, où il enseignait les langages de programmation. Il a obtenu une thèse de doctorat dans la même institution en 2007. Depuis quelques années, il s'est spécialisé dans les techniques de Data Science, incluant le "(social) network analytics", le "data quality", le "GIS analytics", le "machine learning", en particulier dans le domaine de la détection de la fraude.

Leave a Reply

Your email address will not be published. Required fields are marked *