陳曉斌,葛 文,李 歆,黃 維
(1.信息工程大學 測繪學院,河南 鄭州 450052;2.78155部隊,四川 成都 610036)
資源共享和協同工作是網格技術的兩大特性。將網格技術應用于地理信息領域,能夠解決地理空間信息的資源共享和協同工作問題[1]。海量空間數據的快速處理,一直是地理信息領域研究的熱點問題。OGSA-DAI是網格環境下進行數據訪問與集成的網格中間件技術,提供了一套使用網格技術進行分布式異構數據訪問與集成的方法。本文研究的目的就是基于OGSA-DAI的運行機制,提供一種解決海量空間數據分布式處理的方法。
OGSA-DAI(Open Grid Services Architecture-Data Access and Integration)是一種有效的分布式數據訪問與管理的解決方案,它是根據網格技術發展而來,符合開放式網格服務框架標準OGSA的數據訪問與集成中間件,能把各種分布式異構的關系型數據庫、XML數據庫、文件系統數據呈現成網格服務,為用戶提供統一的訪問查詢接口[2]。
OGSA-DAI的最新版本為OGSA-DAI 4.1,于2011-03-01發布[3],它的主要功能有:支持多種類型的數據資源;數據資源中的數據可查詢和更新;數據可以進行轉換;提供符合WSRF的Web服務;使用統一的格式訪問OGSA-DAI服務;強大的擴展功能等。從圖1中可以看出OGSA-DAI的運行機制是:將關系型數據庫、XML數據庫、文件系統數據封裝為數據資源(Data resources);由各種行為(Activity)對數據資源進行操作,實現數據查詢、數據轉換、數據傳輸等功能;通過工作流引擎(Workflow engine)將多個行為組織起來,實現一個完整的業務流程;由表達層(Presentation layers)提供用戶訪問的接口,包括Web服務和Java API。

圖1 OGSA-DAI的組件圖
OGSA-DAI還提供了強大的擴展機制,以滿足用戶特定的需求。OGSA-DAI的擴展方式主要有以下幾個方面:編寫行為、編寫數據資源、擴展表達層等。研究人員可依據OGSA-DAI的擴展機制進行二次開發,以滿足自身的功能需求。
OGSA-DAI的任務是由工作流完成的,工作流由多個行為組成。行為是OGSA-DAI中的基本工作模塊,是一些離散的程序包,實現具體的功能,如:數據查詢、數據轉換、數據傳輸等。工作流由客戶端構建,提交給服務器執行,服務器執行工作流并返回執行狀態與結果。圖2是一個簡單的工作流。

