您使用哪些JDBC工具来同步数据源?

时间:2008-10-10 11:01:53

标签: java database jdbc synchronization

我希望找出人们用来在数据库之间同步数据的工具。我正在寻找可以用作命令行工具的JDBC解决方案。

以前有一个名为Sync4J的工具使用了SyncML框架,但这似乎已经被淘汰了。

4 个答案:

答案 0 :(得分:7)

我听说Db4O提供的数据复制服务非常好。它允许你使用Hibernate返回到RDBMS - 我认为它不支持JDBC(http://www.db4o.com/about/productinformation/drs/Default.aspx?AspxAutoDetectCookieSupport=1

有一个名为Daffodil的开源项目,但我根本没有调查过。 (https://daffodilreplicator.dev.java.net/

我目前正在考虑使用的是SymmetricDS(http://symmetricds.sourceforge.net/

还有其他人,他们各自做的略有不同。一些使用触发器,一些轮询,一些使用拦截JDBC驱动程序。您需要确定您所处的技术限制,以确定您真正想要使用哪一个。

Wikipedia提供了对不同技术(http://en.wikipedia.org/wiki/Multi-master_replication)的精彩概述,并提供了另一个替代DBReplicator(http://dbreplicator.org/)的链接。

答案 1 :(得分:2)

如果您的代码库已经存在模型和DAO层,那么您可以创建自己的同步框架,这并不难。

复制数据非常简单:

  1. 从数据库A中读取对象
  2. 删除数据库元数据(uuid等)
  3. 插入数据库B
  4. 同步对已经同步的内容有一定程度的了解。您可以在运行时通过从TableInA和TableInB获取uuid列表并确定哪些条目是新的,或者您可以拥有需要同步的项目表(在TableInA中插入/更新时填充触发器)来执行此操作,并从那跑。您的工具可以是TimerTask,因此数据库可以按照您希望的时间粒度保持同步。

    然而,可能有一些工具可以在没有任何实现的情况下完成所有工作,并且每个实现都会根据业务需求而有所不同。此外,在数据库级别还有复制工具。

答案 2 :(得分:2)

真正的同步需要一些我希望您的数据库架构具有的数据(您可以阅读SyncML文档以了解它们如何继续)。 Sync4J对你没什么帮助,它确实是高级的,面向XML的。如果您没有预见到任何冲突(这意味着:非常容易同步),您可以尝试使用像Enhydra Octopus这样的轻量级ETL。

答案 3 :(得分: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/

希望这有帮助。