摘 要:隨著電力信息化的發展,傳統數據倉庫已經不能滿足電力企業決策的需要,而實時數據倉庫擴展了傳統數據倉庫的適用范圍,能給電力企業提供關于日常戰術操作的技術支持,文章討論了實時數據倉庫的幾種實現方案,提出了可行的基于SOA的實時數據倉庫體系結構,并針對電力系統實時數據倉庫進行了設計。
關鍵詞:SOA,數據倉庫,實時,XML,電力系統
0 引言
電力企業多變的市場,使得信息和知識成為電力公司最有價值的資源,而通過采用先進的信息技術整合企業現行的軟硬件資源,讓人員和設備均處于最佳的運行狀態,同時準確了解當前的生產情況和預測未來一段時間的市場需求,已成為提高電力企業競爭力的一個重要途徑[1]。同時,電力系統是關系國計民生的重要保障,為保證電網安全、可靠、經濟運行,電力系統高層不僅需要掌握電網歷史數據,還要獲得電力相關的實時信息,以輔助決策。所以數據倉庫不僅要充當電網運行的記錄器, 更要為實時運行分析和高級應用提供強大的數據基礎[2]。然而,由于各地區及部門間信息化建設的不平衡性和獨立性,導致了目前電力企業信息化不能利用傳統的數據倉庫方案來構造有效的數據倉庫系統,難以提供企業級的決策分析支持,主要表現在異構性強、信息集成度差、數據冗余和多信息源以及缺乏企業級的決策支持系統等幾個方面。
電力企業信息化的上述特征,使得電力企業迫切需要一個能夠解決地區間信息化建設不平衡,且實時的數據倉庫系統來為企業提供決策,本文提出了基于SOA(面向服務的體系結構)的電力系統實時數據倉庫,它不僅可以為企業提供實時的業務數據,而且SOA技術可以基于現有的系統投資來發展,而不需要徹底重新創建系統。通過使用適當的SOA框架并使其可用于整個企業,可以將業務服務構造為現有組件的集合。使用這種新的服務只需要知道它的接口和名稱。服務的內部細節以及在組成服務的組件之間傳送的數據的復雜性都對外界隱藏了,從而可以通過合并構建在不同的機器上、運行在不同的操作系統中、用不同的編程語言開發的組件來創建服務,降低了在增強或創建新的業務服務的過程中帶來的風險,也減少了維護和管理支持服務的基礎架構的風險。
1 相關問題
1.1 傳統數據倉庫技術與實時數據倉庫
傳統數據倉庫由Operational Data Store (ODS)、數據倉庫、數據集市和BI工具組成。傳統數據倉庫中操作型數據從OLTP系統中在晚間的批處理中載入ODS,然后將ODS中的數據經過晚間的批處理通過分段傳輸和集中處理存入數據倉庫。
實時數據倉庫提倡操作型數據在事件產生時即由OLTP系統直接載入到數據倉庫,保證數據倉庫的實時更新。
實時數據倉庫和傳統數據倉庫有以下幾點區別[2]:
1) 戰略的和戰術的不同:傳統數據倉庫天生就是被動的,用戶通過分析歷史數據,可以制定長期的、戰略性的計劃;實時數據倉庫注重改善戰術性的決策用以支持和更有效的執行戰略方案。
2) 實時性和批處理的不同:實時數據倉庫提供隨需應變的業務,它整合了源數據的最新的數據和歷史或上下文的數據,為用戶提供最新的視點。傳統的數據倉庫面向批處理,它用于非在線的分析。
3) 保證的和盡力而為的不同:傳統數據倉庫以盡力而為的原則執行非在線的操作,它要么保證有效性,要么保證執行性能。而實時數據倉庫支持主動的、正在進行的決策,因此既保證有效性,又保證執行性能。
1.2 SOA技術
SOA是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口聯系起來,接口是采用中立的方式定義,它獨立于實現服務的硬件平臺、操作系統和編程語言,這使得構建在各種系統中的服務可以通用的方式進行交互,這種具有中立的接口定義的特征稱為服務之間的松耦合。松耦合系統的好處有兩點,一點是它的靈活性,另一點是,當組成整個應用程序的每個服務的內部結構和實現逐漸地發生改變時,它能夠繼續存在。對松耦合的系統的需要來源于業務應用程序需要根據業務的需要變得更加靈活,以適應不斷變化的環境,比如經常改變的政策、業務級別、業務重點、合作伙伴關系、行業地位以及其他與業務有關的因素,這些因素甚至會影響業務的性質。
SOA有以下特性:
1) SOA服務具有平臺獨立的自我描述XML文檔,Web服務描述語言(WSDL)是用于描述服務的標準語言。
2) SOA 服務用消息進行通信,該消息通常使用XML Schema來定義。消費者和提供者或消費者和服務之間的通信多見于不知道提供者的環境中。
3) 在一個企業內部,SOA服務通過一個扮演目錄列表(Directory Listing)角色的登記處(Registry)來進行維護;應用程序在登記處(Registry)尋找并調用某項服務;統一描述,定義和集成(UDDI)是服務登記的標準。
4) 每項SOA服務都有一個與之相關的服務品質(QoS,quality of service)。QoS的一些關鍵元素有安全需求(例如認證和授權),可靠通信,以及誰能調用服務的策略。
SOA憑借其松耦合的特性,使得企業可以按照模塊化的方式來添加新服務或更新現有服務,以解決新的業務需要,提供選擇從而可以通過不同的渠道提供服務,并可以把企業現有的或已有的應用作為服務,從而保護了現有的IT基礎建設投資。
2 基于SOA的電力系統實時數據倉庫體系結構

