2016-10-21 2 views
0

Ich habe zwei verschiedene Neo4j-Server und führen die gleichen Abfragen auf ihnen in der gleichen Reihenfolge.Reset Node-Zähler auf Neo4j-Shell-Dump

Ich möchte überprüfen, ob beide Datenbanken gleichwertig sind, für diesen Zweck erzeuge ich einen Dump der gesamten Datenbank (und ich weiß, dies ist keine echte Alternative für große Datenbanken) mit bin/neo4j-shell -c "dump" > /home/my_user/dump.txt und sie vergleichen die MD5-Hashes generiert mit md5sum dump.txt.

Die erzeugten dump.txt Dateien sehen ziemlich identisch aus, außer dass die Variablen, die die Knoten identifizieren, manchmal unterschiedlich sind, was natürlich für jede Datei völlig unterschiedliche Hashes erzeugt. Beispiel:

dump.txt # 1

begin 
commit 
begin 
create (_6:`Person` {`name`:"Arthur", `title`:"King"}) 
create (_7:`Person` {`name`:"Saladin", `title`:"Sultan"}) 
create (_8:`Army` {`name`:"Saxon army"}) 
create (_6)-[:`FIGHTS_AGAINST`]->(_8) 
create (_7)-[:`LEADS`]->(_8) 
; 
commit 

dump.txt 2 #

begin 
commit 
begin 
create (_7:`Person` {`name`:"Arthur", `title`:"King"}) 
create (_8:`Person` {`name`:"Saladin", `title`:"Sultan"}) 
create (_9:`Army` {`name`:"Saxon army"}) 
create (_7)-[:`FIGHTS_AGAINST`]->(_9) 
create (_8)-[:`LEADS`]->(_9) 
; 
commit 

Ich vermute, jetzt funktioniert es auf der Grundlage der Anzahl der Knoten der Datenbank bisher hatte und wenn ich es mit MATCH (n) DETACH DELETE n reinige, setzt es diesen Zähler nicht zurück. Der einzige Weg, den ich gefunden habe, ist das Neustarten des Servers, was nicht gerade praktisch ist.

Ich denke, der einfachste Weg, um mein Problem zu lösen, wäre ein Skript, das alle Zahlen mit einem vorangestellten _ löscht, aber würde es nicht in sehr spezifischen Situationen falsch positive Ergebnisse generieren? Wie wenn die Abfragen sehr ähnlich und in der gleichen Reihenfolge, aber verschiedene Knoten aktualisiert wurden.

Hat jemand eine bessere Alternative? Vielleicht ein Befehl, um diesen Knotenzähler zurückzusetzen?

Antwort

0

Ending mit regulären Ausdrücken auf Bash, um das gewünschte Ergebnis zu erreichen, alle Knotenbezeichner aus den Dateien zu entfernen.

cat dump.txt | sed s/\(_[0-9]*/\(/g > dump_new.txt

, die von einem dump.txt wie diese:

begin 
commit 
begin 
create (_18:`Person` {`name`:"Arthur", `title`:"King"}) 
create (_19:`Person` {`name`:"Saladin", `title`:"Sultan"}) 
create (_20:`Army` {`name`:"Saxon army"}) 
create (_18)-[:`FIGHTS_AGAINST`]->(_20) 
create (_19)-[:`LEADS`]->(_20) 
; 
commit 

Erzeugt eine dump_new.txt wie diese:

begin 
commit 
begin 
create (:`Person` {`name`:"Arthur", `title`:"King"}) 
create (:`Person` {`name`:"Saladin", `title`:"Sultan"}) 
create (:`Army` {`name`:"Saxon army"}) 
create()-[:`FIGHTS_AGAINST`]->() 
create()-[:`LEADS`]->() 
; 
commit