2008-10-10 5 views
13

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

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

ответ

7

Я слышал, что Служба репликации данных, предоставляемая 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

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

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

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

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

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

+0

Спасибо за продуманный ответ. В настоящий момент у меня есть стратегия синхронизации вашего собственного браузера, и я хочу заменить ее чем-то более общим. – 2008-10-10 13:02:17

2

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

0

Я прежде всего с помощью Oracle в данный момент, и наиболее полнофункциональным маршрут я наткнулся в данных Red Gate Сравнивать:

http://www.red-gate.com/products/oracle-development/data-compare-for-oracle/

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

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

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

http://symmetricds.codehaus.org/

Надеется, что это помогает.

Смежные вопросы