如何全面建設(shè)B端產(chǎn)品中的數(shù)據(jù)遷移方案
在新系統(tǒng)替換老系統(tǒng)或者系統(tǒng)升級的項目中,難免會存在數(shù)據(jù)遷移的工作,并且隨著業(yè)務(wù)系統(tǒng)和數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性,數(shù)據(jù)遷移的難度越大。
這亦要求在項目實施的前期,根據(jù)客戶的需求盡可能全面地考慮到各個方面,輸出一份詳細的數(shù)據(jù)遷移方案。
筆者將結(jié)合實際的項目工作經(jīng)驗,將一些在數(shù)據(jù)遷移中的感悟與各位分享共勉。
一、遷移準備
遷移前需要調(diào)研的內(nèi)容包含:
1. 老系統(tǒng)存儲數(shù)據(jù)所使用的數(shù)據(jù)庫類型
例如oracle、mysql、sqlserver等,或某些廠商封裝的數(shù)據(jù)庫,因為每種數(shù)據(jù)庫的數(shù)據(jù)存儲結(jié)構(gòu)形式存在差異,新老系統(tǒng)如果使用不同的數(shù)據(jù)庫,難免需要處理。對于常見的數(shù)據(jù)庫轉(zhuǎn)換,市面上有開源工具可批量處理。
2. 老系統(tǒng)存儲數(shù)據(jù)的形式
是否包含圖片、表單、音視頻等多媒體內(nèi)容;是否包含附件,附件是否可在線預(yù)覽;系統(tǒng)內(nèi)的數(shù)據(jù)是否有相互關(guān)聯(lián)關(guān)系等。這些將作為遷移完成后,驗證遷移效果的重要用例。
3. 老系統(tǒng)的業(yè)務(wù)分類
無論是CRM系統(tǒng)、OA系統(tǒng)、工單系統(tǒng),都會細分具體的業(yè)務(wù)類型,數(shù)據(jù)遷移的時候,必然需要按照其對應(yīng)的業(yè)務(wù)分類遷移,因此需要調(diào)研其詳細的業(yè)務(wù)分類。
二、遷移內(nèi)容
遷移的內(nèi)容主要是需要根據(jù)客戶的需求,來確定數(shù)據(jù)的哪些內(nèi)容是需要遷移的,將其總結(jié)為如下幾個方面:
1. 數(shù)據(jù)字段對應(yīng)
根據(jù)調(diào)研,輸出一個數(shù)據(jù)字典對照表,新系統(tǒng)和老系統(tǒng)存儲數(shù)據(jù)的每個字段會不一樣,但實際上對于業(yè)務(wù)來說,功能用處是一樣的;另外,如果老系統(tǒng)含有特有字段,而新系統(tǒng)沒有,那么就需要在新系統(tǒng)開發(fā)對應(yīng)的數(shù)據(jù)表進行存儲。
下表是項目中一個KM系統(tǒng)的數(shù)據(jù)字典對照表:
2. 數(shù)據(jù)的關(guān)聯(lián)關(guān)系
數(shù)據(jù)庫里數(shù)據(jù)之間的相互關(guān)聯(lián),和其他外部系統(tǒng)數(shù)據(jù)的相互關(guān)聯(lián),這部分內(nèi)容在遷移的時候,需要有相互關(guān)聯(lián)的關(guān)系表,一般是以數(shù)據(jù)ID之間的關(guān)聯(lián)關(guān)系來識別,因為ID是每條數(shù)據(jù)的唯一標識。
3. 其他附件數(shù)據(jù)
這部分內(nèi)容可能是掛在某條數(shù)據(jù)下面,也就和數(shù)據(jù)之間進行了關(guān)聯(lián),亦需要關(guān)聯(lián)關(guān)系表,同樣以ID來識別。
另外,也可能是單獨上傳的附件,這部分可直接獲取。附件會存儲在文件服務(wù)器上,且業(yè)務(wù)系統(tǒng)一般會在內(nèi)網(wǎng)部署,遷移時,可直接讀取附件URL地址進行下載上傳。需要注意的是,在URL鏈接里需要拼接附件名字,不然只有附件的ID。
三、遷移方式
數(shù)據(jù)如何從一個系統(tǒng)遷移到另一個系統(tǒng)?
目前所接觸有兩種方式:
- 一是離線的方式,導(dǎo)出本地文件,再導(dǎo)入;
- 另一種是在線的方式,通過接口調(diào)用傳參實現(xiàn)。
由于涉及到兩個系統(tǒng),意味著有第三方(而且往往是新系統(tǒng)的廠商要去替換老系統(tǒng)的廠商,也就是搶別人的飯碗),其第三方配合程度是不可控因素,兩種遷移也就各有優(yōu)缺點。
1. 離線方式
需客戶協(xié)調(diào)老系統(tǒng)導(dǎo)出本地數(shù)據(jù)(可寫SQL語句導(dǎo)出,也可寫代碼導(dǎo)出,根據(jù)業(yè)務(wù)內(nèi)容決定),在導(dǎo)出之前,應(yīng)根據(jù)遷移內(nèi)容提供標準的數(shù)據(jù)模板,包括數(shù)據(jù)字典模板、關(guān)聯(lián)關(guān)系模板、業(yè)務(wù)分類模板等。
優(yōu)點:所有數(shù)據(jù)已導(dǎo)出,均在自己手中,實施遷移的時候,很多問題都在自己的可控范圍。
缺點:
- 數(shù)據(jù)量過大時,導(dǎo)入導(dǎo)出時間長,且可能存在程序崩潰的風(fēng)險(可考慮分批次);
- 在新老系統(tǒng)過度期間,需要多次執(zhí)行導(dǎo)出導(dǎo)入。
2. 在線方式
接口傳參需要第三方開發(fā)調(diào)用接口,同樣在開發(fā)接口之前,需按照遷移內(nèi)容提供標準的統(tǒng)一接口文檔。同時,為不影響生產(chǎn)系統(tǒng),也可能需過濾一些敏感信息,需建立中間庫。
優(yōu)點:在系統(tǒng)切換過度期間,可定時掃描調(diào)用接口傳參(即增量數(shù)據(jù))。
缺點:需要第三方開發(fā),有工作量,且調(diào)試接口的時候,配合程度不可控。
四、實施遷移
實施遷移即數(shù)據(jù)整理與數(shù)據(jù)轉(zhuǎn)換。數(shù)據(jù)整理就是將老系統(tǒng)數(shù)據(jù)整理為系統(tǒng)轉(zhuǎn)換程序能夠識別的數(shù)據(jù);數(shù)據(jù)轉(zhuǎn)換就是將整理完成后的數(shù)據(jù)按照一定的轉(zhuǎn)換規(guī)則轉(zhuǎn)換成新系統(tǒng)要求的數(shù)據(jù)格式。
同時這部分需要開發(fā)遷移代碼,在代碼完成后,特別注意的是需先進行小批量的遷移進行驗證,無問題后,再進行大批量直至全量遷移。
五、遷移保障
為保障遷移的整個過程順利和遷移數(shù)據(jù)完整準確性,過程中需要有如下幾個方面可參考:
- 遷移的數(shù)據(jù)全量備份:防止系統(tǒng)崩潰,數(shù)據(jù)丟失;
- 遷移過程打印日志:(如:遷移了多少數(shù)據(jù),其中成功多少條,失敗多少條);
- 遷移完的驗證:a.如在遷移準備中第2點描述的數(shù)據(jù)的集中類型,需核對是否與老知識庫對應(yīng),展現(xiàn)形式是否完整;b.抽檢數(shù)據(jù)驗證,可按照GB2828-81中的AQL值為標準進行抽檢,抽檢的方式可按照分層抽樣(即每多少條數(shù)據(jù)抽檢幾條驗證)。
結(jié)語
以上為個人在項目中關(guān)于數(shù)據(jù)遷移的一些感悟總結(jié),最后將整個數(shù)據(jù)遷移的過程以一張圖總結(jié)下:
作者:菜鳥店小二,AI產(chǎn)品經(jīng)理
本文由 @菜鳥店小二 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
缺少遷移失敗的補救機制講解
我們公司正在做一款垂直行業(yè)的多租戶模式的saas平臺,因為客戶的入駐,有的客戶需要把他們舊系統(tǒng)(即我們的競品系統(tǒng))中的數(shù)據(jù)遷移到我們平臺中來。考慮到客戶舊系統(tǒng)的多樣性,有的是第三方開源系統(tǒng),有的是客戶自研的系統(tǒng)等??紤]到成本,目前我們所做的方式你問中所說的“在線遷移”,我們規(guī)定舊系統(tǒng)需要按我們給出的約定編寫各類數(shù)據(jù)導(dǎo)出接口,再由我們平臺進行拉取來完成遷移。接口的開發(fā)者一般是客戶,同樣如文中所說,在與客戶校對、調(diào)試接口的過程中也會比較費事的,有時在拉取導(dǎo)入的時候因為接口部分數(shù)據(jù)有問題還要反反復(fù)復(fù)的導(dǎo)入很多次。
本來還想找找其他更好的方案的,貌似全網(wǎng)也沒有更好的了
大多數(shù)時候數(shù)據(jù)遷移的代價比不遷移還大,設(shè)置新老系統(tǒng)并行磨合期也挺好用的,老系統(tǒng)查歷史數(shù)據(jù),逐步切換新系統(tǒng)運行各個線條業(yè)務(wù),最小代價完成切換,數(shù)據(jù)遷移不是目的,往往是新老切換不得已的妥協(xié)手段
如何過渡是前期就應(yīng)該考慮的重要的點