Open Source Microsoft Graph Engine übernimmt Neo4j

Manchmal sind die Beziehungen zwischen den von Ihnen gesammelten Daten wichtiger als die Daten selbst. (Siehe: Facebook monetarisiert Ihre Freundesliste.) Dann ist ein Grafikverarbeitungssystem praktisch. Es ist eine wichtige, aber oft schlecht verstandene Methode, um zu untersuchen, wie Elemente in einem Datensatz miteinander zusammenhängen.

Microsoft hat diesen Bereich seit mindestens 2013 untersucht, als es einen Artikel veröffentlichte, der das Trinity-Projekt beschreibt, eine Cloud-basierte In-Memory-Graph-Engine. Die Früchte der Bemühungen, bekannt als Microsoft Graph Engine, sind jetzt als MIT-lizenziertes Open Source-Projekt als Alternative zu Neo4j oder dem kürzlich angekündigten JanusGraph der Linux Foundation erhältlich.

Alles ist verbunden

Microsoft nennt Graph Engine (GE) "sowohl einen RAM-Speicher als auch eine Berechnungs-Engine". Daten können in GE eingefügt und mit hoher Geschwindigkeit abgerufen werden, da sie im Speicher bleiben und nur bei Bedarf auf die Festplatte zurückgeschrieben werden. Es kann wie Memcached als einfacher Schlüsselwertspeicher verwendet werden, Redis ist jedoch möglicherweise der bessere Vergleich, da GE Daten in stark typisierten Schemas (Zeichenfolge, Ganzzahl usw.) speichert.

Der Teil der Gleichung "Berechnungsmaschine" bedeutet, dass GE verteilte Algorithmen implementiert, die über Knoten in C # geschrieben sind. Es ist nicht sofort für eine bestimmte Art von Graph-Algorithmus optimiert, daher wird es wahrscheinlich diejenigen ansprechen, die ihre eigenen Graph-Exploration-Algorithmen von Grund auf schreiben möchten - oder einfach ihre eigenen verteilten Algorithmen schreiben möchten.

"Anstatt zu versuchen, einen umfassenden Satz integrierter Berechnungsmodule bereitzustellen", heißt es in der Dokumentation von Microsoft, "versucht GE, generische Bausteine ​​bereitzustellen, damit wir solche Module einfach erstellen können." Diese Blöcke enthalten ein System für die synchrone und asynchrone Nachrichtenübermittlung sowie die LIKQ-Diagrammabfragesprache, die bereits von der Academic Graph Search-API in Microsoft Cognitive Services verwendet wird.

Verschiedene Wege durch das Labyrinth

Wie sieht es mit der führenden Open-Source-Grafikdatenbank Neo4j aus? Zum einen ist Neo4j schon länger auf dem Markt und verfügt über eine bestehende Nutzerbasis. Es ist auch sowohl in einer Open Source Community Edition als auch in einem kommerziellen Produkt verfügbar, während GE derzeit nur ein Open Source Projekt ist.

Allerdings unterstützt nur die kommerzielle, unternehmensorientierte Edition von Neo4j Sharding und Replikation. Im Gegensatz dazu wird GE in seiner Standard-Open-Source-Inkarnation geclustert, obwohl das Clustering sowohl auf Neo4j als auch auf GE eine manuelle Einrichtung erfordert. Im Fall von GE müssen die Rollen für jeden Knoten im Cluster (Server und optional abfrageaggregierende Proxys) je nach Anwendungsfall manuell konfiguriert werden.

Eine weitere verteilte Grafikdatenbank, die es wert ist, mit GE verglichen zu werden, ist JanusGraph, ein neues Projekt unter der Schirmherrschaft der Linux Foundation mit Beiträgen von Google, Hortonworks und IBM. Es wurde entwickelt, um eng mit dem Hadoop-Ökosystem zusammenzuarbeiten und es zu nutzen. Elasticsearch und Lucene können als Indexierungs-Engines verwendet werden, und Cassandra und HBase können als Datenspeicher verwendet werden. Bei GE müssen zuerst Daten importiert werden.

Was Microsoft mit GE anscheinend anstrebt, ist kein direkter Wettbewerb mit diesen Projekten. Stattdessen ist GE eine verteilte Datenspeicherinfrastruktur, die neue Daten empfängt und die Diagrammberechnung als einen ihrer zahlreichen Vorteile bereitstellt. Dank seiner liberalen Lizenzierung kann es auch problemlos in andere Produkte umgerüstet oder für das Hosting in großem Maßstab verwendet werden. Es ist nicht klar, ob Microsoft GE als Teil eines seiner eigenen Systeme verwendet hat (obwohl es LIKQ verwendet hat, wie oben erwähnt).

Wenn diejenigen, die auf Nicht-Microsoft-Plattformen aufbauen, daran interessiert sind, Graph Engine auszuprobieren, wird laut einem der Entwickler in Kürze eine plattformübergreifende Unterstützung für Linux / BSD angeboten.