Сброс счетчика узлов на neo4j-дампе оболочки

#neo4j #graph-databases

#neo4j #графические базы данных

Вопрос:

Я запускаю два разных сервера Neo4j и выполняю на них одни и те же запросы в том же порядке.

Я хочу проверить, эквивалентны ли обе базы данных, для этой цели я создаю дамп всей базы данных (и я понимаю, что это не реальная альтернатива для огромных баз данных) с помощью bin/neo4j-shell -c "dump" > /home/my_user/dump.txt и они сравнивают хэши md5, сгенерированные с помощью md5sum dump.txt .

Сгенерированные dump.txt файлы выглядят практически идентично, за исключением того, что переменные, которые идентифицируют узлы, иногда отличаются, что, конечно, генерирует совершенно разные хэши для каждого файла. Пример:

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
  

Я предполагаю, что прямо сейчас это работает на основе количества узлов, которые были у базы данных до сих пор, и когда я очищаю ее с помощью MATCH (n) DETACH DELETE n , это не сбрасывает этот счетчик. Единственный способ, который я нашел для его сброса, — перезапустить сервер, что не совсем практично.

Я думаю, что самым простым способом решить мою проблему было бы создать скрипт, который стирает все числа, которым предшествует _ , но не будет ли это в очень специфических ситуациях генерировать ложные срабатывания? Например, если запросы были очень похожи и в том же порядке, но обновляли разные узлы.

У кого-нибудь есть альтернатива получше? Может быть, команда для сброса этого счетчика узлов?

Ответ №1:

В итоге я использовал регулярные выражения в Bash для достижения желаемого результата удаления всех идентификаторов узлов из файлов.

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

Который из dump.txt подобного этому:

 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
  

Генерирует dump_new.txt подобный этому:

 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