河北公司營銷分析與輔助決策系統于2008年正式上線,至今已運行10年,該系統是營銷信息化的高級應用,具有營銷綜合分析、報表、營銷指標監控等功能。隨著相關設備運行時間不斷延長,硬件設備日益老化,系統存在一定的安全運行風險。
此外,該系統所用ETL(extract-transform-load)數據抽取工具及Sybase IQ數據庫與數據中心共用服務器,均部署于IBM 9116-561型號的小型機上,近年來該小型機穩壓模塊曝出存在家族缺陷,且使用小型機也不滿足國網公司硬件設備國產化的要求,這些均給系統穩定運行和運維工作造成壓力。
為此,將ETL工具和Sybase IQ數據庫從數據中心中剝離出來,在PC服務器中進行獨立部署是很有必要的,這將徹底解決營銷分析與輔助決策系統運行過程中存在的一系列問題。
營銷分析與輔助決策系統的數據以營銷業務應用數據、電能服務管理、用電信息采集、計量生產調度平臺、市場化售電等系統業務數據為基礎,采用定期抽取的方式,經過加工、轉換、處理、生成等一系列過程,形成所需的報表結果數據并進行上報和展示,主要包括營業管理、客戶服務、市場管理、用電安全及計量管理五大類報表,共計約133張報表。
抽取數據需要用到ETL抽取工具,當報表進行上報完成后,基礎數據會通過ETL抽取工具中的相應工作流傳遞到Sybase數據庫,再同樣啟動ETL抽取工具中的相應工作流將Sybase數據庫中的數據傳遞到國網總部數據庫,中間是通過網省的基礎數據平臺作為網省與國網的數據傳輸通道,所以本次遷移涉及大量的歷史數據需同步進行遷移,即需要對Sybase數據庫中的數據進行全庫備份并完成新環境遷移,完成遷移后同樣需要對新版本的ETL抽取工具進行數據抽取驗證工作,確保數據抽取的質量(包括抽取的基礎數據數量總和與數據源一致,抽取的結果數據不出現亂碼現象)。
ETL、Sybase數據庫從現有小型機環境遷移至PC服務器設備屬于跨平臺遷移,存在一定的技術難度,主要為遷移過程中安裝介質是否能夠對跨平臺服務系統進行版本兼容,數據工作流導出與導入時是否存在異常報錯情況。本次跨平臺遷移技術特點包括Sybase IQ的源數據庫結構的導出、源數據庫數據的導出、數據的導入和Informatica應用的遷移兩大部分。
遷移應用了工作流主體遷移的工作原理,把原工作流遷移至新環境后再進行數據遷移。Sybase IQ的源數據庫結構的導出是通過Sybase IQ客戶端工具,導出源數據庫的結構,包含表、視圖、過程、type等;Sybase IQ的源數據庫數據導出一般按表一個個地導出,導出表的數據的語句如下所示。
set temporary option temp_extract_row_delimiter = '\x0a';
set temporary option temp_extract_column_delimiter = '|!';
set temporary option temp_extract_null_as_empty = 'OFF';
set temporary option temp_extract_append = 'OFF';
set temporary option temp_extract_size1 = 536870912;
set temporary option temp_extract_binary = 'OFF';
set temporary option temp_extract_swap = 'OFF';
set temporary option temp_extract_name1 = '/backup/psdss_ dm/AA_RESULT.dat';
select * from AA_RESULT;
Sybase IQ數據導入的腳本如下所示。
set temporary option conversion_error='OFF';
message 'load table AA_RESULT' type info to client;
LOAD TABLE AA_RESULT
(
FY '|!' ,
FY_ID '|!' ,
DY '|!' ,
DY_ID '|!' ,
NUMS '|!' ,
ID '|!'
)
由于導入腳本需要寫出表所有的字段,腳本編寫較為復雜,建議通過工具自動生成。這種方法的基本思路是:使用IQ系統存儲過程sp_iqcolumn獲得被裝載表的所有字段,然后拼裝LOAD TABLE語句,最后使用execute動態執行拼裝好的SQL。
其中Informatica中的ETL工作流文件遷移是本次遷移的重點,遷移工作流包括較多的大項工作流,每個大項又包含多個小項工作流。舊環境工作流的導出需要嚴謹操作,不能有遺漏項,否則將影響新環境工作流的導入工作。遷移工作分為三大部分:Informatica及工作流導出和導入、Sybase和ETL抽取工具的銜接、新環境數據抽取。
Informatica PowerCenter 9.6.1在安裝前,要在數據庫下新建用戶,用來管理資料庫,用于存放源表和目標表。客戶端安裝完成后需要進行Informatica連接Oracle數據庫的配置修改,進入PowerCenter Workflow Manager—connections—relational,如圖1所示。
圖1 配置截圖
在這些前期的配置準備工作都完成后,就可以對舊環境中Informatica客戶端中的工作流進行整體或者單個導出工作,對導出的工作流進行存放以備在新環境中導入時使用。遷移難點在于工作流的導出與導入,即從舊環境中導出的工作流數量不能缺失(如原有環境中存在1250個工作流,那么導出的工作流數量也應與之匹配);導出的工作流不能出現異常情況(如導出完成工作流后會彈出類似于成功的提示語,如出現fail則表示有失敗工作流,需要進行日志提取排查原因);導入時同樣需要進行數量和是否存在異常工作流的核對工作。
若版本兼容情況比對未發生異常,則可以在Windows環境下正常使用導入的工作流進行抽取 工作。
2.1 工作流導出和導入
ETL是英文Extract-Transform-Load的縮寫,用來描述將數據從來源端經過萃取(extract)、轉置(transform)、加載(load)至目的端的過程。數據的遷移和集成都需要ETL來實現,一般來說在數據倉庫的開發過程中ETL會占到70%到80%的時間,Informatica是美國一個數據集成公司開發的數據集成工具,圖形化開發并且入門快,本地營銷分析與輔助決策系統正是使用Informatica軟件作為數據遷移工具。
Informatica可用于訪問和集成幾乎任何業務系統、任何格式的數據,也可按任意速度在企業內交付數據,具有高性能、高可擴展性、高可用性的特點。
Informatica中涉及的很多具有關聯性的工作流,需要現場結合實際情況進行分析,確認導入時是否存在前后關系,建議按照Informatica8.1.1版本上的工作流順序進行導出操作,導出的文件按照.xml進行存儲,Informatica PowerCenter 9.6.1的主安裝界面是基于Java平臺建立的,所以在安裝前安裝JDK(推薦)。要在數據庫下新建用戶,用來管理資料庫,用于存放源表和目標表。
Windows 2008 server下普通Window 64位的Oracle客戶端無法安裝,需要找到Visa版本64位的客戶端安裝包,解壓安裝包,直接執行setup.exe。在新機環境上安裝好Informatica 9.6.1版本的抽取軟件后,進行接口基礎配置,因為工作流導出是按照整包進行導出的,所以在Informatica 9.6.1中導入同樣采取整包導出。因為每個大項工作流中涉及到的子項工作流數量不同,所以在導入時所花費的時間也不同,需要耐心等待,導入成功后會有成功日志提示。
2.2 Sybase和ETL抽取工具的銜接
Sybase主要有3個版本:①UNIX操作系統下運行的版本;②Novell Netware環境下運行的版本;③Windows NT環境下運行的版本。對UNIX操作系統目前廣泛應用的為SYBASE 10及SYSBASE 11 FOR SCO UNIX。本地新舊環境存在差異情況的遷移還涉及到跨環境平臺遷移,所以在遷移后的驗證也很重要。
一般的關系型數據庫都是基于主/從模式的。在主/從式結構中,所有的應用運行在一臺機器上。用戶可以通過終端發送命令或簡單地查看應用運行的結果。而在客戶/服務器結構中,應用被分發在多臺機器上運行。一臺機器可能是另一個系統的客戶,也可能是另外一些機器的服務器,這些機器是通過局域網或廣域網聯接起來的。一般的數據庫是依靠操作系統來管理與數據庫的連接,當有多個用戶連接時,系統的性能會大幅下降。
Sybase數據庫未采用操作系統來管理進程,而是把與數據庫的連接當作自己的一部分來管理。此外,Sybase的數據庫引擎還代替操作系統來管理一部分硬件資源,如端口、內存、硬盤,Sybase數據庫的此種管理方式,大大提高了性能。
編輯Sybase數據庫主要由三部分組成:
具備以上優勢對ETL抽取過來的數據進行存儲有很好的數據保存應用性。將新的Informatica 9.6.1版本的接口與Sybase配置好后,再進行新工作流執行數據提取時會很清晰地看到日志中數據的流向,在Sybase數據庫中會看到抽取的明細數據。搭建好的Sysbase數據環境要進行測試驗證,還要看全盤備份遷移過來的數據量是不是完整,數據是否完整對后續數據的提取是否全面有相當大的影響。
全盤數據確定無問題后,再進行配置接口的檢查和調試工作,即確定Sysbase數據庫是否和Informatica 9.6.1軟件平臺連接通了,這個是后續進行數據提取的關鍵。ETL抽取工具中涉及到很多類似于數據庫的DBLINK,這個是數據抽取的通道方向,所以在配置過程中我們會看到目標源和數據源端用戶名,之間還需要配置正確的密碼確保整個配置的準確與完整性。
2.3 新環境數據抽取
數據抽取一般分全量抽取和增量抽取。
1)全量抽取。全量抽取可被看做是數據遷移或數據復制,它將源數據庫中的表或視圖的數據原封不動地抽取出來,并轉換成自身ETL工具可以識別的格式。全量抽取較為簡單。
2)增量抽取。增量抽取是指從上次抽取結束后再次抽取數據庫中新增、修改、刪除的表數據。在ETL實際使用過程中,增量抽取比全量抽取應用范圍更廣。如何獲取變化的數據是增量數據抽取的關鍵。對獲取方法通常主要注意兩方面:準確性,能夠準確地獲取業務系統中的變化數據;系統性能,盡量降低對業務系統的壓力,減少對業務的影響。
本次遷移選用增量抽取的方案,即對原數據按照某種邏輯關系進行分段抽取,比如按照年月或者單位,將工作流全部成功導入到新環境的Informatica 9.6.1下后,需要對導入的工作流進行數據抽取,提取的數據源可以定義為來自營銷分析與輔助決策系統中的數據,此類數據來源于營銷業務系統、市場化售電系統、95598系統、基礎數據平臺中的基礎數據。所以將數據提取直接定義在營銷分析與輔助決策系統較為合理,同時符合業務應用規范。
在數據提取過程中工作流執行為人工手動觸發,執行工作流啟動按鈕后,可以在ETL抽取界面對啟動的工作流進行執行進程監控,抽取完成后可以監控執行的工作流的抽取時間,同時會有抽取結果日志的展現,可以從抽取日志中看到提取數據量、提取相關表、提取時間節點等相關信息。
營銷分析與輔助決策系統Informatica遷移過程包括方案制定、環境備份、數據遷移和遷移驗證,如圖2所示。
圖2 操作流程圖
1)方案制定
遷移過程前需要先對安裝程序包在新環境下進行安裝部署,搭建合理的部署環境,主要是對Informatica 9.6.1版本安裝包、Sysbase數據庫安裝包在新機上進行客戶端和服務端的安裝配置工作,創建正式賬號以備后續進行工作流數據導入與業務數據抽取驗證使用。
2)環境備份
安裝客戶端和服務端前后進行環境整體備份,在安裝完成后導入工作流和抽取驗證數據前對Informatica 9.6.1所含已有工作流進行備份處理,工作流備份主要對存儲路徑進行備份。
3)數據遷移
數據遷移是指將數據文件從現有數據庫移到新數據庫的過程。這些數據通常是需要在未來任何時間可進行方便訪問的圖像文檔或歷史信息。遷移工作與備份策略相結合,并且仍要求定期備份。
4)遷移驗證
遷移工作完成后的驗證是遷移必不可少的一個環節。將遷移驗證分為工作流穩定驗證、數據質量驗證、業務系統功能驗證等三方面,遷移驗證流程如圖3所示。
圖3 遷移驗證流程圖
(1)工作流穩定驗證。按照新舊環境的Informatica抽取工具進行工作流數量驗證,檢查新舊環境導出與導入的工作流數量是否一致,并核查導入的工作流是否均可用。不存在失效的工作流中部分工作流需要配置數據源連接,要正確配置數據源賬號與密碼,確保源端與目標端可以正確訪問,驗證結果見表1。
(2)數據質量驗證。數據質量驗證包含數據存量與數據無異常驗證。即抽取完成或者備份遷移過來的數據存儲量一致,不存在缺少歷史數據的情況(無年月、單位層級缺失)。檢查新環境中存儲的數量是否都符合數模標準規定格式(即字符型、數字型),不出現不能識別的亂碼標志,驗證結果見表2。
表2 數據質量驗證結果
(3)業務系統功能驗證。這里主要指遷移完成后,根據遷移數據登陸前臺營銷分析與輔助決策系統,可以正常查詢歷史數據,無數據丟失現象,確保業務數據的完備性與可用性,驗證結果見表3。
表3 業務系統功能驗證結果
遷移驗證成功標志著整個遷移工作的順利完成。
本文在ETL工具遷移過程中,對導入工作流的一些關鍵問題提出了相關的解決方法和策略,并將整體現象做了記錄觀察,對存在的導入報錯問題也做了一定的分析。在基于營銷分析與輔助決策系統的Sybase數據庫、Informatica抽取工具遷移實施方案中,本文對工作流異常導入進行了分析研究,攻克了技術困難,完成了營銷分析與輔助決策系統Informatica數據遷移工作計劃。
河北公司營銷分析與輔助決策系統ETL遷移為其他網省公司提供遷移現行的指導方案,在一定程度上能夠減少其他網省(市)公司的遷移工作量,從而提升工作效率,具有一定的借鑒價值和意義。