2013-02-19 123 views
2

我正在爲以下問題尋找可能的解決方案。在不同數據庫之間同步數據

首先我現在的情況:
我有2個數據庫,1個Oracle數據庫和1個MySQL數據庫。儘管他們有很多相似之處,但並不完全相同。 Oracle DB和MySQL DB上都有很多表,但Oracle表通常更廣泛,包含更多列。 數據庫的情況不能改變,所以我必須解決這個問題。

現在我在尋找以下:
我想從Oracle數據同步到MySQL,反之亦然。這必須實時或儘可能接近實時地完成。所以當一個數據庫發生變化時,他們必須儘快同步到另一個數據庫。

也不是每個表都必須同步,所以解決方案必須提供一種方法來選擇哪些表必須同步,哪些不需要。

由於數據庫不完全相同,我認爲複製不是一個選項。但是什麼? 我希望你們可以幫我找到一種做法,或者做一個完全符合我需要的工具。也許你知道我可以使用一些好的論文/文章?

謝謝!

+1

使用類似Pentaho的ETL工具 – Johan 2013-02-19 12:03:52

+0

使用JDBC?你應該能夠走兩條路...... – Ben 2013-02-19 13:10:26

+0

你在說什麼,聽起來很像EAI。它可以變得非常棘手!閱讀EAI會給你一些有關陷阱和風險的良好知識。維基百科在EAI上有一個很好的101(引子),並列出了幾個流行的供應商和資源:http://en.wikipedia。組織/維基/ Enterprise_application_integration – tgolisch 2013-02-19 16:39:05

回答

0

我看了你的問題和你的答案。我已經在這兩個Oracle,SQL,ETL和數據倉庫工作,這裏是我的建議:

  1. 這是好事,有一個現成的ETL工具。但是,如果您的應用程序足夠大以至於需要量身定製的ETL工具,我建議您使用自制的ETL過程。

    • 如果你的事務型數據庫在Oracle上,你可以有觸發器設置的鍵表,將進一步觸發寫在C,C++或Java編寫的外部程序。
    • 使用外部過程的原因是能夠同時與兩個數據庫進行通信 - Oracle和MySQL。
    • 您可以閱讀有關Oracle外部過程​​here的更多信息。
  2. 如果不通過EXTPROC,你可以開發使用Java或.NET一個單獨的應用程序會從第一個數據庫中提取數據,根據您的業務規則變換並將其加載到你的倉庫。

在您選擇的任何一種方法中,如果您實施自己的工具而不是現成的工具,那麼您將對ETL過程有更大的控制權。

1

感謝您的意見。

我對ETL和EAI做了一些進一步的研究。 我發現我正在尋找一個ETL工具。