Ich habe derzeit eine nur angehängte Baumdatenstruktur in Java. Der Hauptzweck dieses Baums besteht darin, einen Zeiger auf den längsten Zweig zu halten. Ich habe dies implementiert, indem ich einen Verweis auf die letzten Knoten in den längsten Zweigen habe, die beim Einfügen neuer Knoten in den Baum aktualisiert werden.Den längsten Zweig eines Baumes in Neo4j finden
Aus Performance- und Persistenzgründen möchte ich diese Implementierung mithilfe der Neo4j-Java-API zu Neo4j verschieben. Beim Durcharbeiten der Dokumente konnte ich keine praktische Lösung finden, um eine Neo4j-Datenbank für den längsten Zweig abzufragen. In meiner Implementierung kann ich versichern, dass der Graph ein n-ary-Baum ist.
Was ist die bevorzugte Lösung in Neo4j, um den längsten Ast in einem solchen Baum zu finden?
- einen Zeiger auf die letzten Knoten beibehalten, wie ich es in meiner Java-Implementierung mache?
- einen Algorithmus formulieren, um den längsten Pfad zu finden und dies mit der Traversal-API oder über eine Abfrage von Chiffren zu implementieren?
- einige eingebaute Funktionalität in Neo4j, die ich noch nicht gefunden habe?
Es gibt einen ausgezeichneten Blogpost und ein sortiertes Github-Projekt zu diesem Thema. Überprüfen Sie https://github.com/maxdemarzi/neo_roots. Max erkundet alle Optionen (von Cypher über Traversal bis zu nicht verwalteter Erweiterung), so dass Sie auswählen können, was Ihnen passt (und in Bezug auf die Leistung akzeptabel ist). –
Der Blogpost ist https://maxdemarzi.com/2016/02/20/speeding-up-traversals/ –