2017-10-23 2 views
0

Ich benutze Neo4j Grafik, um Graph-Datenbank zu erstellen. Verwenden des Befehls load csv zum Erstellen einer Beziehung. Es dauert 2 Stunden, um eine Million Datenzeilenbeziehung in eine beliebige Beziehung zu laden. Gibt es eine andere Möglichkeit, Beziehungen schneller zu erstellen?Neo4j Beziehung schreiben Prozess

+2

Können Sie Ihre CSV Abfrage cspher laden? Hast du einige Indizes/Constraints erstellt? – logisima

+0

q = '' 'Durch die periodische COMMIT LOAD CSV-Header aus "file: ///raw.csv" als Zeilen MATCH (tweet_id: tweet_id {Name: row.tweet_id}) MATCH (indexed_date: indexed_date {Name: row.indexed_date}) MERGE (indexed_date) - [date_i_tweet: date_i_tweet] -> (tweet_id); ''‘ graph_3.cypher.execute (q) –

+0

i Indizes auf tweet_id erstellt haben –

Antwort

1

CREATE ist schneller als MERGE.Und die Verwendung von MERGE oder MATCH kann zu "Eager Operation" führen. Bitte gehen Sie durch diese blog für mehr Referenz.

Als eine Arbeit können Sie versuchen, die folgende Abfrage.

Sie können WITH in der Abfrage verwenden, um das cartisianische Produkt und die gesamte 'Zeile' zu vermeiden. Versuchen Sie, Index zu "indexed_date" hinzuzufügen und versuchen Sie die folgende Abfrage.

USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///raw.csv" AS row 
MATCH (tweet_id:tweet_id {name: row.tweet_id}) with tweet_id 
MATCH (indexed_date:indexed_date {name: row.indexed_date}) with indexed_date,tweet_id 
CREATE (indexed_date)-[date_i_tweet:date_i_tweet]->(tweet_id); 

this helps

+0

Dank dieser helps.Just eine Frage. Hast du an einem Echtzeit-Update auf neo4j gearbeitet? Wenn die Datengröße zunimmt, ist der Aktualisierungsprozess niedriger. Irgendwelche Vorschläge zum Aktualisieren des Garph schneller? –

+0

Ja, die Aktualisierung ist langsam. Versuchen Sie, die Daten zu begrenzen oder sich auf einen Satz von Eigenschaften/Knoten gleichzeitig zu konzentrieren. Die Geschwindigkeit des Updates hängt auch von Ihrem Schema ab. – techie95

0

Für Ihre Abfrage, sollten Sie haben:

  • eine eindeutige Einschränkung auf tweet_id: CREATE CONSTRAINT ON (n:tweet_id) ASSETS n.tweet_id IS UNIQUE
  • eine eindeutige Einschränkung oder ein indexed_date: CREATE CONSTRAINT ON (n:indexed_date) ASSETS n.indexed_date IS UNIQUE

Prost

+0

Danke an alle. Das hilft. –

Verwandte Themen