複製鏈接
請複製以下鏈接發送給好友

數據遷移

鎖定
數據遷移(又稱分級存儲管理,hierarchical storage management,hsm)是一種將離線存儲與在線存儲融合的技術。它將高速、高容量的非在線存儲設備作為磁盤設備的下一級設備,然後將磁盤中常用的 數據按指定的策略自動遷移到磁帶庫(簡稱帶庫)等二級大容量存儲設備上。當需要使用這些數據時,分級存儲系統會自動將這些數據從下一級存儲設備調回到上一 級磁盤上。對於用户來説,上述數據遷移操作完全是透明的,只是在訪問磁盤的速度上略有怠慢,而在邏輯磁盤的容量上明顯感覺大大提高了。
數據遷移是將很少使用或不用的文件移到輔助存儲系統(如磁帶或光盤)的存檔過程。這些文件通常是需在未來任何時間可進行方便訪問的圖像文檔或歷史信息。遷移工作與備份策略相結合,並且仍要求定期備份。還包括電腦數據遷移,遷移舊電腦(舊系統)中的數據、應用程序、個性化設置等到新電腦(新系統),在系統升級後很有必要。
中文名
數據遷移
外文名
Data Migration
別    名
分級存儲管理
數據遷移的實現可以分為3個階段:數據遷移前的準備、數據遷移的實施和數據遷移後的校驗。由於數據遷移的特點,大量的工作都需要在準備階段完成,充分而周到的準備工作是完成數據遷移的主要基礎。具體而言,要進行待遷移數據源的詳細説明(包括數據的存儲方式、數據量、數據的時間跨度);建立新舊系統數據庫的數據字典;對舊系統的歷史數據進行質量分析,新舊系統數據結構的差異分析;新舊系統代碼數據的差異分析;建立新老系統數據庫表的映射關係,對無法映射字段的處理方法;開發、部屬ETL工具,編寫數據轉換的測試計劃和校驗程序;制定數據轉換的應急措施。
其中,數據遷移的實施是實現數據遷移的3個階段中最重要的環節。它要求制定數據轉換的詳細實施步驟流程;準備數據遷移環境;業務上的準備,結束未處理完的業務事項,或將其告一段落;對數據遷移涉及的技術都得到測試;最後實施數據遷移。
數據遷移後的校驗是對遷移工作的檢查,數據校驗的結果是判斷新系統能否正式啓用的重要依據。可以通過質量檢查工具或編寫檢查程序進行數據校驗,通過試運行新系統的功能模塊,特別是查詢、報表功能,檢查數據的準確性。

數據遷移數據遷移的技術準備

數據轉換與遷移通常包括多項工作:舊系統數據字典整理、舊系統數據質量分析、新系統數據字典整理、新舊系統數據差異分析、建立新舊系統數據之問的映射關係、開發部署數據轉換與遷移程序、制定數據轉換與遷移過程中的應急方案、實施舊系統數據到新系統的轉換與遷移工作、檢查轉換與遷移後數據的完整性與正確性。
數據轉換與遷移的過程大致可以分為抽取、轉換、裝載三個步驟。數據抽取、轉換是根據新舊系統數據庫的映射關係進行的,而數據差異分析是建立映射關係的前提,這其中還包括對代碼數據的差異分析。轉換步驟一般還要包含數據清洗的過程,數據清洗主要是針對源數據庫中,對出現二義性、重複、不完整、違反業務或邏輯規則等問題的數據進行相應的清洗操作;在清洗之前需要進行數據質量分析,以找出存在問題的數據,否則數據清洗將無從談起。數據裝載是通過裝載工具或自行編寫的SQL程序將抽取、轉換後的結果數據加載到目標數據庫中。 [1] 
對數據的檢查包括以下6個方面。
(1)數據格式檢查。檢查數據的格式是否一致和可用,目標數據要求為number型。
(2)數據長度檢查。檢查數據的有效長度,對於char類型的字段轉換到varchar類型中,需要特別關注。
(3)區間範圍檢查。檢查數據是否包含在定義的最大值和最小值的區間中。例如年齡為300或錄入日期為4000—1—1顯然有問題。
(4)空值、默認值檢查。檢查新舊系統定義的空值、默認值是否相同,不同數據庫系統對空值的定義可能不同,需要特別關注。
(5)完整性檢查。檢查數據的關聯完整性。如記錄引用的代碼值是否存在,特別需要注意的是有些系統在使用一段時間後,為了提高效率而去掉了外鍵約束。
(6)一致性檢查。檢查邏輯上是否存在違反一致性的數據,特別是存在分別提交操作的系統。

數據遷移數據遷移的工具選擇

