Ich habe einen ziemlich großen Datensatz, ~ 68 Millionen Datenpunkte. Die Daten sind derzeit in MongoDB gespeichert und ich habe ein Java-Programm geschrieben, das die Daten durchläuft, um Datenpunkte miteinander zu verbinden und sie mithilfe von Cypher-Befehlen in der Neo4j-Datenbank zu speichern. Ich habe dieses Programm mit einem Testsatz von Daten (~ 1,5 Millionen) ausgeführt und es funktionierte, lief es über Nacht. Wenn ich jetzt versuche, den gesamten Datensatz zu importieren, ist das Programm extrem langsam. Lief das ganze Wochenende und nur ~ 350.000 Datenpunkte haben es geschafft. Durch einige kurze Tests scheint Neo4j der Flaschenhals zu sein. Es ist eine halbe Stunde her, seit ich das Java-Programm gestoppt habe, aber die CPU-Auslastung von Neo4j liegt bei 100% und neue Knoten werden noch hinzugefügt (aus dem Java-Programm). Gibt es diesen Engpass überhaupt zu überwinden? Ich habe über Multithreading nachgedacht, aber seit ich versuche, ein Netzwerk zu erstellen, gibt es viele Abhängigkeiten und nicht threadsichere Operationen. Danke für Ihre Hilfe!Importieren von massiven Datensatz zu Neo4j ist extrem langsam
EDIT: Die Daten, die ich habe, ist eine Liste von Benutzern. Die enthaltenen Daten sind die Benutzer-ID und ein Array mit den IDs der Freunde des Benutzers. Meine Cypher Anfragen schauen ein wenig wie folgt aus: "u:USER {id:" + currentID + "}) CREATE (u)-[:FRIENDS {ts:" + timeStamp}]->(u" + connectionID + ":USER {id:" + connectionID + "})"
Sorry, wenn dies wirklich schrecklich, ziemlich neu in diesem
können Sie einige der Beispielabfragen teilen. Wenn Sie MERGE oder MATCH verwenden, achten Sie darauf, Indizes oder bessere Einschränkungen für diese Label + -Eigenschaftskombinationen zu haben. –
Ich denke, wenn Sie Java verwenden, sollten Sie Java Neo4j API verwenden, das ist viel schneller. Die Chiffre Abfrage muss übersetzt werden. – Mvde