Microsoft Graph Engine Open Source prend Neo4j

Parfois, les relations entre les données que vous avez collectées sont plus importantes que les données elles-mêmes. (Voir: Facebook monétisant votre liste d'amis.) C'est à ce moment-là qu'un système de traitement graphique est utile. C'est une méthode importante mais souvent mal comprise pour explorer la manière dont les éléments d'un ensemble de données sont interdépendants.

Microsoft explore ce domaine depuis au moins 2013, lorsqu'il a publié un article décrivant le projet Trinity, un moteur graphique en mémoire basé sur le cloud. Les fruits de cet effort, connus sous le nom de Microsoft Graph Engine, sont désormais disponibles en tant que projet open source sous licence MIT comme alternative à Neo4j ou à JanusGraph récemment annoncé par la Linux Foundation.

Tout est connecté

Microsoft appelle Graph Engine (GE) comme «à la fois une mémoire RAM et un moteur de calcul». Les données peuvent être insérées dans GE et récupérées à grande vitesse puisqu'elles sont conservées en mémoire et ne sont réécrites sur le disque que si nécessaire. Il peut fonctionner comme un simple magasin clé-valeur comme Memcached, mais Redis peut être la meilleure comparaison, car GE stocke les données dans des schémas fortement typés (chaîne, entier, etc.).

La partie «moteur de calcul» de l'équation signifie que GE implémente des algorithmes distribués entre les nœuds, écrits en C #. Il n'est pas optimisé pour un type d'algorithme graphique spécifique, il plaira donc probablement à ceux qui souhaitent écrire leurs propres algorithmes d'exploration de graphiques à partir de zéro - ou simplement écrire leurs propres algorithmes distribués.

«Au lieu d'essayer de fournir un ensemble exhaustif de modules de calcul intégrés», déclare la documentation de Microsoft, «GE essaie de fournir des blocs de construction génériques pour nous permettre de construire facilement de tels modules». Ces blocs incluent un système de transmission de messages synchrone et asynchrone, ainsi que le langage de requête graphique LIKQ qui est déjà utilisé par l'API Academic Graph Search dans Microsoft Cognitive Services.

Différentes façons à travers le labyrinthe

Comment tout cela se compare-t-il à la principale base de données de graphes open source, Neo4j? D'une part, Neo4j est sur le marché depuis plus longtemps et dispose d'une base d'utilisateurs existante. Il est également disponible dans une édition communautaire open source et un produit commercial, alors que GE n'est qu'un projet open source pour le moment.

Cela dit, seule l'édition commerciale et orientée entreprise de Neo4j prend en charge le partitionnement et la réplication. GE, en revanche, est regroupé dans son incarnation open source par défaut, bien que le clustering sur Neo4j et GE nécessite une configuration manuelle. Dans le cas de GE, les rôles de chaque nœud du cluster (serveurs et, éventuellement, proxys d'agrégation de requêtes) doivent être configurés manuellement en fonction du cas d'utilisation.

JanusGraph, un nouveau projet parrainé par la Linux Foundation avec des contributions de Google, Hortonworks et IBM, est une autre base de données de graphiques distribuée à comparer à GE. Il a été conçu pour travailler en étroite collaboration avec l'écosystème Hadoop et en tirer parti. Elasticsearch et Lucene peuvent être utilisés comme moteurs d'indexation, et Cassandra et HBase peuvent être utilisés comme magasins de données. Avec GE, les données doivent d'abord y être importées.

Ce que Microsoft semble viser avec GE n'est pas une concurrence frontale avec ces projets. Au lieu de cela, GE est un élément d'infrastructure de stockage de données distribué qui reçoit de nouvelles données et fournit le calcul de graphes comme l'un de ses multiples avantages. Sa licence libérale le rend également facilement réaménageable dans d'autres produits ou facilement réutilisé pour l'hébergement à grande échelle. Il n'est pas clair si Microsoft a utilisé GE dans le cadre de l'un de ses propres systèmes (bien qu'il ait utilisé LIKQ, comme indiqué ci-dessus).

Si ceux qui s'appuient sur des plates-formes non-Microsoft sont intéressés à essayer Graph Engine, la prise en charge multiplateforme de Linux / BSD sera bientôt disponible, selon l'un des développeurs.