2011-05-01 65 views
0

我正在開發Java,Ejb3.0,WebLogic。同步信息的設計建議

我想建立一個系統設計,告訴你我要開發的功能。 (不是太複雜)

主要目標是建立一個系統,它從幾個數據庫中獲取信息並在它們之間進行同步。

例如:

讓我們說我有數據庫A,數據庫B和數據庫C.

,如果我們比較B對C:(B是 DB)

期望的目標:

方案1. A有一條記錄在B中缺失。我們採取的行動= B在表格中添加缺失的記錄。

方案2. A有記錄,B也有記錄。我們採取的操作= B正在按照A中所示更新記錄信息。

(數據庫A與數據庫B相同)。

比較方法假設在特定表列信息之間進行比較。

現在我可以把所有東西都放到對象上然後進行比較。 另一方面,我可以做手動同步。

想聽聽一些設計建議(可能是OOP設計或任何其他模式)。即使這對某些特殊設計來說有點花銷。我仍然希望這樣做,以便我可以學習新的東西,並且使用這種機制來同步其他系統。

在此先感謝,

ray。

+0

對不起雷,你的要求描述的一部分使我絕對沒有意義。我意識到英語不是你的第一語言,但請嘗試編輯你的問題,注意儘可能清楚。 – corlettk 2011-05-01 13:30:30

+0

希望這會更好。 – rayman 2011-05-01 14:29:43

回答

1

一個很好的答案取決於數據量。

如果數量很少,只需從所有數據庫中獲取所有對象並將其放入集合中即可。這是最容易維護的。

由於來自一個數據庫的數據量較小,而另一數據庫的主要負載較重,因此可能需要將次要數據傳遞到數據庫並讓數據庫完成工作。

大多數情況下,最佳做法是將應用程序和數據庫之間的數據流保持在低位。

也許你能解釋一下你的問題多一點...

---編輯---

好細節,讓你想都同步到B中間DB。

有幾種方法,這取決於你有幾個環境參數,兩個主要方向將是

  1. 每一次(易於編程和維護,表現很糟糕)
  2. 製作做一個完整的迭代完全同步一次增量更新後(很難達到非常難於維護,性能非常好)

爲1)

如果桌子上的所有物品都可以毫無問題地融入您的主內存中,請將其全部放入那裏,然後在那裏做您的東西。 如果沒有,你必須做一堆束。

爲2)

一) 爲了讓讓你必須確定更改的項目增量。 對於您可以使用數據庫觸發器,但是這是非常DB具體,很難維持,

B) 可以引入具有版本號只爲您的同步目的表列,您如果一個實體完成了,就算數。

版本號可以更容易地與Hibernate框架一起引入,但是您仍然有更大的代碼庫來完成您的任務,因爲您必須檢查版本等。 但是更好的性能會使增量更新最常用的方法。

+0

例如有什麼樣的細節? – rayman 2011-05-01 13:25:04

+0

您期望的每個數據庫的數據量是多少?什麼是更重要的可維護性或性能? – Omnaest 2011-05-01 13:29:11

+0

我更喜歡有更好的可維護性和可用性。數據量現在不詳。可能來自不同表格的許多記錄。 – rayman 2011-05-01 14:30:17

1

這聽起來像數據複製,最好由數據庫本身處理。請參閱數據庫技術文檔,應該有多種不同的配置複製的方法。不要重新發明輪子。

+0

我們已經檢查了這個選項。問題在於數據庫在不同的系統中。 Oracle和SQL SERVER,並且很難在它們之間進行集成。 – rayman 2011-05-02 07:17:57