2009-09-12 343 views
1

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

回答

5

我不会做这在Java中,但看看本机Oracle数据库的同步机制/工具。这将

  • 更快地实现
  • 更强大的
  • 更快的复制事件
  • '正确'
+0

能否请你指出他们中的一些,我在甲骨文精简版oracle.com/database/lite_edition.html – Xinus 2009-09-12 17:24:20

+0

没达到,我认为最好的办法是在SO上打开一个新的问题。我可能会了解其中的一些,但我不知道你的具体情况。新的SO问题就像*“如何同步两个Oracle Lite数据库?”*确保尽可能多地提供版本(操作系统,Oracle,网络拓扑),配置,数据库大小等信息。这真的是*不* Java问题。 (我知道Java,我不知道甲骨文,但我知道一般的数据库管理系统。)在这里评论如果你想要导引在堆栈溢出问这里一个新的问题。 – 2009-09-12 20:20:33

2

请看一些同步产品。从我工作的Sybase的SQL Anywhere就是这样一种产品。您可能能够获得可用于探索选项的开发人员/评估副本。我相信甲骨文也有类似的东西。

的基本思路是要能够跟踪在中央数据库中发生的变化。这通常是通过为每一行保留一个时间戳来完成的。在同步过程中,远程数据库提供最后一次同步时间,服务器向其发送自那时起已更改的所有行。请注意,已在中央数据库中删除的行将需要一些特殊处理,以确保它们从远程数据库中被删除。

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

普遍的问题是非常复杂,这里要输入反应来解释,但我希望我已经能够提供一些有用的指针。

1

的问题是,你所要求的范围可以从中等难度(一种简单,不是非常强大的系统),以一个非常复杂的产品,它可以保持一个小团队忙碌根据需要一年的时间。

这就是为什么其他的答案说:“找到另一种方式”(基本)

如果你有一类作业什么的做到这一点,这是可能的,但它可能不会是快速,稳健的或容易。

你需要服务器软件的每一面,一种将未知表格转换为可通过网络传输的数据的方式(以及足够的元数据以在另一侧重新创建它),并且您可能需要跟踪数据库的变化(可能带有标志或时间戳),以便您不必每次都发送每条记录。

这是一个困难的问题不够,我们不能真正帮助不大。如果我必须为客户做到这一点,我会引用他至少一年的工作时间,以使其适度可靠。

好运

1

Oracle拥有复杂的复制功能来同步数据库。 Find out more.

从您的意见中可以看出您使用的是Oracle Lite:它支持复制,其覆盖范围为the Lite documentation

相关问题