數據遷移:高難度帶來高回報
譯文【51CTO譯文】請允許我花幾分鐘向大家解釋整個轉換處理方式,至少是在宏觀上形成概念。在閱讀之后,大家可能會發現這方面知識有助于幫助各位向非技術人士詳盡闡釋相關的后端流程。
一切從Excel開始
讓我們先從最困難的常見情況:可怕的Excel電子表格開始。就在前一陣子,某家遠在他方的企業打算對有價值的業務流程數據進行一番收集與整理,其中包括庫存、銷售額、客戶資料等等。由于缺乏合適的工具,員工制作了一份Excel電子表格,并利用它承載信息。隨著時間的推移,其中逐漸積累起數千條記錄、電子表格本身的功能性缺失也開始暴露出來。最終,企業管理者決定將這部分數據轉換成到真正的數據庫當中。不知道他們當時是選擇聘請咨詢服務公司還是利用內部資源加以處理,總之有人接手了這份工作。
這項任務的第一步是檢查數據本身的純潔度。在理想狀態下,電子表格本身會以數據庫的方式對信息進行分類,且每個數據填充區都處于對應的列之下——例如姓氏、名字、街道、城市等等。然而事情并不總能如此順利,有時候兩類包含信息交集的單元格會自上而下位于同一列當中。就以聯系人列為例,其中很可能囊括了全名、公司、地址、電話號碼等多種獨立單元。緊隨其后的下一列也可能是對方最新訂購信息或2012年采購總額等數據,這就給轉換工作帶來了極大的挑戰。
讓我們先看看第一種情況——即理想情況,這是最易于處理的狀態。數據比較單純且具備良好的排序,我們可以通過CSV將其導出并通過自定義解析器把它翻譯成數據庫內容。優秀的CSV解析器能夠將所有這些記錄逐一抽離出來匯總成整體數組,然后插入到新的數據庫當中。在整個過程中,我們可以對數據進行檢查及修改,進而使數據格式更好地適應新數據庫的要求。
舉例來說,我們可能會利用正則表達式處理電話號碼信息,旨在將不同格式的電話號碼轉化為同一標準。這要求大家在將內容插入新數據庫之前,調整好表格中包含的一切特殊符號并對字符串進行格式化處理。操作將把(212)555-1212、212-555-1212、2125551212、212555 1212或者212.555.1212等數字轉化成統一的電話號碼格式(2120555-1212,這既能提高數字的可讀性、又便于未來進行搜索。
我們會利用/[^0-9]+/ 這樣的正則表達式實現去格式化,然后通過/([0-9]{3})([0-9]{3})([0-9]{4})/表達式將內容重新加工為新的格式,這樣最終結果才能正確處理組成分段號碼信息的212、555與1212三部分。只要愿意,我們馬上就可以對電話號碼進行二次格式化。但請注意,如果我們遇到那些因為太長或太短而不可能是電話號碼的數字對象時,也要想好對應的解決方式。
讓自由格式貫穿始終
然而一旦表格的格式更加自由,處理的難度也就隨之提升。地址就是其中最不容易打理的類型,因為它們的格式比較隨意、可能需要通過多種不同方式進行格式化。另外大家還需要留意形態萬千的街道與城市名稱。舉例來說,我們必須確保自己能正確識別“華盛頓哥倫比亞特區”、“華盛頓特區”和“華盛頓”這三種縮寫(分別為Washington,DC、Washington, DC以及Washington DC),并弄清楚"Winston-Salem, NC," "King of Prussia, PA," "Scranton, Penn.," "N. Providence RI," "Houston, tx," and "O'Fallon, IL."等令人頭痛的城市名稱與所在州名稱組合。
如果不對內容進行嚴格界定,這些層出不窮的變化完全可能把解析器逼到崩潰,因為我們無法去除其中存在的特殊字符。另外,我們也不能指望通過不同數量的空格來區分城市名稱、州名稱、州名稱縮寫或者地名大寫等。因此,我們需要創建一套條件表達式,以最大程度確定這些數據所對應的實際城市與國家,甚至必須與包含美國所有城市與州名稱的標準數據庫進行比照。根據檢測結果,我們可能需要對記錄進行重新清查或者至少將對應記錄加以標記,以備日后手動檢查。
到這里,我們才僅僅剝開問題的表面。光是搞清楚每條記錄中城市、州名與電話號碼就需要我們投入大量資金與精力,更不要說重新加工并重復電子表格中的其它文本信息了——具體工作量取決于其實際內容。
為什么會出現如此被動的局面?這是因為數據項使用了不受約束的自由格式,而它幾乎困擾著世界各地的每一家企業。需要強調,Excel并不是這一切問題的罪魁禍首。Access、自主開發的數據庫或者其它任何應用都可能引發此類難題。可以說,除非我們嚴格把住輸入數據的類型與格式關,否則數據積累的結果只會是一團亂麻。很顯然,解決問題的關鍵在于建立一套合適的數據庫前端來處理數據輸入:我們可以在數據進入的同時對其進行清理與調整,這將大大提高數據的準確性與可用性。準確性與可用性,這是優先使用數據庫處理信息的主要優勢之一。
然而我們也不能忽視利用后端處理這些數據庫集類型的努力。目前我們已經擁有各類相當成熟的工具來簡化這一流程,但它們仍無法在每個用例中都切實生效。盡管它們能在一定程度上讓輸入數據保持“標準”,但漏掉的部分同樣會引發問題,這種沖突甚至比不進行預處理來得更加嚴重。
這類工作相當乏味,需要技術人員將全部精力集中在細節之上。它要求我們投入大量人工進行數據檢驗、試運行、調整并對部分項目開發工作加以前瞻性考量。但總體而言,這一切付出幾乎都能獲得令人滿意的高額回報。
純潔清爽的數據令日常工作變得極富效率,這也是每家企業所追求的目標。但大家也千萬不能低估整個轉換過程中可能出現的嚴峻挑戰。
原文鏈接:http://www.infoworld.com/d/data-center/data-migration-hard-do-216342
原文標題:Data migration is hard to do
【編輯推薦】