數據遷移工具的開發、部署主要有2種選擇,即自主開發程序或購買成熟的產品。這2種選擇都有各自不同的特點,選擇時還要根據具體情況進行分析。縱觀目前國內一些大型項目,在數據遷移時多是採用相對成熟的ETL產品。可以看到這些項目有一些共同特點,主要包括:遷移時有大量的歷史數據、允許的宕機時間很短、面對大量的客户或用户、存在第三方系統接入、一旦失敗所產生的影響面將很廣。同時也應該看到,自主開發程序也被廣泛地採用。
目前,許多數據庫廠商都提供數據抽取工具,如Informix的InfoMover、Microsoft SQLServer的DTS和0raele的Oracle Warehouse Builder等。這些工具在一定範圍內解決了數據的提取和轉換。但這些工具基本都不能自動完成數據的抽取,用户還需利用這些工具編寫適當的轉換程序。
例如Oracle的Oracle Warehouse Builder(OWB)數據抽取工具提供的功能包括:模型構造和設計,數據提取、移動和裝載,元數據管理等。但OWB提供的流程繁瑣,維護很困難,不易於使用。
在第三方產品中,Ascential Software公司的DataStage是一套相對比較完善的產品。DataStage可以從多個不同的業務系統、從多個平台的數據源中抽取數據,完成轉換和清洗,裝載到各種系統裏面,其中每步都可以在圖形化工具裏完成;同樣可以靈活地被外部系統調度,提供專門的設計工具來設計轉換規則和清洗規則等,實現了增量抽取、任務調度等多種複雜而實用的功能。其中簡單的數據轉換可以通過在界面上拖拉操作和調用一些DataStage預定義轉換函數來實現,複雜轉換可以通過編寫腳本或結合其他語言的擴展來實現,並且DataStage提供調試環境,可以極大地提高開發和調試抽取、轉換程序的效率。 [2] 

數據遷移數據抽取和轉換的準備

數據抽取前,需要作大量的準備工作,具體歸納為如下4個部分。
(1)針對目標數據庫中的每張數據表,根據映射關係中記錄的轉換加工描述,建立抽取函數。該映射關係為前期數據差異分析的結果。抽取函數的命名規則為:F_目標數據表名_E。
(2)根據抽取函數的SQL語句進行優化。可以採用的優化方式為:調整SORTAREA_SIZE和HASH_AREA_SIZE等參數設置、啓動並行查詢、採用提示指定優化器、創建臨時表、對源數據表作ANALYZES、增加索引。
(3)建立調度控制表,包括ETL函數定義表(記錄抽取函數、轉換函數、清洗函數和裝載函數的名稱和參數)、抽取調度表(記錄待調度的抽取函數)、裝載調度表(記錄待調度的裝載信息)、抽取日誌表(記錄各個抽取函數調度的起始時間和結束時間以及抽取的正確或錯誤信息)、裝載日誌表(記錄各個裝載過程調度的起始時間和結束時間以及裝載過程執行的正確或錯誤信息)。
(4)建立調度控制程序,根據抽取調度表動態調度抽取函數,並將抽取的數據保存入平面文件。平面文件的命名規則為:目標數據表名.txt。
數據轉換的工作在ETL過程中主要體現為對源數據的清洗和代碼數據的轉換。數據清洗主要用於清洗源數據中的垃圾數據,可以分為抽取前清洗、抽取中清洗和抽取後清洗。ETL對源數據主要採用抽取前清洗。對代碼表的轉換可以考慮在抽取前轉換和在抽取過程中進行轉換,具體如下。
(1)針對ETL涉及的源數據庫中數據表,根據數據質量分析的結果,建立數據抽取前的清洗函數。該清洗函數可由調度控制程序在數據抽取前進行統一調度,也可分散到各個抽取函數中調度。清洗函數的命名規則為:F_源數據表名_T_C。
(2)針對ETL涉及的源數據庫中數據表,根據代碼數據差異分析的結果,如果需要轉換的代碼數據值長度無變化或變化不大,考慮對源數據表中引用的代碼在抽取前進行轉換。抽取前轉換需要建立代碼轉換函數,代碼轉換函數由調度控制程序在數據抽取前進行統一調度。代碼轉換函數的命名規則為:F_源數據表名_T_DM。
(3)對新舊代碼編碼規則差異較大的代碼,考慮在抽取過程中進行轉換。根據代碼數據差異分析的結果,調整所有涉及該代碼數據的抽取函數。

數據遷移數據遷移後的校驗

在數據遷移完成後,需要對遷移後的數據進行校驗。數據遷移後的校驗是對遷移質量的檢查,同時數據校驗的結果也是判斷新系統能否正式啓用的重要依據。
可以通過以下2種方式對遷移後的數據進行校驗:新舊系統查詢數據對比檢查,通過新舊系統各自的查詢工具,對相同指標的數據進行查詢,並比較最終的查詢結果;先將新系統的數據恢復到舊系統遷移前一天的狀態,然後將最後一天發生在舊系統上的業務全部補錄到新系統,檢查有無異常,並和舊系統比較最終產生的結果。
對遷移後的數據進行質量分析,可以通過數據質量檢查工具或編寫有針對性的檢查程序進行。對遷移後數據的校驗有別於遷移前歷史數據的質量分析,主要是檢查指標的不同。遷移後數據校驗的指標主要包括5方面:完整性檢查,引用的外鍵是否存在;一致性檢查,相同含義的數據在不同位置的值是否一致;總分平衡檢查,例如欠税指標的總和與分部門、分户不同數據的合計對比;記錄條數檢查,檢查新舊數據庫對應的記錄條數是否一致;特殊樣本數據的檢查,檢查同一樣本在新舊數據庫中是否一致。

