2012-01-09 83 views
12

當我的公司購買另一家公司時,我繼承了系統。這個系統是LAMP和.NET的混合體。使用大量數據將不良系統遷移到我們當前的系統中

  1. 1 Windows服務器控件只用於API和Web服務的第三方驗證運行asp.net - (姑且稱之爲WIN)
  2. 8 LAMP服務器(網絡,報告,cron的,倉庫等.. ) - (我們稱之爲新)

我們目前的環境:

14 LAMP服務器(Web,郵件,倉庫等等) - (姑且稱之爲電流)

去吧od新聞是新的代碼是非常straigt foward。幾百萬行代碼(大多數是apis,第三方),我可以將它轉換爲CURRENT系統。 NEW和CURRENT使用兩個CentO,這將使轉換變得簡單,除了Windows服務器,我不知道現在該做什麼。

現在是壞消息。 NEW系統數據庫模式根本不好。它沒有被標準化,查詢也很慢(數據庫查詢和代碼也是如此)。我的第一個想法是重新設計它們到更符合CURRENT代碼的規範化結構,但我不工作。 NEW系統中的表格是巨大的。 NEW系統有7個數據庫,超過10000個表,最小的表有超過10萬行,有些表有超過5億行。其中一個數據庫擁有大多數表,每個表有超過25,000,000行。

遷移安全嗎?還是應該保持兩者都運行?如果我應該遷移,我想知道爲了將Windows和NEW系統遷移到我的CURRENT系統中,最安全的解決方案是什麼?

回答

29

首先,移動WIN +新系統到當前系統中需要一定的時間。所以你必須確保你什麼時候開始遷移/轉換所有東西,你知道你要去哪裏。遷移可能不是一件容易的事,你可能遇到你開始這個過程後你從未想過的問題。

您對遷移NEW系統的想法有利有弊,您需要確保其順利進行,才能獲得最終可靠的產品。

優點:

  • 只有一個系統維護:你不想保持3個系統;
  • 單一代碼/數據庫環境:PHP與ASP.NET和MSSQL與MySQL;
  • 集中式代碼/數據庫;
  • 一種編碼(代碼和數據庫)標準;
  • 保存/賣出equiments(你將代碼遷移到14臺服務器,也許你並不需要其它9(WIN +新),這樣你就可以出售或讓他們在未來的項目)

缺點:

  • 風險較高(死機,不兼容,未知的功能,你需要了解等);
  • 比遷移或重新設計一切便宜
  • 失敗的風險要比遷移較低(因爲你已經知道,這兩個系統的工作原理)
  • 計劃,控制,執行,品質保證:非常糟糕,如果其中之一失敗;
  • 昂貴:遷移可能會花費時間和金錢;

這是一個很大的數據庫,改變/優化這個數據庫需要大量的勞動時間投資。這不是幾個小時內你可以輕鬆完成的事情。這可能需要數週或數月才能成功將數據遷移到CURRENT系統而不會出錯。如果可以的話,您可以先從數據庫模式(如客戶端或產品)遷移常見或相似性開始。這樣,您就可以導入CURRENT系統可以正常運行的數據,並且您的代碼也可以識別。 CURRENT系統的用戶可以立即開始管理這些項目/記錄而不會出現問題。從CURRENT系統無法識別的新記錄或記錄中,可以簡單地重新設計這些表並將它們遷移到CURRENT系統(然後更新當前的代碼)。

從代碼遷移開始,如果NEW系統的代碼足夠好並符合標準,您可以保留它。這將節省開發時間,只需確保更新查詢和服務器連接。另一方面,如果它像意大利麪代碼一樣,你將不得不瞭解代碼的功能。這也可以在勞動時間內進行重大投資。我可以在這裏推薦將其標準化,並按照您在CURRENT上組織代碼的方式來組織代碼。您可以使用通用文件和文件夾結構將您的代碼集中到一個常用文件夾中。你可以放置所有的通用庫,第三方等等。因此,當你調用CURRENT和NEW代碼時,它會加載相同的PHP類。這將使您輕鬆地從NEW轉換到CURRENT系統。這樣,你就可以在同一個地方知道所有需要的文件,並且很容易維護。特別是如果你的代碼需要需要文件的文件。如果你的代碼遍佈你的服務器,你可以創建一個NFS,如果你喜歡這個想法。

現在,我可以建議以Parallel Adoption開頭。這樣你就可以確保所有的系統工作正常並且健康。然後將數據/代碼緩慢遷移到CURRENT系統,直到一切完成。這並不容易,你必須確定你必須首先遷移哪部分NEW + WIN系統。我的建議是遷移WIN系統。因爲這與CURRENT和NEW系統無關,只要你顯示相同的輸出,你應該沒問題。在PHP中搜索開源或類似的驗證,或者如果找不到任何內容,請構建它們。這種方式可以很容易地將WIN系統遷移到您當前的組織結構和編碼標準。執行測試和質量保證將很容易,您可以很快完成。

一旦這個WIN被遷移,你需要確定你需要首先傳輸到CURRENT系統。例如,如果NEW和CURRENT系統具有「客戶端」,則從NEW系統收集所有信息,並使用腳本(手動或腳本)將它們移動到CURRENT系統。然後,您可以遷移客戶端元素,如產品,帳單聲明或與這些客戶端相關的任何其他記錄)。重複這些步驟,直到所有數據都被遷移。這樣,您不必重新設計任何表格或更改NEW系統中的任何代碼,所有內容都保存在CURRENT系統中,並且一切正常。我不會爲這種情況推薦big bang adoption

2

我應該遷移的不是你的決定,而是更多你是老闆的決定。

對於如何,它取決於你需要做的數據處理的數量。我顯然建議使用數據庫間語句將數據從SQL轉換爲SQL,但這並不總是可行的。

第一個原因是您可能需要將真正複雜的數據轉換爲另一種形式,並且無法使用純SQL進行操作。

第二,如果使用PHP或任何其他語言編寫轉換腳本比在純SQL中編寫轉換腳本花費的工作量要多,那麼最好在PHP中創建它,以便在需要更改某些內容時你確信它將是可能的,而不會因爲你在SQL中需要重新編碼所有東西而被卡住。總的來說,你需要做大量的分析才能理解你所處理的所有數據並計劃你的轉移。隨着你所談論的桌子和桌子的數量的增加,你會有一次旅程前行,我認爲泰諾是你最好的朋友。

好運

+1

好吧,我是老闆 – aki 2012-01-09 21:41:25

+0

該死的,那麼你只是讓自己更難以做出決定;) – 2012-01-09 21:43:09

+0

是!我知道,這就是爲什麼我想問這裏,但我想人們不喜歡這些問題...... – aki 2012-01-09 21:44:51

相關問題