數(shù)據(jù)遷移的實(shí)現(xiàn)可以分為三個(gè)階段:數(shù)據(jù)遷移前的準(zhǔn)備、數(shù)據(jù)遷移的實(shí)施和數(shù)據(jù)遷移后的校驗(yàn)。

    由于數(shù)據(jù)遷移的特點(diǎn),大量的工作都需要在準(zhǔn)備階段完成,充分而周到的準(zhǔn)備工作是完成數(shù)據(jù)遷移的主要基礎(chǔ)。具體而言,要進(jìn)行待遷移數(shù)據(jù)源的詳細(xì)說明,包括數(shù)據(jù)的存放方式、數(shù)據(jù)量、數(shù)據(jù)的時(shí)間跨度,建立新舊系統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)字典,對(duì)舊系統(tǒng)的歷史數(shù)據(jù)進(jìn)行質(zhì)量分析,新舊系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的差異分析;新舊系統(tǒng)代碼數(shù)據(jù)的差異分析;建立新老系統(tǒng)數(shù)據(jù)庫表的映射關(guān)系,對(duì)無法映射字段的處理方法,開發(fā)、部屬ETL 工具,編寫數(shù)據(jù)轉(zhuǎn)換的測(cè)試計(jì)劃和校驗(yàn)程序,制定數(shù)據(jù)轉(zhuǎn)換的應(yīng)急措施。

    其中,數(shù)據(jù)遷移的實(shí)施是實(shí)現(xiàn)數(shù)據(jù)遷移的三個(gè)階段中最重要的環(huán)節(jié)。它要求制定數(shù)據(jù)轉(zhuǎn)換的詳細(xì)實(shí)施步驟流程;準(zhǔn)備數(shù)據(jù)遷移環(huán)境;業(yè)務(wù)上的準(zhǔn)備,結(jié)束未處理完的業(yè)務(wù)事項(xiàng),或?qū)⑵涓嬉欢温洌粚?duì)數(shù)據(jù)遷移涉及的技術(shù)都得到測(cè)試;最后實(shí)施數(shù)據(jù)遷移。

    數(shù)據(jù)遷移后的校驗(yàn)是對(duì)遷移工作的檢查,數(shù)據(jù)校驗(yàn)的結(jié)果是判斷新系統(tǒng)能否正式啟用的重要依據(jù)??梢酝ㄟ^質(zhì)量檢查工具或編寫檢查程序進(jìn)行數(shù)據(jù)校驗(yàn),通過試運(yùn)行新系統(tǒng)的功能模塊,特別是查詢、報(bào)表功能,檢查數(shù)據(jù)的準(zhǔn)確性。

    6.3.1 數(shù)據(jù)遷移的技術(shù)準(zhǔn)備

    數(shù)據(jù)轉(zhuǎn)換與遷移通常包括多項(xiàng)工作:舊系統(tǒng)數(shù)據(jù)字典整理、舊系統(tǒng)數(shù)據(jù)質(zhì)量分析、新系統(tǒng)數(shù)據(jù)字典整理、新舊系統(tǒng)數(shù)據(jù)差異分析、建立新舊系統(tǒng)數(shù)據(jù)之間的影射關(guān)系、開發(fā)部署數(shù)據(jù)轉(zhuǎn)換與遷移程序、制定數(shù)據(jù)轉(zhuǎn)換與遷移過程中的應(yīng)急方案、實(shí)施舊系統(tǒng)數(shù)據(jù)到新系統(tǒng)的轉(zhuǎn)換與遷移工作、檢查轉(zhuǎn)換與遷移后數(shù)據(jù)的完整性與正確性。

    數(shù)據(jù)轉(zhuǎn)換與遷移程序,即ETL 的過程大致可以分為抽取、轉(zhuǎn)換、裝載三個(gè)步驟。數(shù)據(jù)抽取、轉(zhuǎn)換是根據(jù)新舊系統(tǒng)數(shù)據(jù)庫的映射關(guān)系進(jìn)行的,而數(shù)據(jù)差異分析是建立映射關(guān)系的前提,這其中還包括對(duì)代碼數(shù)據(jù)的差異分析。轉(zhuǎn)換步驟一般還要包含數(shù)據(jù)清洗的過程,數(shù)據(jù)清洗主要是針對(duì)源數(shù)據(jù)庫中,對(duì)出現(xiàn)二義性、重復(fù)、不完整、違反業(yè)務(wù)或邏輯規(guī)則等問題的數(shù)據(jù)進(jìn)行相應(yīng)的清洗操作,在清洗之前需要進(jìn)行數(shù)據(jù)質(zhì)量分析,以找出存在問題的數(shù)據(jù),否則數(shù)據(jù)清洗將無從談起。數(shù)據(jù)裝載是通過裝載工具或自行編寫的SQL 程序?qū)⒊槿?、轉(zhuǎn)換后的結(jié)果數(shù)據(jù)加載到目標(biāo)數(shù)據(jù)庫中。

    對(duì)數(shù)據(jù)的檢查

    數(shù)據(jù)格式檢查:檢查數(shù)據(jù)的格式是否一致和可用,目標(biāo)數(shù)據(jù)要求為number 型。

    數(shù)據(jù)長度檢查:檢查數(shù)據(jù)的有效長度。對(duì)于char 類型的字段轉(zhuǎn)換到varchar 類型中,需要特別關(guān)注。

    區(qū)間范圍檢查:檢查數(shù)據(jù)是否包含在定義的最大值和最小值的區(qū)間中;例如年齡為300,或錄入日期在4000-1-1。

    空值、默認(rèn)值檢查:檢查新舊系統(tǒng)定義的空值、默認(rèn)值是否相同,不同數(shù)據(jù)庫系統(tǒng)對(duì)空值的定義可能不同,需要特別關(guān)注。

    完整性檢查:檢查數(shù)據(jù)的關(guān)聯(lián)完整性。如記錄引用的代碼值是否存在,特別需要注意的是有些系統(tǒng)在使用一段時(shí)間后,為了提高效率而去掉了外鍵約束。

    一致性檢查:檢查邏輯上是否存在違反一致性的數(shù)據(jù),特別是存在分別提交操作的系統(tǒng)。

    6.4.2 數(shù)據(jù)遷移工具的選擇

    數(shù)據(jù)遷移程序的開發(fā)、部署主要有兩種選擇,即自主開發(fā)程序或購買成熟的產(chǎn)品。這兩種選擇都有各自不同的特點(diǎn),選擇時(shí)還要根據(jù)具體情況進(jìn)行分析??v觀目前國內(nèi)一些大型項(xiàng)目,在數(shù)據(jù)遷移時(shí)多是采用相對(duì)成熟的ETL 產(chǎn)品??梢钥吹竭@些項(xiàng)目有一些共同特點(diǎn),主要包括:遷移時(shí)有大量的歷史數(shù)據(jù)、允許的宕機(jī)時(shí)間很短、面對(duì)大量的客戶或用戶、存在第三方系統(tǒng)接入、一旦失敗所產(chǎn)生的影響面將很廣。同時(shí)也應(yīng)該看到,自主開發(fā)程序也被廣泛地采用。

    相關(guān)的ETL 產(chǎn)品

    目前,許多數(shù)據(jù)庫廠商都提供數(shù)據(jù)抽取工具,如Informix 的InfoMover、Microsoft SQL Server7 的DTS 和Oracle 的Oracle Warehouse Builder 等,這些工具在一定范圍內(nèi)解決了數(shù)據(jù)的提取和轉(zhuǎn)換。但這些工具基本都不能自動(dòng)完成數(shù)據(jù)的抽取,用戶還需利用這些工具編寫適當(dāng)?shù)霓D(zhuǎn)換程序。

    例如Oracle 的Oracle Warehouse Builder 數(shù)據(jù)抽取工具,簡稱OWB,提供的功能包括:模型構(gòu)造和設(shè)計(jì);數(shù)據(jù)提取、移動(dòng)和裝載;元數(shù)據(jù)管理等。但OWB 提供的流程繁瑣,維護(hù)很困難,不易于使用。

    在第三方產(chǎn)品中,Ascential Software 公司的DataStage 是一套相對(duì)比較完善的產(chǎn)品。DataStage 可以從多個(gè)不同的業(yè)務(wù)系統(tǒng)中,從多個(gè)平臺(tái)的數(shù)據(jù)源中抽取數(shù)據(jù),完成轉(zhuǎn)換和清洗,裝載到各種系統(tǒng)里面。其中每步都可以在圖形化工具里完成,同樣可以靈活的被外部系統(tǒng)調(diào)度,提供專門的設(shè)計(jì)工具來設(shè)計(jì)轉(zhuǎn)換規(guī)則和清洗規(guī)則等,實(shí)現(xiàn)了增量抽取、任務(wù)調(diào)度等多種復(fù)雜而實(shí)用的功能。其中簡單的數(shù)據(jù)轉(zhuǎn)換可以通過在界面上拖拉操作和調(diào)用一些DataStage 預(yù)定義轉(zhuǎn)換函數(shù)來實(shí)現(xiàn),復(fù)雜轉(zhuǎn)換可以通過編寫腳本或結(jié)合其他語言的擴(kuò)展來實(shí)現(xiàn),并且DataStage 提供調(diào)試環(huán)境,可以極大地提高開發(fā)和調(diào)試抽取、轉(zhuǎn)換程序的效率。

分享到

多易

相關(guān)推薦