vege - stock.adobe.com

Infinigraph : Neo4j promet des graphes de 100 To

Avec Infinigraph, Neo4j entend aligner les capacités de sa base de données orientée graphes avec les enjeux de ses grands clients, dont ceux qui souhaiteraient combiner charges de travail analytiques et transactionnelles, graphes de connaissances et IA agentique.

La semaine dernière, Neo4j, éditeur d’une base de données orientée graphe, a présenté Infinigraph.

Infinigraph est une « nouvelle architecture » accessible à travers son offre self-managed et le sera bientôt à travers la plateforme cloud Neo4j AuraDB. La promesse, exécuter des charges de travail opérationnelles et analytiques graphes à travers un seul système capable de gérer jusqu’à 100 To de données. Ô miracle, celle-ci ne nécessiterait pas de fragmenter le graphe, de dupliquer l’infrastructure et ne compromettrait pas les performances, avance Neo4j.

De même, la base de données garantirait le respect des principes ACID : « chaque lecture, écriture et mise à jour est cohérente, fiable et récupérable, même avec des milliards de relations et des milliers de requêtes simultanées exécutées en temps réel », prétend l’éditeur.

Cette annonce, selon Sudhir Hasbe, président des technologies et Chief Product Officer chez Neo4j, s’inscrit dans un contexte double. Il y a d’une part l’élargissement des patrimoines de données de certains grands clients, dont les banques, les membres de l’industrie pharmaceutique et de l’automobile. Des patrimoines où les objets seraient « de plus en plus interconnectés ». De l’autre, il y a une volonté d’aligner l’architecture du système orienté graphes sur celles des « lakehouse » cloud fournis par Snowflake, Databricks, GCP, Azure et AWS.

« Lorsque je suis arrivé chez Neo4j, j’avais cette vision : en fournissant une technologie de graphes en plus de ces grands entrepôts de données, on pouvait créer beaucoup de valeur pour les entreprises », déclare-t-il auprès du MagIT.

Enfin, le leader de ce marché – considérée comme une niche – doit se mettre à la page face à des concurrents plus jeunes, dont TigerGraph, ArangoDB et Puppygraph ; ou les solutions des acteurs cloud, comme AWS Neptune ou Azure ComosDB.

Deux mécanismes de sharding pour le prix d’un

La clé de cette architecture Infinigraph ne serait autre que le sharding.

« Un modèle de graphe de propriétés représente les données sous forme de nœuds (entités) et de relations (connexions entre les entités), qui peuvent tous deux avoir des propriétés (paires clé-valeur) », rappelle German San Augustin, Senior product manager chez Neo4j dans un billet de blog.

Neo4j est par essence une base de données noSQL, donc elle est animée par un système de paires clés-valeurs.

« Les stratégies traditionnelles de mise à l’échelle horizontale supposent que vous devez diviser le graphe lui-même. Mais les relations sont l’élément vital des graphes, et elles n’aiment pas être séparées », ajoute-t-il.

Ici, l’éditeur se serait concentré sur les « véritables points de douleurs » des utilisateurs, à savoir la gestion des nœuds et relations massifs et l’inefficience de la mise en cache au moment d’interroger ces gros graphes.

Cette stratégie de sharding s’appuie deux types d’objets au sein d’un cluster autonome Neo4j. Il y a des shards de graphe qui stockent les données relatives à la typologie, les nœuds, les relations, les labels et les identifiants uniques des données du graphe. Puis, il y a les shards des propriétés, donc des clés-valeurs qui sont réparties de manière égale à travers les nœuds du cluster à l’aide d’une fonction de hachage. En résumé, Neo4j a mis en place deux mécanismes de sharding intercommunicants.

« Chaque entité du shard de graphe a exactement une entité correspondante dans un shard de propriété », relate German San Augustin.

Cette séparation permet une montée à l’échelle indépendante des shards de propriétés et des shards de graphe. En clair, dans certains graphes, il y a davantage de données descriptives que de nœuds et de relations.

La tolérance aux pannes et la cohérence sont assurées par le protocole RAFT. Malgré tout, les utilisateurs n’interrogent qu’une seule base de données et exploitent un seul langage : Cypher. Sous le capot, la requête est divisée en deux étapes. D’abord, une « traversée » des shards cibles est effectuée, puis des lookups des propriétés sont récupérés en lot depuis le deuxième mécanisme de sharding associée.

« Lorsqu’une requête demande des propriétés, le système les récupère automatiquement à partir du fragment (shard) approprié, tandis que le parcours reste local au fragment de topologie », assure German San Augustin.

« J’appelle ça un “index graphe », résume pour sa part Sudhir Hasbe, auprès du MagIT. « Nous avons donc une machine qui indexe la topologie des graphes. Si vous voulez parcourir le graphe et dire “voici le client, trouve tous les produits qu’il a consultés”, nous pouvons rapidement “sauter” de nœud en nœud, puis nous divisons toutes les propriétés sur plusieurs shards », poursuit-il. « Comme nous avons la carte principale sur une seule machine, cela nous permet de garantir la conformité des actifs et de gérer les transactions. Et nous savons exactement que la connexion est maintenue entre tous les éléments ».

