資料處理 ETL Development (1)

基本介紹

教學目標

初步了解 ETL 批次程式開發流程和相關面臨的問題。

重點概念

在 1970 年美國為了國防和航太計劃產生瀑布式模型 (Waterfall Model) 之開發流程主要有五個階段,分別為需求 (Requirements)、設計 (Design)、實作 (Implementatino)、驗證 (Verification) 和維護 (Maintenance),主要著重於安全的開發方式、要求詳細的準備文件、適合大型專案開發,可惜開發時間較長和當需求有變動就會導致後面階段進行修改。接著有許多開發流程針對瀑布式進行改良,統一軟體開發過程 (Rational Unified Process,RUP),主要有四個階段,分別為起始階段 (Initial Phase)、精細規劃階段 (Elaboration Phase)、建構階段 (Construction Phase) 和移轉階段 (Transition Phase)。

其中針對 ETL 批次程式開發我們花費比較多的時間在於「起始階段」和「精細規劃階段」。「起始階段」主要會進行可行性分析,定義批次程式的影響範圍,了解實際解決的問題和預期達成的成效,以及評估所需人天。接著「精細規劃階段」主要是針對批次程式進行架構的分析與設計。再來進行「建構階段」主要透過 IBM Rational ClearQuest 進行批次程式實作與測試,主要會針對需求填寫相關說明,包括設計與實作資訊、測試和過版資訊、上線資訊、使用者確認信、資訊安全測試報告等相關資訊。接著進行確認執行變更作業,就能夠透過 IBM Rational ClearCase,選擇與此需求相關批次程式進行簽出(Check Out) 作業,在開發環境進行批次程式的修改和單元測試 (Unit Test,UT),待確認無誤之後,將相關批次程式進行簽入 (Check In) 作業,完成版本控管的任務,最後返回 IBM Rational ClearQuest 進行完成變更作業。等待相關批次程式自動和手動搬移至測試環境之後,在測試環境進行使用者接受度測試 (User Acceptance Test,UAT),又稱整合測試。最後「移轉階段」主要進行批次程式的上線,並且透過批次管理工具進行排程和監控等相關設定。

然而「建構階段」會面臨資料驗證和效能處理等問題,一般來說為了資訊安全的考量開發環境會與測試/正式環境分隔,以及測試環境只能讀取加密處理的檢視表,而非正式環境原始的資料表,因此將會需要透過自動化程式達成將正式環境中資料表快速拷貝一份至開發環境,可是因為有個資外洩的疑慮所以無法長久保留所以每次使用完畢皆要刪除,導致非常不方便,再著透過自動化程式達成 ETL 批次程式中資料庫名稱自動切換和加密欄位自動處理等應用,可是當面臨上千行以上的 SQL 陳述式時,導致非常不方便。此外開發環境與正式環境的設備不一定相同等級,資料量當然也是,因此需要在測試環境才能進行效能測試,此時就算通過單元測試在整合測試階段也會面臨效能問題,為了解決此效能問題就必須再簡化和折解 SQL 陳述式,導致非常不方便。所以若能夠更有效的解決上述所面臨的三個問題,理應就能簡化建構階段加速 ETL 批次程式開發。

最後技術債 (Technical Debt) 將會是上千個 ETL 批次程式開發之後會面臨最大的問題,簡單來說當因為時間緊迫導致走捷徑時,技術債就會發生,導致日後必須整理令人費解的批次程式、複雜的資料模型和不注意細節設計等問題,所以當在進行 ETL 批次程式開發時儘可能花時間思考如何有效避免不必要的技術債。此外最好能避免有相關 ETL 批次程式實作之後,就很難更改的錯誤概念,而導致預先做大量設計 (Big Design Up Front,BDUF) 的問題,會在前期加入了許多不需要的資料轉換,而忽略必要的資料轉換,造成更多問題發生,但是若能夠簡化建構階段的流程也就能夠快速實踐足夠可用的 ETL 批次程式。

相關資源