圖1 時實數據倉庫的體系結構
圖1描述了電力系統實時數據倉庫的體系結構,各部分的內容和功能如下:
1) 源數據庫數據源:需要集成的各個應用系統的數據庫,包括發電商信息數據庫、輸變電信息數據庫、大用戶信息數據庫、電力信息數據庫、合同信息數據庫等。
2) 實時數據采集ETL:ETL(Extraction,Transformation,Loading,即數據抽取、轉換、裝載的過程)是電力系統實時數據倉庫的核心,它按照統一的規則將數據從業務應用數據庫中實時地提取、轉換并加載到主題數據庫中,是實現實時數據倉庫建設的重要步驟,下一節我們具體說明ETL的實現方式。
3) 實時數據倉庫:包含實時數據分區和靜態數據分區兩部分,采用表分離法存儲實時和靜態數據,實時數據的查詢和存儲,都是基于實時數據分區,靜態數據或歷史數據的查詢基于靜態數據分區實現。實時數據分區的數據建模可以與靜態數據分區數據采用相同的建模形式,在固定的時間將實時數據分區的數據綜合并導入數據倉庫的靜態數據分區。
4) BI工具:包括對實時數據倉庫的查詢、實時數據監控、按需分析業務應用、報表和OLAP分析等。
5) XML/SOAP/WSDL/UDDI是SOA技術實現方式,UDDI注冊中心包含了所有關于Web服務的描述文件,對這些服務的調用均要首先在注冊中心搜索以決定調用的端口和方式,SOAP封裝WSDL描述的服務,實現實時數據傳輸。
3 實時數據采集ETL的設計
在數據倉庫的建立和維護過程中ETL都扮演著一個極其重要的角色,它是數據源和數據倉庫之間的橋梁與紐帶[3],同時實時ETL的實現是實時數據倉庫的基礎,實時ETL過程數據增量捕獲采用觸發器方式進行,通過在數據庫中建立觸發器和輔助表,將更新數據抽取到輔助表中,ETL過程將輔助表中數據導出,轉換,加載到目標數據倉庫后,刪除輔助表中相應數據,完成增量更新。本文中電力系統實時數據倉庫的實時ETL流程如圖2所示:

圖2 數據更新流程
實時ETL基于SOA框架,它分為源數據庫端包裝器(Wrapper),更新策略控制和元數據管理三個部分,以Web服務方式連接各部分功能,包裝器部署在源數據庫端,通過ADO.NET連接源數據庫。其中包括的元數據抽取模塊和增量數據抽取模塊分別負責實現元數據抽取和增量數據抽取Web服務。元數據管理提供元數據庫讀取Web服務,管理元數據庫。更新控制策路則是該ETL過程的核心,它部署在數據倉庫端,管理實時數據分區,提供ETL過程設計人員可視化的元數據管理工具和增量抽取流程定義工具。抽取規則通過更新策略控制調用Web服務傳入XML形式的抽取規則定義來創建觸發器和輔助表。當數據庫中數據更新被觸發器捕獲時將更新數據進行包裝,并調用相應的Web服務,通過簡單對象訪問協議(SOAP)將其發送給更新策略控制中心,由更新控制策略負責將SOAP中包含的實時數據更新到數據倉庫的實時數據分區。這種結構采用Web服務技術,屏蔽了數據庫和操作系統的異構性,易于實現系統的靈活擴展。
另一個問題是如何轉化不同系統中異構的數據來更新到實時數據倉庫中。目前電力系統應用中涉及的數據類型主要有關系數據庫數據、XML數據、EDI數據和LDAP及其它形式的數據。前三類是當前數據存儲的主要形式。而基于SOA技術的ETL數據更新主要應用XML組織形式的數據來傳輸,由于已經有EDI數據的XML組織方式XEDI存在,所以我們面對的是如何轉換關系數據庫數據和XML模式下的半結構化數據。本文采用關系模式和XML模式數據間轉換基于對象關系映射模型(Object-Relational Mode1)理論來實現數據格式轉換,XML、對象和表之間的轉換關系如表1所示:

