2009-09-12 364 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

相關問題