2012-01-11 41 views
1

我有一個Oracle數據庫,它有兩個相同的模式。一個本質上是「on」模式,另一個是「off」模式。我們更新關閉架構中的數據,然後將模式切換到我們的生產服務器使用的別名後面。這不是一個好的解決方案,但這是我得到的。同時更新兩個相同的數據庫模式

我的問題是,有一個單獨的應用程序,現在將數據流傳輸到數據庫(也交給我),目前只是更新別名,這意味着它只是在任何給定的更新「on」模式時間。這意味着當模式切換時,來自這個獨立應用程序的所有數據都會從生產中消失(它所在的模式現在是「關閉」模式)。

此應用程序使用Hibernate 3.3.2來更新數據庫。混合中也有Spring 3.0.6,但不適用於數據庫更新。最後,我們運行在Java 1.6上。

任何人都可以指示我同時更新「on」和「off」模式,不涉及使用Spring JDBC重寫整個DAO層來加載兩個單獨的連接池?我一直無法找到任何有關讓冬眠來做到這一點。提前致謝!

+0

等待,你在數據庫之間_toggling_?爲什麼?多久?這使我感到比其他任何問題都更加嚴重...... – 2012-01-11 16:45:14

+0

這就是我的問題,正是我交給他時。數據加載非常龐大,需要花費幾個小時,並且需要在暴露於生產之前進行測試 - 所以我們在「關閉」模式(大約4-8小時)上執行加載,測試它,然後將數據庫連接別名指向「關閉」模式,使其成爲「在」模式,使其生存於生產中。這個流媒體數據應該取代「大規模負載」模型。 – ogradyjd 2012-01-11 17:14:02

+0

是的,這是非常有問題的。相信我 - 你不知道。但是,你用你所得到的東西來工作(直到你可以說服更高層的人去佈置錢來改變它)。 – ogradyjd 2012-01-11 17:15:41

回答

0

你不應該更新兩個單獨的數據庫,這樣一來,特別是從應用程序的觀點。所有它應該知道/關心的是數據是否在那裏,而不必混淆兩個單獨的數據庫。

坦率地說,這聽起來像您可能需要購買一個ETL工具。即使你無法從'off'更新'on'模式(儘快足夠實用),你仍然可以使用來保持兩者同步(鏡像從'開'到'關')。

+0

爲了確保我們在同一頁面上,數據來自第三方,並被加載到關閉模式中。一旦在關閉架構中進行測試,我們將其切換爲「開啓」,然後在新「關閉」架構上執行相同的負載。然後我們開始將新數據加載到「關閉」模式。清洗,沖洗,重複。由於時間和現金限制,使用新的建築工具在這種情況下不會幫助我。我只需要一個快速的方法來將插入複製到新的提要中的兩個模式,最好是使用Hibernate,因爲這是我交給我的代碼所使用的。 – ogradyjd 2012-01-11 18:47:17

0

HA-JDBC是我們在短時間內調查過的複製JDBC驅動程序。它會自動複製所有插入和更新,並分發所有選擇。還有其他數據庫特定的主從解決方案。

另一方面,我不會建議這樣做4-8小時的程序。更好地鎖定數據庫,更新一個數據庫,然後備份 - 恢復副本,然後再解鎖。

相關問題