Какие инструменты JDBC вы используете для синхронизации источников данных? - PullRequest
13 голосов
/ 10 октября 2008

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

Раньше был инструмент под названием Sync4J, в котором использовался каркас SyncML, но, похоже, он отошел на второй план.

Ответы [ 4 ]

7 голосов
/ 10 октября 2008

Я слышал, что служба репликации данных, предоставляемая Db4O, действительно хороша. Он позволяет вам использовать Hibernate для возврата к СУБД - я не думаю, что он поддерживает JDBC tho (http://www.db4o.com/about/productinformation/drs/Default.aspx?AspxAutoDetectCookieSupport=1)

Существует проект с открытым исходным кодом, который называется Daffodil, но я его вообще не исследовал. (https://daffodilreplicator.dev.java.net/)

Тот, который я сейчас рассматриваю, называется SymmetricDS (http://symmetricds.sourceforge.net/)

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

Википедия предоставляет хороший обзор различных методов (http://en.wikipedia.org/wiki/Multi-master_replication)), а также предоставляет ссылку на другой альтернативный DBReplicator (http://dbreplicator.org/).

2 голосов
/ 13 октября 2008

Для истинной синхронизации требуются некоторые данные, которые, как я надеюсь, имеется в вашей базе данных (вы можете прочитать документ SyncML, чтобы узнать, как они работают). Sync4J вам мало чем поможет, он действительно высокоуровневый и ориентирован на XML. Если вы не предвидите никаких конфликтов (что означает: очень простая синхронизация), вы можете попробовать использовать легкий ETL, такой как Enhydra Octopus .

2 голосов
/ 10 октября 2008

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

Копировать данные так же просто, как:

  1. чтение объекта из базы данных A
  2. удалить метаданные базы данных (uuid и т. Д.)
  3. вставить в базу данных B

Синхронизация имеет некоторый уровень знаний о том, что уже синхронизировано. Вы можете сделать это во время выполнения, получив список uuids из TableInA и TableInB и определив, какие записи являются новыми, или вы можете иметь таблицу элементов, которые необходимо синхронизировать (заполнить триггером при вставке / обновлении в TableInA) и бежать от этого. Ваш инструмент может быть TimerTask, поэтому базы данных синхронизируются в нужное вам время детализации.

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

0 голосов
/ 27 мая 2012

В настоящее время я в основном использую Oracle, и наиболее полнофункциональный маршрут, который мне встречался, - это сравнение данных Red Gate:

http://www.red -gate.com / продукты / оракул-разработка / данных сравнения-в-оракула /

Этот старый блог дает хорошее резюме доступных маршрутов решения:

http://www.novell.com/coolsolutions/feature/17995.html

Предложения JDBC, с которыми я сталкивался, были очень простыми. Решение, упомянутое Aidos, кажется наиболее полным, если вы хотите пойти по пути публикации-подписки:

http://symmetricds.codehaus.org/

Надеюсь, это поможет.

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