數據遷移方法

數據遷移可以採取不同的方法進行,歸納起來主要有三種方法,即系統切換前通過工具遷移、系統切換前採用手工錄入、系統切換後通過新系統生成。
遷移(和回遷)是將文件從珍貴的高速磁盤空間移出並移到輔助高容量主媒體光盤的過程。文件在脱機時仍可用,但用户需通過網絡訪問它們。
該過程是通過將存檔文件的名稱列表保留在主媒體上實現的。當用户需要存檔的文件時,他們在該目錄中查找該文件,找到後像普通的文件一樣打開它。隨即文件從輔助存儲器(光盤)上回遷到主存儲器(磁盤)上。該過程在後台發生,用户可能不知道文件已經從光盤中回遷出來。當用户處理完成時,文件又遷回至輔助存儲器中。遷移過程在某個特定的時間段後或按用户或網絡管理員的意願立即發生。
Novell NetWare高容量存儲系統(HCSS)是支持脱機光盤自動換盤機存儲設備的數據存檔系統。光盤自動換盤機是可以從可重寫光盤庫中選盤的自動換盤設備。HCSS使用數據遷移技術在高速、低容量存儲設備(服務器的硬盤)和低速、大容量存儲設備光盤庫)之間移動文件。用户在一個特殊的目錄中仍能採用文件的清單,這些文件看起來就象被聯機存儲一樣。
HCSS系統將管理員作上標記的文件“遷移”到脱機光盤庫存儲設備中。如果用户需要已遷移的文件,他只需按普通方法對其進行訪問。HCSS系統反向遷移文件到磁盤,用户就能對其訪問。除了很短的訪問延遲,用户將不會意識到訪問的是歸檔文件。一段時間後,文件又重新遷移回光盤。

數據遷移特點

數據遷移直接映射

原來是什麼就是什麼,原封不動照搬過來,對這樣的規則,如果數據源字段和目標字段長度或精度不符,需要特別注意看是否真的可以直接映射還是需要做一些簡單運算。

數據遷移字段運算

數據源的一個或多個字段進行數學運算得到的目標字段,這種規則一般對數值型字段而言。

數據遷移參照轉換

在轉換中通常要用數據源的一個或多個字段作為Key,去一個關聯數組中去搜索特定值,而且應該只能得到唯一值。這個關聯數組使用Hash算法實現是比較合適也是最常見的,在整個ETL開始之前,它就裝入內存,對性能提高的幫助非常大。

數據遷移字符串處理

數據源某個字符串字段中經常可以獲取特定信息,例如身份證號。而且,經常會有數值型值以字符串形式體現。對字符串的操作通常有類型轉換、字符串截取等。但是由於字符類型字段的隨意性也造成了髒數據的隱患,所以在處理這種規則的時候,一定要加上異常處理

數據遷移空值判斷

數據遷移 數據遷移
對於空值的處理是數據倉庫中一個常見問題,是將它作為髒數據還是作為特定一種維成員?這恐怕還要看應用的情況,也是需要進一步探求的。但是無論怎樣,對於可能有NULL值的字段,不要採用“直接映射”的規則類型,必須對空值進行判斷,我們的建議是將它轉換成特定的值。

數據遷移日期轉換

數據倉庫中日期值一般都會有特定的,不同於日期類型值的表示方法,例如使用8位整型20040801表示日期。而在數據源中,這種字段基本都是日期類型的,所以對於這樣的規則,需要一些共通函數來處理將日期轉換為8位日期值、6位月份值等。

數據遷移日期運算

基於日期,我們通常會計算日差、月差、時長等。一般數據庫提供的日期運算函數都是基於日期型的,而在數據倉庫中採用特定類型來表示日期的話,必須有一套自己的日期運算函數集。

數據遷移聚集運算

對於事實表中的度量字段,他們通常是通過數據源一個或多個字段運用聚集函數得來的,這些聚集函數為SQL標準中,包括sum,count,avg,min,max。

數據遷移既定取值

這種規則和以上各種類型規則的差別就在於它不依賴於數據源字段,對目標字段取一個固定的或是依賴系統的值。
通俗地講,數據遷移 是一種可以把大量不經常訪問的數據存放在帶庫、盤庫等離線介質上,只在盤陣上保存少量訪問頻率高的數據的技術。當那些磁帶等介質上數據被訪問時,系統自動 的把這些數據回遷到盤陣中;同樣,盤陣中很久未訪問的數據被自動遷移到磁帶介質上,從而大大降低投入和管理成本。
參考資料