2012-11-13 75 views
1

我們計劃從mysql遷移到mongoDB。我想知道是否有工具或任何其他資源可以幫助我創建遷移計劃。例如(與公司的表格,應先移動,然後再移動用戶的詳細信息等),以便遷移可以順利進行。從mysql遷移到MongoDb,任何有助於創建遷移計劃的工具

+0

你爲什麼要搬家?如果你能回答這個問題,那麼你已經有了答案。 – 2012-11-13 16:27:02

+3

難道你不應該知道你在MySQL中的表之間的關係嗎?沒有一個工具會告訴你什麼必須「先」移動? –

+0

我沒有針對當前數據庫的EER圖,有沒有一種方法可以快速生成一個 –

回答

1

你不能簡單地將你的MySQL模式遷移到MongoDB(或任何其他文檔數據庫存儲)。你將如何存儲數據是完全不同。請記住,沒有連接,並且您很可能需要對數據進行非規範化處理,並將某些數據嵌入到其他文檔中。這不是可以自動化的東西。

這裏的數據庫有着根本性的不同。你需要從應用程序方面看你如何讀寫數據,你在哪裏進行連接,如何最好地構建新的模式以使其工作 MongoDB,而不是像使用RDBM那樣糟糕地使用它。在「MongoDB模式設計」上搜索以獲得您需要考慮的事項的概述。

+0

感謝您的洞察力。我想,我沒有正確發佈我的問題。我想問的是,當你的應用程序從一個數據庫遷移到另一個數據庫時,除了基於數據庫性質的模式更改之外,它們是如何遷移的任何規則。例如,如果您有100個表格,您可能需要先慢慢遷移每個表格,那麼如何選擇這個表格,一種方法是首先遷移最不相關的表格,我們也有類似的其他規則。我並沒有考慮將表格遷移到集合,而是其他的東西。 –

0

首先,你必須知道你的表和查詢的關係。

  1. 根據外鍵關係分組您的表。也許有一些組只有一個表。你可以先遷移這些。因爲這很容易。例如:日誌,訪問者數量。

  2. 然後在一個組中的2個表。

    1. 如果關係是1:1,您可以簡單地將它們合併到一個表中並進行遷移。
    2. 如果1:n,您可以將n一邊嵌入1一面。但合併(嵌入)或不應該根據您的查詢。例如:如果兩個關係表1:1之間的關係永遠不會被一起讀取,那麼您可以直接遷移到MongoDB而不需要合併。
    3. 雖然n:m可以用MongoDB實現,但是你必須自己管理大量的冗餘數據或者處理join。但如果你真的想要這樣做,那沒關係。但表現可能是一個問題。
  3. 如果一個組中的表的數量> = 3,我認爲您應該在大多數情況下將它們保留在MySQL中。但是仍然有一些例外。我最近處理了3個與1:11:n關係的表,並且我將它們合併並嵌入到一個表中,這很容易,性能更好。

+0

非常感謝您的幫助。 –