2010-01-08 79 views
4

我不確定,如果它恰好適合stackoverflow,但是因爲我正在尋找一些代碼而不是工具,我認爲它確實。如何複製兩個不同的數據庫系統?

我找的如何複製/同步不同數據庫系統的方式 - 在這種情況下:mysql的和MongoDB。我們正在爲不同的目的而運行。我們從一個mysql數據庫開始,後來爲特殊應用程序添加了mongodb。我們希望在兩個數據庫中都有數據,我們希望在mongodb中使用mysql的約束。例如:我們需要在mysql中有一個用戶記錄,但也需要在mongodb中針對不同表的對象之間的引用。目前我們有一個cronjob,用於轉儲mysql數據並以mongodb格式導入它。然而,儘管它工作得很好,但這不是我們想要的解決方案。

我認爲單向複製就足夠了 - mysql-> mongodb,重要的部分是,複製在「實時」中工作,很像mysql master-> slave複製。

是否有已經爲這個問題或想法的人如何實現這一目標的任何解決方案?

謝謝!

回答

2

你正在尋找被稱爲EAI(Enterprise application integration)什麼。有很多商業工具,但在提供的鏈接下,您還會發現一對OSS解決方案。 EAI的基礎是你有數據源和數據匯。 EAI框架提供了在兩者之間構建定製泵的工具。

我建議要麼使用一個數據庫觸發器來啓動同步或在您的應用程序發送一個觸發信號。請注意,由於同步可能變得任意複雜(例如,如何確保複製所有行),因此沒有任何解決方案。

+0

謝謝,這有助於我們找到正確的方向 – aurora 2010-01-23 18:25:44

+1

目前支持從RDBMS遷移到無模式數據庫的EAI是什麼? – 2010-01-27 02:26:57

0

至於我看你需要制定某種有每個DBMS的驅動程序「控制計劃」並運行它作爲一個守護進程。守護進程應該有一個觸發器或非常小的重新檢查時間間隔來保持DB同步

+0

DBMS中的一個觸發器可能會級聯更改嗎? – falstro 2010-01-08 08:00:24

0

從技術上講,您可以設置一個進程來解析MySQL服務器的二進制日誌並複製相關的SQL查詢。我從來沒有用一個不同的數據庫做奴隸做這樣的事情,但也許值得一試?

2

SymmetricDS是開源的,基於Java的,基於Web的,獨立於數據庫,這可能做的伎倆有一些調整,數據同步/複製軟件。它有一個名爲IDataLoaderFilter的擴展點,您可以使用它來實現MongodbDataLoader。

這將有助於單向數據庫複製。從MongoDb - >關係數據庫同步可能會更困難一點,但是SymmetricDS團隊在試圖找到解決方案時會非常有幫助。

+0

非常感謝 - 我會看看它。 – aurora 2010-01-27 08:47:02

相關問題