В настоящее время у нас есть 2 базы данных Neo4j в нашем приложении. Мы используем Spring Data Neo4j (SDN).Каков наилучший способ синхронизации данных между 2 базами данных Neo4j?
Первая база данных - это наша база данных STAGING, а другая база данных LIVE. Это больше для целей Versioning и для предотвращения использования пользователем базы данных LIVE.
У нас около 50 000 узлов и 150.000 отношений. Наша область STAGING предназначена для небольших подмножеств пользователей, и мы разрешаем делать операции CRUD только в STAGING. После того, как пользователь завершит/подтвердит данные в STAGING, мы переместим базу данных в базу данных LIVE. LIVE предназначен только для базы данных READ ONLY, CRUD разрешается только во время процесса синхронизации.
Мне интересно, как лучше всего синхронизировать данные между обеими базами данных и синхронизацией, это должно позволить инкрементные обновления.
Я попытался выполнить синхронизацию узла по узлу с помощью Cypher Query + SDN, но я попал в блокпост, он занимает слишком много времени.
@Query("START n=node:ItemCode('code:*') "
+ "WHERE has(n.status) AND n.status = 'ACTIVE') "
+ "RETURN n");
public Iterable<Item> getAllActiveItems();
На SyncService класса, который делает процесс синхронизации от STAGING ЖИТЬ дб:
Iterable<Item> items = stagingRepo.getAllActiveItems();
for(Item item:items) {
Item item = liveRepo.findItem(item.getCode());
if(item == null) {
//create item
} else {
//update item
}
}
[UPDATE] На основании ответа по Peter Neubauer, я хотел бы продолжить изучение, если есть связь с базой данных так что запрос Cypher может запускаться в двух базах данных за один раз.
Любые идеи приветствуются.
Спасибо, Gunawan
Добро пожаловать в stackoverflow.com. К сожалению, этот сайт предназначен только для программирования вопросов. Ваш вопрос, однако, касается администрирования базы данных. Вам лучше разместить его на dba.stackexchange.com. Это сказано: пытались ли вы просто скопировать базу данных на уровень файловой системы? – Philipp
Кстати, это связано с вопросом программирования. Я не мог копировать файлы db для синхронизации между базами данных, так как в любом случае требуется выполнить частичную синхронизацию (только на определенных узлах, например, узлы с статусом ACTIVE), спасибо за ваш ввод. –
Вы когда-нибудь находили решение для этого? Я столкнулся с той же проблемой – sak