圖2 簡單的工作流
從圖2中可以看出:OGSA-DAI工作流由一系列行為(Activity)組成;工作流中的行為是互相連接的,一個行為的結果輸出可以作為另一個行為的內容輸入;數據流從一個行為流向另一個行為,這種流動是單向的;不同行為輸入的數據與輸出的數據格式可能不盡相同,數據轉換行為可以將數據在這些格式間進行轉換。
客戶端構建好一個工作流,提交給服務器上的數據請求執行服務DRES(data request execution service),DRES提供了對數據請求執行資源DRER(data request execution resource)的訪問。數據請求執行資源DRER是OGSA-DAI的工作流執行組件,它的主要功能是:解析工作流;組織工作流中指定的行為;為行為提供必要的資源;執行工作流;創建一個請求狀態Request status;向客戶端返回請求狀態(通過數據請求執行服務DRES)。
DRER向客戶端返回的請求狀態Request status包含以下內容:
1)工作流中每一個行為的執行情況,如行為是否順利執行或是遇到錯誤;
2)整個工作流的執行情況,如工作流是否執行完成、是否遇到錯誤、或者過早被客戶端終止;
3)數據,通過DeliverToRequestStatus行為能夠將數據添加到請求狀態中返回給客戶端。
客戶端提交工作流可在2種執行方式中選擇:
1)同步執行:只在工作流執行完成后才向客戶端返回執行狀態;
2)異步執行:工作流一開始執行就向客戶端返回執行狀態,通過執行狀態,客戶端可以監控工作流的執行過程。
異步執行讓客戶端能夠控制工作流的執行,是比較常用的執行方式。同步執行適用于工作流比較簡單、數據量較小、執行時間很短的情況。工作流的執行具有以下特點:①工作流中所有行為的執行是并行的;②數據流以流水線的方式通過行為;③不同的行為能夠同時操作數據流不同部分。
OGSA-DAI工作流的這些特點使其能夠有效地處理海量的數據。空間數據具有數據量大、結構復雜、關系多樣化、空間性、多尺度與多態性等特性[4],因此,使用OGSA-DAI工作流的方式進行空間數據的處理。
服務器執行工作流,可以將處理后的數據寫入請求狀態Request status返回給客戶端。但是在很多情況下,我們并不希望服務器直接將數據傳給客戶端,而是存儲在其它地方,這時就需要用到數據的異步傳輸。使用DeliverToFTP行為可以將數據傳輸到FTP上以文件的形式存儲,使用SQLUpdate行為可以將數據存儲在數據庫中,此外,OGSA-DAI還提供2種資源Data source和Data sink支持將數據暫時存儲在OGSA-DAI服務器上。
Data source和Data sink都是符合WSRF規范的。Data source資源允許客戶端從OGSA-DAI服務器上“拉”(pull)數據。當工作流執行時,可以通過WriteToDataSource行為將數據寫入Data source,之后客戶端可以通過Web服務從Data source中獲取數據。這種方式被稱之為數據傳輸的“拉”(pull)方式。
與Data source的“拉”(pull)方式相對應,Data sink資源允許客戶端向OGSA-DAI服務器上“推”(push)數據。客戶端可以通過Web服務向Data sink中寫入數據,之后在工作流中使用ReadFrom-DataSink從Data sink中獲取數據進行處理。這種方式被稱之為數據傳輸的“推”(push)方式。
空間數據分布式處理的基本模式如圖3所示。一個客戶端向多個OGSA-DAI服務器提交工作流,OGSA-DAI服務器分別從數據服務器上獲取數據并進行處理,最后將處理結果傳輸到指定位置。即一個作業人員可以操作多臺電腦進行數據處理工作,極大地提高數據處理的效率。將需要處理的空間數據封裝為符合WSRF的數據資源,實現空間數據的共享;組織多臺計算機共同進行數據處理工作,實現計算機協同工作。
要構建空間數據工作流,需要通過OGSA-DAI的擴展功能開發相應的空間數據處理行為(Activity),實現數據格式轉換、坐標變換等功能。OGSADAI的用戶手冊[3]中詳細介紹了如何開發OGSADAI的行為,國內也有一些文獻對OGSA-DAI的擴展技術進行了研究[5-7]。
開發人員可以使用OGSA-DAI提供的Java API構建工作流,OGSA-DAI也支持通過XML文件構建工作流。通過XML文件構建工作流有許多優勢,如:比使用java API構建工作流更快、更方便;能夠被java以外的其它編程語言使用。使用WorkflowVisualiserClient可以將構建工作流的XML文件轉換為圖形描述語言DOT格式,然后在Graphviz中顯示。圖4是一個將文件數據錄入數據庫的工作流。

圖4 數據入庫工作流
該工作流中的ReadFromFile行為通過輸入的文件名從數據資源MyFileResource中讀取數據,通過FileDataToEXP行為將數據轉換為SQL表達式傳遞給SQLUpdate行為,SQLUpdate行為將數據封裝為MyOracleResource的Oracle數據庫中,DeliverToRequestStatus將工作流的執行情況寫入請求狀態Request status,完成數據入庫工作。我們將這個工作流提交給多臺服務器,就可以組織多臺服務器協同進行工作,提高數據處理的效率。
使用OGSA-DAI的工作流處理空間數據,這種方式有許多優點:
1)減輕客戶端工作量及CPU和內存需求;
2)最小化客戶端與服務器的通信;
3)工作流在服務器上處理數據,減少數據在網絡中的傳輸,這是與BPEL、Taverna等基于Web服務的工作流引擎是不一樣的;
4)工作流中的行為能夠并行地處理數據流的不同部分,減少服務器的內存消耗和執行時間。
網格技術的應用,為解決地理信息領域的相關問題提供了新的思路。
[1]王家耀,祝玉華,吳明光.論網格與網格地理信息系統[J].測繪科學技術學報,2006,23(1):2-5.
[2]鐘凱,熊偉,陳葷,等.基于OGSA-DAI擴展的空間數據訪問和集成[J].兵工自動化,2010,29(3):47-50.
[3]OGSA-DAI 4.1Documentation.http://www.ogsadai.org.uk/[EB/OL].2011.
[4]譚念龍.空間數據存儲技術及其應用[J].微電子學與計算機,2001(1):15-18.
[5]靳立瓊,殷兆麟,姜利群.一種新的網格數據服務的設計與開發[J].電腦知識與技術,2009,5(9):2330-2331.
[6]李獻禮.擴展OGSA-DAI數據訪問與集成框架的關鍵技術分析[J].重慶大學學報,2008,31(9):1054-1058.
[7]南凱,閻保平.擴展OGSA-DAI的數據集成框架及原型[J].計算機工程,2007,33(10):55-57.