天天看點

一步一步教你做系統資料遷移

作者:Esgoon

軟體系統資料遷移往往是一項極具挑戰性的工作,耗時耗力。特别是對于那種較複雜的業務系統或ERP系統,很能考驗做資料遷移的人的綜合能力。

并且,資料遷移成功通常也決定着新系統的成功上線和順利運作。本文将結合我實際執行過的資料遷移案例,介紹一些方法和經驗。

資料遷移的場景

軟體系統都是有生命周期的,當舊的系統無法滿足業務需要時,就會有新的系統去替代舊系統。另一方面,當軟體研發團隊因為技術架構有重大更新,或為了使軟體産品更有競争力進而對原系統進行大版本更新,這些情況下,通常都會面臨資料遷移的工作,把原系統積累的業務資料、基礎資料等遷移到新系統。

通常,對于這樣的系統更新,新系統較之舊系統發生了很大的變化,比如功能子產品的增減與調整,資料庫表的構成與設計,甚至資料庫本身的選型都有改變。是以說這會使得資料遷移工作變得比較困難。

但就資料遷移本身來說,是可以做到分步進行,化繁為簡的。對于資料遷移整體工作,大緻可以分為資料提取、資料轉換和資料遷移後的測試三個步驟。這些步驟各自又包含一些具體的工作内容,下面将分别展開。

一步一步教你做系統資料遷移

資料抽取

新舊系統的調研。既然要進行資料遷移,首先要理清需要遷移哪些舊資料,以及這些舊資料分别對應到新系統哪個資料庫表。對新舊系統的準确調研是後續工作順利展開的基礎,這部分工作可以多花一些時間。

對于新系統,因為時間近,而且一般也是經過分析、設計、開發等各個階段,文檔也比較齊全,即使執行資料遷移的人沒有全程參與新系統,熟悉起來也更容易一些。對于舊系統,因為文檔的丢失,人員交接等因素,熟悉起來相對困難一些,可以把舊系統的資料庫和表作為主要目标。

對系統的調研,需要搞清楚這些點:功能子產品構成、主要業務流程、各功能子產品對應的資料庫表、資料表資料之間的關系、新舊系統資料表之間的大緻對應關系、舊系統各個表的資料量大小情況等等。

列出資料遷移大綱。對新舊系統調研之後,基于我們的調研結果。可以整理一份資料遷移大綱,大綱旨在确定資料遷移的範圍和邊界,確定大的問題沒有遺漏。後續可以在此基礎上進一步細化。具體内容可以是以下圖表中的各項。

一步一步教你做系統資料遷移

資料遷移大綱以新系統功能子產品為基準,因為我們資料遷移的目的是為了新系統能夠順利運作。然後可列出新舊系統功能子產品的對應,以及各自表的對應關系。大多數情況下,新舊系統功能子產品以及它們之間的表并非都能找到對應關系。比如,新系統中有的功能子產品舊系統中沒有,新系統某個子產品對應4張資料庫表,但在舊系統中隻找到2張相關的表。沒有關系,在列出大綱時,隻需要基于上一步的調研列出已知的對應關系,經過初步分析後把識别出的問題點注明在“備注”一欄。

在列出大綱之後,可以召集新舊系統相關人員對此大綱進行評審。将大綱整體内容以及“備注”欄的問題進行确認并讨論。該評審的意義在于盡可能讓熟悉新舊系統的人參與進來,查漏補缺,以盡可能保證後續的資料遷移準确無誤。

列出資料字典對應表。遷移大綱評審之後,就可以進一步基于此大綱完善新舊系統資料字典對應表。這是一項細緻的工作,主要是找出新系統資料表中每個字段的來源。可以是以下這樣一個表格。

一步一步教你做系統資料遷移

同樣地,新系統資料表中的每一個字段也并非能找到舊系統表中的對應字段。可能有些字段需要填充預設值,或者由舊表中多個表或字段計算得出,把這些字段統一在“備注”欄注明。

在完成資料字典對應表後,再進行一次評審。評審通過後進行後面的步驟。

資料轉換

字段轉換。基于上一步得出的資料字典對應表,逐一對舊資料表中的來源字段類型、長度、預設值等進行統一。如新表字段類型或長度不相容舊表資料,就需要對新表做相應的調整;對于常量值,如狀态值,新表中使用0、1、2,但舊表中使用a、b、c,就需要明确轉換規則,将舊表資料等價轉換為新表對應的資料。還有,對于新表中未找到舊表對應字段的情況,要明确填充預設值或NULL。

資料遷移程式編寫。字段轉換完成之後,就可以編寫資料遷移程式了。通常,較為穩妥的方法是用資料遷移程式生成對應新表的INSERT語句。可以為每個表對應的INSERT語句建立一個SQL腳本檔案。對于資料量大的表,還需要考慮分拆成多個SQL腳本檔案,友善後續的檢視和分批執行。

資料遷移後的測試

SQL腳本生成後,就是最後階段的測試工作了。生成的INSERT語句腳本可以在開發環境、測試環境資料庫執行,然後對新系統一系列的功能和性能測試。

重點關注資料量大的業務資料表,我曾遇到的一個問題是,新系統對一個表的資料是以樹狀菜單的形式展示,但因為舊系統遷移到該表的資料量很大,造成前端頁面響應慢甚至卡死。這種情況下,如果确認資料是無誤的,那隻能對樹狀菜單的展現形式進行調整了。

最後,測試通過後,就可以擇時上線新系統了,将上面生成的SQL語句線上上資料庫執行。

一步一步教你做系統資料遷移

繼續閱讀