Как синхронизировать удаленную базу данных с локальной базой данных в JAVA - PullRequest
1 голос
/ 12 сентября 2009

Мне нужно создать проект, в котором есть две базы данных - локальная и удаленная. Удаленная база данных должна ежедневно синхронизироваться с локальной базой данных, отражая изменения, внесенные в локальную базу данных. Я использую JAVA. База данных ORACLE. У меня есть код JAVA / JPA, который выполняет операции CRUD в локальной базе данных. Как синхронизировать изменения в удаленной базе данных.

Ответы [ 5 ]

5 голосов
/ 12 сентября 2009

Я бы не делал этого на Java, но поищу нативные механизмы / инструменты синхронизации баз данных Oracle Это будет

  • Быть быстрее внедрить
  • быть более устойчивым
  • имеют более быструю репликацию события
  • Будь больше «Правильно»
2 голосов
/ 12 сентября 2009

Пожалуйста, посмотрите на некоторые продукты синхронизации. SQL Anywhere из Sybase, где я работаю, является одним из таких продуктов. Вы можете получить разработчик / ознакомительную копию, которую сможете использовать для изучения своих возможностей. Я уверен, что у Oracle тоже есть нечто подобное.

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

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

Общая проблема слишком сложна, чтобы ее можно было объяснить здесь, но я надеюсь, что смог предоставить несколько полезных указателей.

1 голос
/ 23 июня 2010

Никогда не работал с ним, но http://symmetricds.codehaus.org/ может быть полезным

1 голос
/ 13 сентября 2009

Oracle обладает сложными функциями репликации для синхронизации баз данных. Узнайте больше. .

Из ваших комментариев видно, что вы используете Oracle Lite: это поддерживает репликацию, которая описана в документации Lite .

1 голос
/ 12 сентября 2009

Проблема в том, что то, что вы спрашиваете, может варьироваться от умеренно сложного (для простой, не очень надежной системы) до очень сложного продукта, который может занять небольшую команду в течение года в зависимости от требований.

Вот почему в других ответах говорилось "Найди другой путь" (в основном)

Если вам нужно сделать это для задания класса или чего-то еще, это возможно, но, вероятно, это не будет быстрым, надежным или простым.

Вам нужно серверное программное обеспечение с каждой стороны, способ преобразования неизвестных таблиц в данные, которые могут быть переданы по сети (вместе с достаточным количеством метаданных, чтобы воссоздать его на другой стороне), и вы, вероятно, захотите отслеживать изменения базы данных (возможно, с флагом или отметкой времени), чтобы вам не приходилось каждый раз отправлять записи.

Это достаточно сложная проблема, и мы ничем не можем помочь. Если бы я должен был сделать это для клиента, я бы процитировал ему хотя бы год работы человека, чтобы получить это даже умеренно надежно.

Удачи

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