數據傳輸過程中采用XML格式作為中間層數據格式,提供了一個統一的數據訪問、傳輸格式,屏蔽了存儲于不同關系數據庫中數據格式的差異性,為電力系統中異構數據源的集成提供了便利。本文利用XML消息來傳遞實時更新數據,Web服務就能夠通過XML消息及互聯網協議完成源數據庫與數據倉庫的交互,并采用簡單對象訪問協議(SOAP)以XML的方式傳遞消息來完成實時數據的更新。
4 電力系統實時數據倉庫的設計
設計建造數據倉庫包括兩個主要方面——數據倉庫與操作型系統的接口的設計和數據倉庫本身的設計[4]。本文在第2、3節中介紹了電力系統實時數據倉庫與操作型系統(源數據庫)的接口的實現方式以及異構數據庫之間的數據抽取,轉化和裝載方式,本節中將介紹數據倉庫本身即存儲結構的設計。
電力系統數據倉庫是個龐大的系統,數據之間的關系錯綜復雜,而關系型數據庫建模對這種復雜的數據關系來說有一定的困難,所以我們采用面向對象的方法來對數據庫進行建模,同時考慮到數據倉庫系統的開放性,而面向對象的數據庫管理系統不支持SOL查詢語言,與現有系統較難融合且信息共享困難,所以我們采用既有面向對象特征又有支持SQL語言的關系對象數據庫——RODBMS來實施電力系統數據倉庫的設計。
下面以某一電力公司為例,在現有的電力合同數據庫系統的歷史數據和用戶資料基礎上設計建造電力系統實時數據倉庫,包括以下數據源:
發電商信息數據庫;
輸變電信息數據庫;
大用戶信息數據庫;
電力信息數據庫;
電力合同信息數據庫等。
上文中提到,電力系統實時數據倉庫的數據存儲部分采用采用表分離法存儲實時和靜態數據,包含實時數據分區和靜態數據分區兩部分,因為實時分區的數據一段時間后要導入靜態分區,所以兩個數據分區的數據建模可以采用相同的建模形式。同時電力系統實時數據倉庫中的實體并非完全平等,有的實體需要大量頻繁的載入,而有的實體載入比較稀疏。比如電力系統中用戶信息數據庫、發電商信息數據庫變化較少,電力合同信息數據庫變化大且頻繁,因此在載入數據時采取以電力合同信息為中心事實表的多維的數據結構模型——星型連接模型,如圖3所示:

由于事實表包含了指向維表的外鍵,可與維表迅速連接,同時事實表還包含了維表中的經常被查詢的非外鍵信息。同時事實表中還包括了維表中訪問率較高的主要數據,只要掃描事實表就可進行查詢,從而大大提高了查詢速度。這種通過數據預連接和建立有選擇的數據冗余,大大簡化了電力系統實時數據倉庫訪問和分析過程的設計方法。
5 結束語
作為數據倉庫技術的一個新的發展方向,實時數據倉庫有效地克服了傳統數據倉庫實時差、難以為電力企業提供靈活及時的戰術性決策等弊端,有著廣闊的發展前景,SOA技術的使用構造了松耦合的電力系統實時數據倉庫系統,既利用了現有的系統,又便于系統的擴展,且能夠提供可靠的數據傳輸,所以使用基于SOA的實時數據倉庫系統能夠很好的滿足電力企業的要求,也將為其決策提供強大支持,它的應用可以為電力企業的信息系統提供了良好的數據環境,在此基礎上運用聯機分析處理及數據挖掘等技術,可以為電力企業的戰略和戰術決策和管理提供極大的信息支持。
參考文獻
[1] 劉吉臻,房方,牛玉廣.電力企業中的實時數據庫技術[J].中國電力.2004.37(2).73-77.
[2] 史曉輝.基于SOA實時數據倉庫的研究與應用[D].北京:北京郵電大學,2006.10.
[3] 許力,馬瑞新.基于 SOA的實時 ETL的研究與實現[J].計算機系統應用.2007.4.
[4] 朱義軍,王乘,張鋒. 應用在電力系統中的數據倉庫及其設計[J].計算機仿真.2004.7
[5] 張俊,張忠能.實時數據倉庫體系架構的研究[J].計算機工程.2004.12.
[6] 姜震,黃霞.實時數據倉庫技術的研究[J].計算機系統應用.2007.7.
作者簡介
劉雙喜(1982-),男,碩士研究生,主要研究領域為MIS、計算機網絡、數據倉庫。
王翠茹(1953-),女,河北曲陽人,教授,主要研究領域為MIS、數據庫、計算機網絡;