2016-11-21 12 views
0

Nach der Lektüre durch Traversal-API auf einer anderen Maschine laufen, ich mochte die Idee, das Konzept der BranchSelector, Expander und Uniqueness. Es ist etwas wie beschreiben, wie Traversal gemacht werden sollte. Mit anderen Worten, ich hatte das Gefühl, eine deklarative Beschreibung der durchzuführenden Durchquerung zu geben. Die flüssige API ist für diesen Zweck gut geeignet. Es scheint jedoch, dass es nur verwendet werden kann, um auf neo4j zu zielen, auf dessen Datenbank über das Dateisystem zugegriffen werden kann, das heißt, wir müssen graph.db Ordnerpfad angeben. Dies bedeutet im Wesentlichen, dass wir es nur im eingebetteten Modus verwenden können. Können wir die Traversal-API verwenden, um eine Traversierung auf einem Graph auszuführen, der auf einer Remote-Maschine ausgeführt wird?Neo4j Traversal-API Traversal auszuführen auf Neo4j

Vor allem möchte ich den Komfort der API (BranchSelector, Expander und Uniqueness) verfügbar haben, um Traversieren durchzuführen.

Ich lese, dass wir Schraube verwenden können, um auf eingebettetes neo4j zuzugreifen. Dies scheint jedoch nicht zu bedeuten, dass wir embedded neo4j von einer entfernten Maschine verwenden können.

Es scheint also, dass sie keine Traversal-API verwenden können, wenn ich keinen Zugriff auf den physischen (oder Verzeichnis-) Speicherort der Graphdatenbank haben kann. Ist es so?

Antwort

0

Die Traversal API kann nur verwendet werden, wenn der Code mit den Daten verbunden ist, sonst wäre es normalerweise schrecklich langsam. Das Problem ist, dass es nicht rein deklarativ ist, da Sie Implementierungen von PathExpander, Evaluator usw. bereitstellen können, anstatt nur vordefinierte Konstanten zu verwenden.

Allerdings gibt es mehrere Möglichkeiten, colocated diesen Code aufweist:

Siehe APOC für eine Sammlung von Verfahren, die von der Gemeinde Neo4j entwickelt, darunter auch einige Überquerungen.

+0

Sie meinen also, wir können benutzerdefinierte Traversals als Prozeduren schreiben und sie per Fernzugriff per Chiffre aufrufen? Ist das der bevorzugte/gute/empfohlene Ansatz, wenn wir Traversal-API überhaupt verwenden müssen? auch irgendwelche Nachteile dieses Ansatzes? – Mahesha999

+0

Wenn Ihr Traversal in eine Prozedur oder Funktion passt, wäre das meine empfohlene Vorgehensweise. Eine nicht verwaltete Erweiterung ist vielseitiger, aber es ist auch (ein bisschen) mehr Arbeit, da Sie einen JAX-RS-Controller verfügbar machen müssen, und es ist auf HTTP beschränkt (kein Bolt-Treiber). Die Unterstützung für nicht verwaltete Erweiterungen kann auslaufen, wenn Prozeduren und Funktionen die meisten Anwendungsfälle erfüllen, insbesondere angesichts des Push in Richtung Bolt und intelligenterer Clients in 3.1 (siehe "Built-in Load Balancing" im Artikel 3.1 Beta) (https://neo4j.com/blog/neo4j-3-1-beta-release/)). –