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

2022-09-04 22:03:10

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

曾经有一个名为Sync4J的工具使用SyncML框架,但这似乎已经被搁置一旁。


答案 1

我听说 Db4O 提供的数据复制服务非常好。它允许您使用Hibernate回到RDBMS - 我认为它不支持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. 从数据库 A 读取对象
  2. 删除数据库元数据(uuid 等)
  3. 插入到数据库 B 中

同步对已经同步的内容有一定程度的了解。您可以在运行时通过从 TableInA 和 TableInB 获取 uuid 列表并计算出哪些条目是新的来执行此操作,也可以拥有一个需要同步的项目表(在 TableInA 中插入/更新时填充触发器),然后从中运行。您的工具可以是 TimerTask,以便数据库在所需的时间粒度上保持同步。

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


推荐