Сброс и восстановление данных из / в разные версии Neo4j - PullRequest
1 голос
/ 06 мая 2019

Я работаю над проектом, поддерживаемым Neo4j. Я хотел бы найти способ выгрузить базу данных и восстановить ее межсерийным способом (например, выгрузить данные из версии 2.* и загрузить их в версию 3.5.6 или наоборот!).

Мне нужен способ извлечения и перезагрузки данных, который поддерживается как можно большим числом версий Neo4j. Я проверил внешние библиотеки, такие как APOC, но похоже, что они недоступны для более старых версий Neo4j. В прошлом я также пытался жестоко копировать файлы данных, но это приводило к ошибкам, если версия Neo4j слишком далека.

Лучшее решение, которое я нашел до сих пор, - это использование REST API Neo4j, как описано в этом сообщении в блоге . Я выполняю запрос, как этот

curl -H accept:application/json -H content-type:application/json \
  -d '{"statements":[{"statement":"MATCH ... RETURN ..."}]}' \
  http://localhost:7474/db/data/transaction/commit

для извлечения узлов и ссылок (а также их меток и свойств) и их сериализации в файлах JSON. Затем я обрабатываю такие JSON с помощью специального скрипта Python для перезагрузки данных в новой базе данных Neo4j. Конечно, конечные индексы или ограничения должны быть воссозданы в месте назначения.

Мне интересно, есть ли способ сделать это умнее, чем мой, чтобы избежать проблем между версиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...