繁体   English   中英

如何在JAVA中将远程数据库与本地数据库同步

[英]How to synchronize remote database with local database in JAVA

我需要创建其中有两个本地和远程数据库的项目。 远程数据库需要每天与本地数据库同步,以反映本地数据库中所做的更改。 我正在使用JAVA。 数据库是ORACLE。 我有在本地数据库上执行CRUD操作的JAVA / JPA代码。 如何将更改同步到远程数据库。

我不会在Java中执行此操作,而是在寻找本机Oracle数据库同步机制/工具。 这将

  • 更快地实施
  • 更健壮
  • 具有更快的复制事件
  • “正确”

请看一些同步产品。 我工作的Sybase公司的SQL Anywhere就是这样一种产品。 您可能可以获取开发者/评估版副本,以用于探索您的选择。 我确信Oracle也有类似的东西。

基本思想是能够跟踪中央数据库中发生的更改。 通常,通过为每行保留一个时间戳来完成此操作。 在同步期间,远程数据库提供最后的同步时间,并且服务器向其发送此后已更改的所有行。 请注意,中央数据库中已删除的行将需要进行一些特殊处理,以确保将其从远程数据库中删除。

真正的双向同步要复杂得多。 您还需要将更改从远程数据库上传到中央数据库,并且在远程数据库和中央数据库中的同一行以不兼容的方式进行更改的情况下,还必须实施一些冲突解决策略。

总体问题过于复杂,无法在此处进行解释,但我希望我能够提供一些有用的指示。

问题是您要问的问题范围从中等难度(对于简单的,不是非常健壮的系统)到非常复杂的产品,根据需求可能使一个小团队忙一年。

这就是为什么其他答案说“基本上找到另一种方式”的原因

如果您必须为班级分配之类的任务执行此操作,虽然可以,但是可能不会很快,可靠或简单。

您需要在每一端使用服务器软件,这种方法可以将未知表转换为可以通过网络传输的数据(以及在另一端可以重新创建的足够的元数据),并且您可能希望跟踪数据库更改(可能带有标志或时间戳记),这样您就不必每次都发送每条记录。

这是一个很难解决的问题,我们不能提供太多帮助。 如果我想为客户做到这一点,我会引用他至少一年的工作量,以使其获得中等程度的可靠性。

祝好运

Oracle具有复杂的复制功能来同步数据库。 了解更多。

从您的评论看来,您正在使用Oracle Lite:这支持复制, Lite文档中对此进行了介绍

从未使用过它,但是http://symmetricds.codehaus.org/可能有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM