姚 燕,李 湘,郭 萍,鄭 波
(國家氣象信息中心,北京 100081)
二十一世紀初,世界氣象組織(world meteorological organization,WMO)各項計劃已經(jīng)擁有或正在開發(fā)各自獨立的氣象信息系統(tǒng)。系統(tǒng)的多樣性不僅使系統(tǒng)之間缺乏兼容和效率,而且存在重復(fù)建設(shè)和高成本等弊端。為了避免這些問題的進一步加劇,WMO提出了WMO信息系統(tǒng)(WMO information system,WIS)的概念,旨在建立一個通用的、綜合的信息服務(wù)平臺,用以支撐各項計劃以及相關(guān)組織的氣象數(shù)據(jù)交換和共享[1]。全球信息系統(tǒng)中心(global information system center,GISC)是WIS的核心功能中心,其主要功能之一就是要提供與數(shù)據(jù)存儲位置無關(guān)的氣象數(shù)據(jù)發(fā)現(xiàn)、訪問和檢索服務(wù)[2]。
國家氣象信息中心從2009年開始逐步開展WIS實施,在2011年完成北京GISC系統(tǒng)主體功能的建設(shè),并通過WMO的能力評估和測試,成為首批全球信息系統(tǒng)中心之一。隨著WIS實施的推進,北京GISC收集和提供服務(wù)的數(shù)據(jù)種類和數(shù)量也將進一步拓展和增加[3]。但是由于業(yè)務(wù)需求和功能歸屬的不同,體系內(nèi)許多不同氣象數(shù)據(jù)內(nèi)容的信息服務(wù)和管理系統(tǒng)已經(jīng)逐步建立起來。這些系統(tǒng)的數(shù)據(jù)源有著各自不同的處理對象、操作方法和專用客戶端,基本上相互隔離。因此迫切需要在多源異構(gòu)的數(shù)據(jù)環(huán)境下設(shè)計一個統(tǒng)一的數(shù)據(jù)集成服務(wù)來支撐北京GISC用戶對氣象數(shù)據(jù)的訪問和檢索,實現(xiàn)北京GISC業(yè)務(wù)系統(tǒng)中各類氣象數(shù)據(jù)的請求功能[4]。
在北京GISC系統(tǒng)中,數(shù)據(jù)請求服務(wù)所涉及到的氣象資料主要涉及全球交換的常規(guī)氣象資料、全球交換的二進制氣象資料(包括GRIB、BUFR等不同數(shù)據(jù)格式[5])、中國本地的全球數(shù)值預(yù)報模式產(chǎn)品、中國風(fēng)云衛(wèi)星資料產(chǎn)品以及交互式全球大集合數(shù)值預(yù)報產(chǎn)品(THORPEX Interactive Grand Global Ensemble[6],TIGGE)等。通過分析歸納起來整個服務(wù)數(shù)據(jù)源的異構(gòu)性主要體現(xiàn)在以下三個方面:
(1)系統(tǒng)異構(gòu),即數(shù)據(jù)源所依賴的業(yè)務(wù)應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)之間的不同構(gòu)成了系統(tǒng)異構(gòu)。北京GISC系統(tǒng)的數(shù)據(jù)源涉及到業(yè)務(wù)系統(tǒng)實時氣象數(shù)據(jù)庫、本地系統(tǒng)應(yīng)用數(shù)據(jù)庫以及TIGGE數(shù)據(jù)專用存儲檢索系統(tǒng)MARS(meteorological archival and retrieval system)。
(2)接口異構(gòu),即數(shù)據(jù)源在檢索接口上存在不同。實時氣象數(shù)據(jù)庫系統(tǒng)需要采用其統(tǒng)一定制的檢索服務(wù)API(application programming interface,應(yīng)用程序接口);TIGGE數(shù)據(jù)檢索則需要安裝和使用其專用的客戶端軟件;本地數(shù)據(jù)庫則可以通過JDBC等接口直接進行數(shù)據(jù)表的SQL檢索。
(3)來源異構(gòu),即內(nèi)部數(shù)據(jù)源和外部數(shù)據(jù)源之間的異構(gòu)。
北京GISC系統(tǒng)要實現(xiàn)這些數(shù)據(jù)的訪問和檢索服務(wù),就必須為數(shù)據(jù)請求提供一個公共的統(tǒng)一的集成接口,使訪問者不必關(guān)心如何才能夠獲取到,也不必考慮數(shù)據(jù)的來源和異構(gòu)性、數(shù)據(jù)抽取、數(shù)據(jù)合成等問題,只需指定請求的數(shù)據(jù)條件即可。
目前最主要的異構(gòu)數(shù)據(jù)集成體系結(jié)構(gòu)有以下三種[7]:聯(lián)邦數(shù)據(jù)庫模式、數(shù)據(jù)倉庫模式和中間件模式。
聯(lián)邦數(shù)據(jù)庫模式支持分布、異構(gòu)與自治,其對應(yīng)系統(tǒng)包括一組互相協(xié)作但分別自治的數(shù)據(jù)庫系統(tǒng),這些自治的數(shù)據(jù)庫系統(tǒng)稱為成員數(shù)據(jù)庫系統(tǒng)。這些成員數(shù)據(jù)庫系統(tǒng)可以進行不同程度的集成,而且數(shù)據(jù)依然保留在原來的存儲位置,不必構(gòu)建一個集中式的數(shù)據(jù)倉庫。隨著數(shù)據(jù)源的增多,數(shù)據(jù)查詢效率會受到限制,主要適用于異構(gòu)數(shù)據(jù)源較少的數(shù)據(jù)集成[8]。
數(shù)據(jù)倉庫模式主要是建立一個存儲數(shù)據(jù)的倉庫,由數(shù)據(jù)抽取、轉(zhuǎn)換與裝載工具定期地從數(shù)據(jù)源過濾數(shù)據(jù),然后裝載到數(shù)據(jù)倉庫中,提供用戶操作。所有的查詢都針對數(shù)據(jù)倉庫中的數(shù)據(jù),數(shù)據(jù)倉庫必須根據(jù)數(shù)據(jù)的變化而隨時更新。但數(shù)據(jù)倉庫中數(shù)據(jù)實時性不強,該模型主要適用于對數(shù)據(jù)聯(lián)機分析和決策支持系統(tǒng)的集成[9]。
中間件模式為用戶提供了一個全局模式,用戶提交的查詢都是針對這個全局模式而進行的,因此數(shù)據(jù)源的位置、模式及訪問對用戶來說都是透明的。系統(tǒng)將基于中間模式的查詢轉(zhuǎn)換為針對各局部數(shù)據(jù)源的查詢,將用戶的查詢分解為各個數(shù)據(jù)源的子查詢,并將各子查詢返回的數(shù)據(jù)綜合起來得到查詢結(jié)果。其優(yōu)點是數(shù)據(jù)不需冗余,而且能保證是最新的。中間件模式適合于數(shù)據(jù)變化較多的異構(gòu)數(shù)據(jù)源集成,局部數(shù)據(jù)源的加入操作實現(xiàn)比較靈活方便,而且可以保持各個數(shù)據(jù)源充分的自治性。
綜合以上數(shù)據(jù)分析和數(shù)據(jù)集成模式分析,考慮中間件模式成本低、易實現(xiàn)以及局部數(shù)據(jù)源加入方便靈活、自治性強等優(yōu)點,北京GISC系統(tǒng)采用Web Service和XML技術(shù)并應(yīng)用中間件數(shù)據(jù)集成模型來進行多源異構(gòu)氣象數(shù)據(jù)請求服務(wù)的設(shè)計和實現(xiàn)。數(shù)據(jù)請求服務(wù)的總體結(jié)構(gòu)如圖1所示,總體從邏輯上分為三層,分別是應(yīng)用層、應(yīng)用服務(wù)層和數(shù)據(jù)源層[10]。
圖1 數(shù)據(jù)請求服務(wù)總體結(jié)構(gòu)
應(yīng)用層是終端用戶與系統(tǒng)交互的接口。該層根據(jù)具體的應(yīng)用和用戶環(huán)境,采用合適的信息訪問技術(shù)或應(yīng)用軟件,可以是Web瀏覽器或?qū)S玫目蛻舳?,來提供用戶相?yīng)的數(shù)據(jù)請求信息,并從應(yīng)用服務(wù)層接收相應(yīng)的請求結(jié)果狀態(tài)信息和結(jié)果數(shù)據(jù)文件。無論應(yīng)用是C/S模式還是B/S模式,只要遵循應(yīng)用服務(wù)層的數(shù)據(jù)請求接口規(guī)范,就可以有效地、透明地從底層的數(shù)據(jù)源獲取數(shù)據(jù)。
應(yīng)用服務(wù)層負責(zé)完成所有數(shù)據(jù)請求邏輯處理,也是總體結(jié)構(gòu)中的核心層,主要包括Web服務(wù)和數(shù)據(jù)請求中間件[11]。數(shù)據(jù)請求Web服務(wù)收集來自應(yīng)用層的數(shù)據(jù)請求信息,并為每個數(shù)據(jù)請求生成全局唯一的任務(wù)編號。它首先檢查該數(shù)據(jù)請求是否在數(shù)據(jù)緩存中,即同樣的數(shù)據(jù)是否已被處理過。如果存在則直接反饋用戶結(jié)果信息和數(shù)據(jù)。否則根據(jù)用戶請求數(shù)據(jù)內(nèi)容不同生成請求條件描述接口文件,轉(zhuǎn)發(fā)給數(shù)據(jù)請求中間件。數(shù)據(jù)請求中間件進而解析請求條件描述接口文件,完成服務(wù)選擇、數(shù)據(jù)檢索、數(shù)據(jù)壓縮或分拆、合并結(jié)果、狀態(tài)更新等一系列處理后,將請求結(jié)果狀態(tài)信息和結(jié)果數(shù)據(jù)返回給Web服務(wù)。應(yīng)用層通過任務(wù)號可以查詢到請求任務(wù)的執(zhí)行情況,并獲得相應(yīng)的請求執(zhí)行結(jié)果。相應(yīng)的處理流程如圖2所示。
圖2 數(shù)據(jù)請求處理流程
數(shù)據(jù)源層主要包括需要訪問的各個自治的局部數(shù)據(jù)源,為數(shù)據(jù)請求服務(wù)提供各種氣象數(shù)據(jù)支撐。
Web Service是基于一組標(biāo)準(zhǔn)Internet協(xié)議的分布式計算組件,具有開放、面向Internet標(biāo)準(zhǔn)化接口等特點,能夠?qū)崿F(xiàn)松散耦合的、與平臺無關(guān)的應(yīng)用系統(tǒng)交互與協(xié)同,是應(yīng)用集成的理想平臺。它使用SOAP(simple object access protocol)表示信息傳輸協(xié)議,使用WSDL(web service description language)進行本身內(nèi)容描述,使用UDDI(universal description,discovery and integration)來發(fā)現(xiàn)、描述與集成Web Service[12]。Web Service為數(shù)據(jù)集成提供了靈活的訪問方式,能夠較好地為數(shù)據(jù)集成提供標(biāo)準(zhǔn)的開發(fā)接口和良好的擴展性,為快速新增和部署新數(shù)據(jù)源提供了方便。
可擴展標(biāo)記語言(extensible markup language,XML)作為一種結(jié)構(gòu)性標(biāo)記語言,描述能力的擴展性強,結(jié)構(gòu)化程度高,具有標(biāo)準(zhǔn)的編程接口,因其簡單、可擴展、跨平臺的特性而被廣泛應(yīng)用于數(shù)據(jù)信息的交換和傳輸[13]。由于XML具有良好的互操作性及數(shù)據(jù)表示能力,它可以表示任何形式的數(shù)據(jù)[14],所以在北京GISC數(shù)據(jù)請求服務(wù)中均采用XML Schema來定義數(shù)據(jù)請求服務(wù)相關(guān)的接口參數(shù)信息及請求結(jié)果信息。請求參數(shù)信息主要涉及請求數(shù)據(jù)集名稱、各個數(shù)據(jù)集對應(yīng)請求條件以及請求結(jié)果存放目錄和文件名等信息,如表1所示。而請求結(jié)果信息則主要包括請求結(jié)果狀態(tài)信息及請求結(jié)果文件,如表2所示。
表1 數(shù)據(jù)請求條件信息XML內(nèi)容
續(xù)表1
表2 數(shù)據(jù)請求結(jié)果信息XML內(nèi)容
數(shù)據(jù)請求中間件由數(shù)據(jù)集成處理和數(shù)據(jù)源檢索處理兩部分構(gòu)成。它是一個組合服務(wù),能夠解析接收到的XML語言描述的數(shù)據(jù)檢索描述文件,完成一系列服務(wù)后,將檢索結(jié)果信息和數(shù)據(jù)文件統(tǒng)一地返回給Web服務(wù)器和應(yīng)用層。因此數(shù)據(jù)請求中間件技術(shù)是實現(xiàn)北京GISC系統(tǒng)數(shù)據(jù)請求服務(wù)的關(guān)鍵[15]。
數(shù)據(jù)集成檢索代理集成了四個核心服務(wù),包括邏輯解析、服務(wù)選擇、結(jié)果匯總和狀態(tài)更新。服務(wù)解析服務(wù)主要是負責(zé)對接收到的檢索描述XML文件進行分析,為檢索服務(wù)的選擇提煉出相應(yīng)的接口信息或關(guān)鍵字。服務(wù)選擇服務(wù)負責(zé)根據(jù)所提煉的關(guān)鍵字對服務(wù)元數(shù)據(jù)進行檢索,找到對應(yīng)的提供檢索服務(wù)的數(shù)據(jù)源,然后將服務(wù)請求向相應(yīng)的數(shù)據(jù)源檢索接口服務(wù)轉(zhuǎn)發(fā)。結(jié)果匯總服務(wù)負責(zé)將數(shù)據(jù)源檢索接口服務(wù)返回的結(jié)果數(shù)據(jù)和處理信息進行匯總。狀態(tài)更新服務(wù)實現(xiàn)根據(jù)匯總后的處理信息和結(jié)果更新檢索請求的元數(shù)據(jù)信息,這樣Web服務(wù)器能夠?qū)崟r地將最新的處理狀態(tài)和結(jié)果返回給用戶。
數(shù)據(jù)源檢索接口代理主要進行針對異構(gòu)數(shù)據(jù)源的檢索訪問操作。每一個不同的異構(gòu)數(shù)據(jù)源都有一個不同的檢索服務(wù)與之相對應(yīng),通過對不同的異構(gòu)數(shù)據(jù)源的服務(wù)化封裝,起到屏蔽異構(gòu)數(shù)據(jù)源的目的,并將封裝的服務(wù)提供上層數(shù)據(jù)集成檢索代理的服務(wù)調(diào)用。
每個異構(gòu)數(shù)據(jù)源對應(yīng)的檢索服務(wù)均包括查詢轉(zhuǎn)換和數(shù)據(jù)生成兩部分功能。不同數(shù)據(jù)源支持的查詢語言是不同的,因此需要依次提取出其中的查詢參數(shù),轉(zhuǎn)換為針對各個局部數(shù)據(jù)源能夠識別的查詢語句或腳本。例如:實時數(shù)據(jù)庫的查詢需要將查詢條件和內(nèi)容整理為其統(tǒng)一檢索接口所規(guī)定的輸入?yún)?shù)列表形式。MARS的查詢需要將查詢條件和內(nèi)容整理為其所能處理的檢索腳本格式。而本地數(shù)據(jù)則需要將檢索條件組織成相應(yīng)關(guān)系型數(shù)據(jù)庫的標(biāo)準(zhǔn)的SQL查詢語句即可。數(shù)據(jù)生成服務(wù)則調(diào)用相關(guān)數(shù)據(jù)源JDBC或處理API,來執(zhí)行各個局部數(shù)據(jù)源的數(shù)據(jù)檢索,獲取相應(yīng)的數(shù)據(jù),統(tǒng)一以數(shù)據(jù)文件的形式返回給上層服務(wù)。
采用XML和Web服務(wù)結(jié)合中間件架構(gòu)的設(shè)計,初步實現(xiàn)了北京GISC系統(tǒng)中異構(gòu)數(shù)據(jù)源的透明集成檢索和請求服務(wù),使得多種業(yè)務(wù)應(yīng)用系統(tǒng)、多種異構(gòu)數(shù)據(jù)源并存,并隨著北京GISC業(yè)務(wù)系統(tǒng)建成已業(yè)務(wù)化運行多年,為用戶提供了穩(wěn)定的數(shù)據(jù)請求服務(wù)。在北京GISC系統(tǒng)中,數(shù)據(jù)請求服務(wù)主要應(yīng)用于數(shù)據(jù)發(fā)現(xiàn)、數(shù)據(jù)獲取和數(shù)據(jù)訂閱這三個主要功能中。
在數(shù)據(jù)發(fā)現(xiàn)功能中,注冊用戶檢索到所需要的氣象數(shù)據(jù)元數(shù)據(jù)信息時,用戶可以直接點擊數(shù)據(jù)訪問按鈕直接瀏覽到對應(yīng)的氣象數(shù)據(jù)文件,同時也能通過“是否獲取更多數(shù)據(jù)”來調(diào)用數(shù)據(jù)請求服務(wù)從后臺數(shù)據(jù)源中獲取用戶指定時間的所查元數(shù)據(jù)對應(yīng)數(shù)據(jù)文件,如圖3所示。
圖3 數(shù)據(jù)請求服務(wù)在數(shù)據(jù)發(fā)現(xiàn)功能中的應(yīng)用示例
在數(shù)據(jù)獲取功能中,注冊用戶可以根據(jù)需求在數(shù)據(jù)目錄中選擇不同的氣象數(shù)據(jù)種類,然后根據(jù)不同數(shù)據(jù)種類中對應(yīng)的請求要素條件進行設(shè)置,最終通過數(shù)據(jù)請求服務(wù)實現(xiàn)氣象數(shù)據(jù)文件壓縮包的下載,如圖4所示。
圖4 數(shù)據(jù)請求服務(wù)在數(shù)據(jù)獲取功能中的應(yīng)用示例
在數(shù)據(jù)訂閱功能中,注冊用戶通過選擇所需要的數(shù)據(jù)內(nèi)容,加入數(shù)據(jù)訂閱購物車,提交數(shù)據(jù)訂單。數(shù)據(jù)訂閱后臺應(yīng)用根據(jù)資料時間特性,通過定時器依據(jù)資料類別觸發(fā)數(shù)據(jù)請求服務(wù),獲取訂閱結(jié)果氣象數(shù)據(jù),并以用戶指定方式返回數(shù)據(jù)訂閱用戶,如圖5所示。
圖5 數(shù)據(jù)請求服務(wù)在數(shù)據(jù)訂閱功能中的應(yīng)用示例
長期以來,由于異構(gòu)數(shù)據(jù)源之間的顯著差異,使得異構(gòu)氣象數(shù)據(jù)集成請求成為一個難點問題。中間件技術(shù)的使用,為解決異構(gòu)數(shù)據(jù)集成請求服務(wù)提供了機會。同時這種服務(wù)設(shè)計也保護了原有信息化投資,能夠適應(yīng)底層數(shù)據(jù)源應(yīng)用系統(tǒng)由舊向新的平滑過渡,比如實時業(yè)務(wù)數(shù)據(jù)庫在近幾年的更新?lián)Q代,GISC系統(tǒng)中48小時Cache數(shù)據(jù)源的加入,能夠滿足系統(tǒng)建設(shè)的低成本、階段性和擴展性需求,在北京GISC系統(tǒng)第一版應(yīng)用軟件建設(shè)中取得了一定的成效。同時隨著近幾年WIS2.0概念的提出以及關(guān)于氣象云數(shù)據(jù)的共享服務(wù)的逐步實施[16],也為北京GISC業(yè)務(wù)系統(tǒng)第二版的建設(shè)提供了技術(shù)經(jīng)驗。