不多說,直接上干貨!
Kettle工具在設計初,就考慮到了一些設計原則。這些原則里借鑒了以前使用過的其他一些ETL工具積累下的經驗和教訓。
易於開發:作為數據倉庫和ETL開發者,你只想把時間用在創建BI解決方案上。任何用於軟件安裝、配置的時間都是一種浪費。例如,為了創建數據庫連接,很多和Kettle類似的Java工具都要求用戶手工輸人數據庫驅動類名和JDBC URL連接串。盡管用戶通過互聯網都能搜索到這些信息,但這明顯把用戶的注意力轉移到了技術方面而非業務方 而。Kettle盡量避免這類問題的發生。
避免自定義開發:一般來說,ETL工具要使簡單的事情更簡單,使復雜的事情成為可能。ETLT具提供了標准化的構建組件來實現ETL開發人員不斷重復的需求。當然可以通過手工寫Java代碼或Java腳本來實現一些功能。但增加的每一行代碼都給項目增加了復雜度和維護成本。所以盡量避免手工開發,盡量使用已提供組件的各種組合來完成任務。
所有功能都通過用戶界面完成:對於這一黃金准則也有很少的幾個例外(如kettle, properties和shared.xmr文件就是兩個例外,不能通過界面,要手丁修改配置文件),如果不直接把所有功能通過界面的方式提供給用戶,實際上就是在浪費開發人員的時間, 也是在浪費用戶的時間。專家級的ETL元數據還要去學習隱藏在界面以外的一些特性。在Kettle里,ETL元數據可以通過XML格式表現,或通過資源庫,或通過使用Java API。 無論ETL元數據是以哪種形式提供,都可以百分之百通過圖形用戶界面來編輯。
沒有命名限制:ETL轉換里有各種各樣的名稱,如數據庫連接、轉換、步驟、數據字段、作業等都要有一個名稱。如果還要在命名時考慮到一些限制(如長度、選擇的字符),就會給工作帶來一定麻煩。ETL具需要足夠的智能化來處理ETL開發人員設置 的各種名稱。最終ETL解決方案應該吋以盡可能地描述,這樣可以部分減少文檔的需求,減少項目維護成本。
透明:如果有ETL工具需要你了解轉換中某一部分工作是如何完成的,那么這個ETL工具就是不透明的。當然,如果想己實現ETL工具里某一個同樣的功能,你就要確切地 知道這一部分功能是如何完成的。不過允許用戶看到ETL過程中各部分的運行狀態也是很重要的,這樣可以加快開發速度、降低維護成本。ETL工作流程中的不同部分不能互相影響,它們應該只是以指定的順序傳遞數據。這種 數據隔離的原則也在很大程度上影響了透明性,那些使用非數據隔離的ETLT具的用戶 會感受到透明的益處。
靈活的數據通道:對ETL開發者來說,創造性極端重要,創造性不但讓你享受到工作的樂趣,而且能讓你以最快的方式開發出ETL方案。Kettle從設計初始就在數據的發送、 接收方式上盡可能靈活。Kettle可以在文本文件、關系數據庫等不同目標之間復制和分發數據,從不同數據源合並數據也是內核引擎的一部分,也同樣很簡單。
只映射需要映射的字段:在一些ETL工具里經常可以看到數百行的輸人和輸出映射,對於維護人員來說這是一個艦夢。在ETL開發過程中,字段要經常變動,這樣的大量映射也會增加維護成本。
Kettle的一個重要核心原則就是在ETL流程中所有未指定的字段都自動被傳遞到下一個組件。這個原則極大減少了維護成本。也就是說輸人中的字段會ft動出現在輸出中,除非中間過程特別設置了終止某個字段的傳遞。