海量資料遷移之資料載入流程

jeanron100發表於2015-03-27
在之前的博文中分享了關於資料抽取流程的一些思路,整體來說,資料的抽取是輔助,資料的載入是關鍵。載入的過程中每一步需要格外關注,稍有偏差就可能造成資料的損壞或者丟失。
為了更加清晰的說明透過外部表來實現資料載入的流程,特意畫了如下的流程圖。


在這個圖中,資料的抽取是左邊的部分,可以根據需要生成對應的外部表dump檔案。
這個時候可以在目標環境中也建立只讀使用者,外部表使用者,只讀使用者中只存放同義詞,外部表使用者中存放的是需要載入的外部表,整個外部表的載入過程不會消耗額外的物理空間,而且載入啊速度極快。
這麼做有幾個好處,最大的一個好處就是可以透過這種方式提前進行資料校驗。把一些潛在的資料衝突問題提前發現,提前修復,如果在大半夜的資料載入中發現了問題,再去修復似乎就晚了很多,而且帶著疲憊去嘗試修復資料真實苦不堪言。
右邊的圖是資料載入的一個流程圖。
我特意把外部表的dump檔案用類似u盤的圖示代替就是想說明外部表的載入是即插即用,用完直接解除安裝即可。
而資料在載入之前需要做的一個重要步驟就是資料比較,就是右邊圖中藍色的標示部分。
透過比較只讀使用者(即目標資料)和外部表使用者中的外部表資料(源資料),可以靈活的匹配主鍵列,非唯一性約束列可以很有效的進行資料的冗餘比較。
有了這種方式,在多次的資料遷移中,都可以在資料載入前提前進行資料檢查。著實讓人放心不少,對於提升自信心是很有幫助的。一旦發現了資料問題,就可以及時發現,提前發現,讓專門的團隊及時修復資料。
至於最關鍵的資料載入,就是外部表使用者和目標資料使用者之間的資料關聯了。可以透過insert append的方式進行資料的匯入。可以根據資料情況進行切分粒度的控制。比如我們有一個表test特別大,有500G,我們就可以把這個大表在收據抽取的時候進行細粒度的切分,比如我們透過啟用並行生成了500個dump檔案,這樣每個dump檔案就基本上是1G的標準,每1G的資料載入我們及時提交,會給Undo帶來緩解不少的壓力。而且這樣資料的載入流程可以靈活控制,而不用用漫長的等待來做最終載入是否成功的賭注。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1476445/,如需轉載,請註明出處,否則將追究法律責任。

相關文章