ETL的可擴充套件性和可維護性
ETL的過程我想很多人都談過了,最近我在比較SSIS,OWB和infomatica,結合以前的專案,加深了我對ETL過程的理解和認識。
其實這三種工具,除去應用平臺以為,大同小異,各有利弊。今天我想分享一下我的經驗,主要在擴充套件和維護方面。
1:資料落地和ELT
很多人談到資料落地的概念,說白了,就是ODS或者DWH中,有資料input或者output的,都先把要操作的資料放到臨時表裡面,而資料傳輸的兩端的表的結構都是一樣的,這樣的操作比較便捷,幾乎不用考慮轉換的問題。
同時我們還要提到的就是ELT,ELT和ETL其實各有好處,一個是用工具來轉化資料,一個用SP,工具一般都是一行行的處理,而SP一般都是一列列的處理。我個人認為ELT,用SP處理資料比較好,因為我們的測試或者將來的維護,都需要經常改變表間的mapping關係。而SP只是需要在資料庫裡面做一些修改和操作,而且還比較容易除錯,去發現問題的根源。
2:指令碼檔案
這裡的指令碼檔案可以分為FTP script,table Script,Stored proc Script還有Shell指令碼,不管是dos shell 還是unix shell,這些都是一些作業系統的控制檔案,我們可以暫時不談。為什麼要談談這些指令碼了,其實我們在設計和開發結構的時候很簡單,但是我們修改的時候,就比較麻煩了,特別是ETL工具在開啟一個package的時候,需要載入和驗證,有的時候很慢很慢,如果我們只是修改一些小引數的話,花長時間就不值得,如果我們將指令碼檔案都放在一起的話,那麼開啟txt或者bat檔案就很方便。還有就是我們對於一些臨時表,有的時候需要將資料全部刪掉,我們可以用truncate table,有的時候用drop和create也是不錯的選擇。
當然,如果用指令碼檔案的話,主機的安全性一定要好,而且對於賬號的表級操作許可權也要分配好。
3. 策略表
我們按照不同的頻率,定時執行package,有的時候可能遇到error,有的時候可能由於其他的問題不能按時執行。其實我們可以做一張策略表,儲存每個package的執行的時間規則,然後每天開始執行前,將所有的package初始化出當天的執行情況,記錄開始結束時間,還有成功標記。執行時,可以先讀取上一個執行日的執行情況,將未完成的package,延續的到當日。
4. 日誌表
準確的來說,ETL工作中,從package執行開始的那一刻,每一個小步都要記錄日誌,記錄發生了什麼,做了什麼,還有出錯的資訊和控制情況,必要時,我們還要按照資料庫的事物處理方式,將相關的包的執行資料全部釋放掉。這樣日誌表和策略表join,我們就可以清楚的看到我們執行的效能,效率和準確的詳細的執行資訊。根據package的優先順序,我們可以將日誌報表和緊急的錯誤,透過SMS或者email,發給相關的人員。
5. 重新執行
重新重新整理資料是經常遇到的,我們發現資料不準確,就有可能需要重新執行,重新執行有中斷重新執行和完全重新執行,甚至需要全部重新執行。
我們用batchid來控制每一天或者每一批的資料,但是有的時候由於這樣那樣的問題,倒是我們的package在執行中中斷,我們就需要去尋找日誌,解決問題,然後重新執行。這一步的手工操作比較多,完全重新執行就是重新執行某天的某個packge,需要將對應的資料表做一些操作,比如刪除,全部重新執行,就是將資料倉儲裡面的資料全部重新創新,相當於從0開始。
這幾種操作都是我們會遇到的,我們在設計包的時候,儘量的讓package自己去完成,我們人為的控制儘量的減少。可以用一些引數的方式去控制。
6. 團隊協作性
ETL的工作佔整個資料倉儲工作量的50%-70%,所以團隊協作性一定要好。而ETL包含E,T,L還有日誌的控制,資料模型,原資料驗證,資料質量等等方面。例如我們要整合一個企業亞太區的資料,但是每個國家都有自己的資料來源,有的是ERP,有的是Access,而且資料庫都不一樣,好要考慮網路的效能問題,如果直接用ODBC去連線兩地的資料來源,這樣的做法很顯然是不合理的,因為網路不好,經常連線,很容易資料庫連結不能釋放導致當機。如果我們在各地區的伺服器放置一個資料匯出為access或者flat file的程式,這樣檔案就比較方便的透過FTP的方式進行傳輸。我們就需要有幾項工作:
1)有人寫一個通用的資料匯出工具,可以用java,可以用VB,或者其他的工具,總而言之就是要通用,可以透過不同的指令碼檔案來控制,使各地區的不同資料庫匯出的檔案格式是一樣的。而且還可以實現並行操作。
2)有人寫FTP的程式,可以用bat,可以用ETL工具,可以用其他的方式,總之要準確,而且方便呼叫和控制。
3)有人設計資料模型,包括1)點中的匯出後的結構,還有ODS和DWH中的表結構
4)有人寫SP,包括ETL中需要用到的SP還有日常維護系統的SP,比如檢查資料質量之類的
5)有人分析原資料,包括表結構,資料質量,空值還有業務邏輯
6)有人負責開發流程,包括實現各種功能,還有日誌的記錄等等。
7)有人測試
真正好的ETL,都是團隊來完成的,一個人的力量是有限的
本日誌同步記錄在blog:http://bidwhome.itpub.net/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7600305/viewspace-1010500/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 可擴充套件性套件
- 資料系統的基石:可靠性、可擴充套件性和可維護性+資料儲存與檢索的模型套件模型
- 可擴充套件性筆記一套件筆記
- 從 IM 通訊 Web SDK 來看如何提高程式碼可維護性與可擴充套件性Web套件
- 面向可複用性和可維護性的設計模式設計模式
- 教你 4 步搭建彈性可擴充套件的 WebAPI套件WebAPI
- 可預測的效能和實際的可擴充套件性——SQL Server 2008套件SQLServer
- 機器人的預測性維護實戰:解讀實時、可擴充套件的分析管道 [session]機器人套件Session
- 物件導向的可維護性物件
- 精讀《可維護性思考》
- 管理系統中風險是系統可用性和可擴充套件性的關鍵套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 聊聊如何讓你的業務程式碼具有可擴充套件性套件
- 軟體可擴充套件性:來自星巴克的經驗套件
- 第6章:可維護性軟體構建方法 6.1可維護性的度量和構造原則
- 第6章:可維護性軟體構建方法 6.3可維護性構建技術
- 軟體定義資料中心設計應集中於可擴充套件性和整合性套件
- 實現近乎無限可擴充套件性的7種設計模式套件設計模式
- 雲端CRM系統排名:靈活性與可擴充套件性的較量套件
- 如何提高程式碼的可維護性
- IBM Rational Requirements Composer 2.0 的效能和可擴充套件性評測結果IBMUIREM套件
- 構建高可用性、高效能和可擴充套件的Zabbix Server架構套件Server架構
- Sql最佳化(十) 程式的可擴充套件性—sequence上的競爭SQL套件
- 服務的擴充套件性套件
- 可擴充套件的搜尋元件套件元件
- 編寫可擴充套件程式套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- 可用性、可維護性、可靠性有什麼區別?
- SDN在5G和WAN中的應用,它是否具備可擴充套件性套件
- DApp質押挖礦系統開發特性:開源自治、可擴充套件性和安全性APP套件
- 書寫可維護程式碼的重要性
- OAM v1alpha2 新版:平衡標準與可擴充套件性套件
- 可擴充套件性對物聯網管理系統有哪些影響?套件
- Sql最佳化(八):程式的可擴充套件性----direct insert的副作用SQL套件
- 程式碼結構-可維護性程式碼
- bash的特有擴充套件屬性套件
- 大型網站技術架構(七)--網站的可擴充套件性架構網站架構套件
- COLA的擴充套件性使用和原始碼研究套件原始碼