Я работаю над проектом, поддерживаемым 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. Конечно, конечные индексы или ограничения должны быть воссозданы в месте назначения.
Мне интересно, есть ли способ сделать это умнее, чем мой, чтобы избежать проблем между версиями.