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