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

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

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

數(shù)據(jù)傳輸過程中采用XML格式作為中間層數(shù)據(jù)格式,提供了一個統(tǒng)一的數(shù)據(jù)訪問、傳輸格式,屏蔽了存儲于不同關(guān)系數(shù)據(jù)庫中數(shù)據(jù)格式的差異性,為電力系統(tǒng)中異構(gòu)數(shù)據(jù)源的集成提供了便利。本文利用XML消息來傳遞實時更新數(shù)據(jù),Web服務(wù)就能夠通過XML消息及互聯(lián)網(wǎng)協(xié)議完成源數(shù)據(jù)庫與數(shù)據(jù)倉庫的交互,并采用簡單對象訪問協(xié)議(SOAP)以XML的方式傳遞消息來完成實時數(shù)據(jù)的更新。
4 電力系統(tǒng)實時數(shù)據(jù)倉庫的設(shè)計
設(shè)計建造數(shù)據(jù)倉庫包括兩個主要方面——數(shù)據(jù)倉庫與操作型系統(tǒng)的接口的設(shè)計和數(shù)據(jù)倉庫本身的設(shè)計[4]。本文在第2、3節(jié)中介紹了電力系統(tǒng)實時數(shù)據(jù)倉庫與操作型系統(tǒng)(源數(shù)據(jù)庫)的接口的實現(xiàn)方式以及異構(gòu)數(shù)據(jù)庫之間的數(shù)據(jù)抽取,轉(zhuǎn)化和裝載方式,本節(jié)中將介紹數(shù)據(jù)倉庫本身即存儲結(jié)構(gòu)的設(shè)計。
電力系統(tǒng)數(shù)據(jù)倉庫是個龐大的系統(tǒng),數(shù)據(jù)之間的關(guān)系錯綜復(fù)雜,而關(guān)系型數(shù)據(jù)庫建模對這種復(fù)雜的數(shù)據(jù)關(guān)系來說有一定的困難,所以我們采用面向?qū)ο蟮姆椒▉韺?shù)據(jù)庫進行建模,同時考慮到數(shù)據(jù)倉庫系統(tǒng)的開放性,而面向?qū)ο蟮臄?shù)據(jù)庫管理系統(tǒng)不支持SOL查詢語言,與現(xiàn)有系統(tǒng)較難融合且信息共享困難,所以我們采用既有面向?qū)ο筇卣饔钟兄С諷QL語言的關(guān)系對象數(shù)據(jù)庫——RODBMS來實施電力系統(tǒng)數(shù)據(jù)倉庫的設(shè)計。
下面以某一電力公司為例,在現(xiàn)有的電力合同數(shù)據(jù)庫系統(tǒng)的歷史數(shù)據(jù)和用戶資料基礎(chǔ)上設(shè)計建造電力系統(tǒng)實時數(shù)據(jù)倉庫,包括以下數(shù)據(jù)源:
發(fā)電商信息數(shù)據(jù)庫;
輸變電信息數(shù)據(jù)庫;
大用戶信息數(shù)據(jù)庫;
電力信息數(shù)據(jù)庫;
電力合同信息數(shù)據(jù)庫等。
上文中提到,電力系統(tǒng)實時數(shù)據(jù)倉庫的數(shù)據(jù)存儲部分采用采用表分離法存儲實時和靜態(tài)數(shù)據(jù),包含實時數(shù)據(jù)分區(qū)和靜態(tài)數(shù)據(jù)分區(qū)兩部分,因為實時分區(qū)的數(shù)據(jù)一段時間后要導(dǎo)入靜態(tài)分區(qū),所以兩個數(shù)據(jù)分區(qū)的數(shù)據(jù)建?梢圆捎孟嗤慕P问。同時電力系統(tǒng)實時數(shù)據(jù)倉庫中的實體并非完全平等,有的實體需要大量頻繁的載入,而有的實體載入比較稀疏。比如電力系統(tǒng)中用戶信息數(shù)據(jù)庫、發(fā)電商信息數(shù)據(jù)庫變化較少,電力合同信息數(shù)據(jù)庫變化大且頻繁,因此在載入數(shù)據(jù)時采取以電力合同信息為中心事實表的多維的數(shù)據(jù)結(jié)構(gòu)模型——星型連接模型,如圖3所示:

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