« L’implémentation du partitionnement (sharding) par Neo4j pour préserver la structure du graphe tout en permettant les charges de travail analytiques et transactionnelles à une échelle massive semble distinctive », considère Stephen Catanzano, analyste chez Enteprise Strategy Group, auprès de SearchDataManagement, une publication sœur du MagIT. « Neo4j avait précédemment introduit des capacités d’exécution parallèle pour des analyses plus rapides, mais Infinigraph porte cela à un niveau supérieur ».

Si Neo4j entend offrir davantage de performances à ses grands utilisateurs, il a aussi pour enjeux de simplifier l’administration de son système réputé pour sa complexité.

Des avantages à large échelle, mais pas de miracle

Le sharding n’est pas nouveau chez l’éditeur. Il est apparu avec la version 4.0, lancée en 2020. La simplification de la gestion des clusters a été entamée avec la « release » 5.0, en 2022.

En 2024, l’éditeur a adopté un unique format de stockage en bloc afin de colocaliser les objets du graphe et ses propriétés. Celui-ci serait plus efficient en matière d’I/O et permettait de réduire les opérations de lecture que son précédent système.

Pour Sudhir Hasbe, il faut distinguer plusieurs points. Dans la version 4.0, le sharding était associée à une fonctionnalité de fédération de requêtes, nommée Fabric.

« Fabric était davantage un mécanisme de fédération de requêtes par-dessus plusieurs graphes shardés », explique-t-il. « C’était aux clients de faire le partitionnement eux-mêmes. Par exemple, certaines banques maintiennent des graphes par pays, ce qui leur permettait de faire des agrégations », ajoute-t-il.

En matière de haute disponibilité, le Chief Product Officer estime que Neo4j en est à sa troisième génération de plateforme avec Infinigraph. « La première génération consiste en la réplication d’un graphe sur plusieurs machines afin d’obtenir un début de lecture élevé et de la tolérance aux pannes. La deuxième génération est basée sur le clustering autonome qui permet d’exécuter de nombreuses bases de données sur la même infrastructure partagée ». La troisième ajoute le sharding automatisée.

« Avec Infinigraph, le sharding est opéré automatiquement pour nos clients, ce qui leur permet de maintenir un seul graphe à très large échelle en conservant les mêmes outils et les API », compare-t-il.

Cependant, la nouvelle architecture ne supplanterait pas les atouts des précédentes. « Ma première recommandation aux utilisateurs est toujours la suivante : si votre graphe peut tenir sur une seule machine, faites-le. Utilisez le graphe répliqué », lance Sudhir Hasbe. « N’essayez pas de distribuer le graphe si vous n’en avez pas besoin, car chaque fois que vous avez un système distribué, il y a une surcharge de coordination, de temps de saut, etc. C’est naturel », argue-t-il.

Le changement apporté par Infinigraph ne vient pas sans surcoût.

« L’avantage des bases de données distribuées apparaît lorsque vos données sont volumineuses et que vous pouvez maintenant utiliser beaucoup de puissance de calcul sur ces données à travers plusieurs machines pour exécuter le traitement ». 

Simplifier le mariage des graphes de connaissances et de l’IA agentique

Cette troisième génération est non seulement taillée pour les cas d’usage existant autour de la lutte antifraude, la gestion de supply chain chez les groupes pharmaceutiques et les fabricants automobiles, mais aussi pour le déploiement de systèmes graphRAG.

De fait, Neo4j a introduit la prise en charge des vecteurs en 2023. « Nous avons reçu des commentaires de certains de nos plus gros clients dans le domaine des sciences de la vie qui utilisent nos services pour créer des graphes de connaissances. Ils nous ont dit qu’ils voulaient y intégrer des dizaines de millions de documents sous forme de vecteurs. Cela n’était pas possible avec notre architecture existante », note-t-il. « Cela signifie que vous pouvez regrouper des données structurées et non structurées dans un graphe, puis poser des questions vraiment intéressantes ».

Dans ce schéma, le graphe de connaissances représente plusieurs concepts. Chaque « chunk » d’un document vectorisé peut être lié à sa source. Puis, il est possible d’y extraire des entités nommées – des personnes, des entreprises, des éléments chimiques, etc. – et de reconstituer leurs affinités.

Cela va dans le sens des évolutions récentes d’AuraDB, la plateforme de DBaaS de Neo4j.

« Nous essayons d’obtenir de plus en plus de simplification. Maintenant, dans Aura, vous pouvez littéralement passer de jeux de données dans Databricks, Snowflake, BigQuery – choisissez n’importe lequel – à une modélisation de graphe alimentée par l’IA. Nous créons automatiquement un modèle de données orienté graphe complet basé sur le schéma entrant », décrit le CPO. « À partir de là, vous pouvez en seulement deux clics importer toutes ces données dans Neo4j. Ensuite, vous pouvez utiliser Bloom ou Explore pour examiner toutes les données. Nous avons aussi des tableaux de bord propulsés par l’IA ».

La suite est évidemment à chercher du côté de l’IA agentique. « Nous annoncerons prochainement des choses en matière de simplification de l’expérience de conception », promet le Chief Product Officer. « Beaucoup de développeurs se sentent dépassés quand ils construisent des agents IA. Vous devez comprendre ce que fait un LLM, comment le graphe de connaissances peut être utilisé, comment orchestrer un moteur de raisonnement et les outils associés. Les ingénieurs IA adorent expérimenter, mais le développeur ne veut pas subir ce niveau de complexité ».

Pour approfondir sur Base de données