《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 分布式空間數(shù)據(jù)庫集成訪問技術(shù)
分布式空間數(shù)據(jù)庫集成訪問技術(shù)
來源:微型機(jī)與應(yīng)用2010年第24期
蒙智敏, 熊 偉, 陳宏盛, 程 果, 趙 亮
(國防科學(xué)技術(shù)大學(xué) 電子科學(xué)與工程學(xué)院,湖南 長沙410073)
摘要: 提出了采用網(wǎng)格中間件技術(shù)解決面向分布式空間數(shù)據(jù)庫的查詢問題,設(shè)計并實現(xiàn)了一個網(wǎng)格中間件系統(tǒng)OGSA-SDQP。給出了該系統(tǒng)的設(shè)計思想,重點研究了其中的空間數(shù)據(jù)類型轉(zhuǎn)換、空間數(shù)據(jù)集成、空間操作函數(shù)擴(kuò)展、空間數(shù)據(jù)查詢流程等關(guān)鍵技術(shù),給出了系統(tǒng)實現(xiàn)及查詢性能測試。實驗結(jié)果表明,OGSA-SDQP能夠高效處理網(wǎng)格環(huán)境下的分布式空間數(shù)據(jù)查詢。
Abstract:
Key words :

摘   要: 提出了采用網(wǎng)格中間件技術(shù)解決面向分布式空間數(shù)據(jù)庫的查詢問題,設(shè)計并實現(xiàn)了一個網(wǎng)格中間件系統(tǒng)OGSA-SDQP。給出了該系統(tǒng)的設(shè)計思想,重點研究了其中的空間數(shù)據(jù)類型轉(zhuǎn)換、空間數(shù)據(jù)集成、空間操作函數(shù)擴(kuò)展、空間數(shù)據(jù)查詢流程等關(guān)鍵技術(shù),給出了系統(tǒng)實現(xiàn)及查詢性能測試。實驗結(jié)果表明,OGSA-SDQP能夠高效處理網(wǎng)格環(huán)境下的分布式空間數(shù)據(jù)查詢。
關(guān)鍵詞: 網(wǎng)格;分布式;空間數(shù)據(jù)查詢;OGSA-SDQP

    空間數(shù)據(jù)庫用于存儲空間和屬性數(shù)據(jù),其數(shù)據(jù)模型和查詢語言能支持空間數(shù)據(jù)類型和空間索引,并且提供空間查詢和其他空間分析的方法。現(xiàn)實環(huán)境中,由于GIS隸屬單位地域差異及異構(gòu)GIS數(shù)據(jù)庫的存在,空間數(shù)據(jù)庫系統(tǒng)不僅地域分散,而且數(shù)據(jù)具有異構(gòu)性[1],因而空間數(shù)據(jù)共享一直是GIS研究領(lǐng)域的一個很有挑戰(zhàn)性的問題。
    實現(xiàn)不同空間數(shù)據(jù)庫的信息共享和集成,必須解決不同的通信協(xié)議、不同的系統(tǒng)結(jié)構(gòu)、不同的操作系統(tǒng)、不同的數(shù)據(jù)庫和其他應(yīng)用服務(wù)帶來的異構(gòu)性[2]。網(wǎng)格是在網(wǎng)絡(luò)之上運(yùn)行的以實現(xiàn)資源共享和協(xié)作為目標(biāo)的軟件基礎(chǔ)設(shè)施,提供了一種集成的資源和服務(wù)環(huán)境。網(wǎng)格技術(shù)具有高性能計算、資源共享、互操作性、服務(wù)管理、高可靠性、安全性等特性[3],它的迅猛發(fā)展為實現(xiàn)分布式空間信息的訪問和操作提供了新的思路。開放網(wǎng)格服務(wù)框架OGSA(Open Grid Service Architecture)是以服務(wù)為中心的框架結(jié)構(gòu),在網(wǎng)格體系結(jié)構(gòu)中有廣泛的影響力。開放網(wǎng)格服務(wù)框架下的分布式查詢處理器OGSA-DQP(Open Grid Service Architecture-Distributed Query Processor)符合OGSA框架,解決了一般數(shù)據(jù)的分布式異構(gòu)的問題,但是它不能有效地集成空間數(shù)據(jù),因為空間數(shù)據(jù)種類繁多,數(shù)據(jù)格式各異,獲取時段各不相同,存在多種比例尺、多種空間參考系和多種投影類型[4]。為此,針對網(wǎng)格環(huán)境下的分布式空間數(shù)據(jù)集成問題,以O(shè)GSA-DQP為基礎(chǔ)研究并開發(fā)了一個中間件系統(tǒng),開放網(wǎng)格服務(wù)框架下的分布式空間查詢處理器OGSA-SDQP(Spatial DQP),能夠高效地處理分布式空間數(shù)據(jù)查詢。
1 OGSA-SDQP設(shè)計思想
    空間數(shù)據(jù)具有分布式異構(gòu)的特點,OGSA-SDQP首先屏蔽了其異構(gòu)性,然后在此基礎(chǔ)上集成了不同的空間數(shù)據(jù)源。OGSA-SDQP支持并擴(kuò)展了空間操作函數(shù)。
    數(shù)據(jù)庫之間具有異構(gòu)性,為了有效集成來自不同數(shù)據(jù)庫的數(shù)據(jù),需要有統(tǒng)一的數(shù)據(jù)類型。OGSA-SDQP用Java語言實現(xiàn),需要將SQL數(shù)據(jù)類型轉(zhuǎn)換成統(tǒng)一的Java數(shù)據(jù)類型[5]。對于常規(guī)的數(shù)據(jù)類型,不同數(shù)據(jù)庫產(chǎn)品之間的語義差別不大,例如:SQL數(shù)據(jù)類型中的VARCHAR、CHAR、LONGVARCHAR對應(yīng)Java數(shù)據(jù)類型中的java.lang.String和char[];SQL數(shù)據(jù)類型中的INTEGER對應(yīng)Java數(shù)據(jù)類型中的int。但是空間數(shù)據(jù)具有存儲格式多樣性的特點,各個數(shù)據(jù)庫的空間數(shù)據(jù)類型不相同,Java中也沒有表示空間數(shù)據(jù)的類型。在OGSA-SDQP中,空間數(shù)據(jù)被轉(zhuǎn)換成一致的數(shù)據(jù)類型,實現(xiàn)了數(shù)據(jù)類型的統(tǒng)一。
    在面向分布式空間數(shù)據(jù)源的SDQP查詢中,組合查詢被解析為針對不同數(shù)據(jù)源的子查詢,子查詢通過數(shù)據(jù)服務(wù)獲取查詢結(jié)果,在SDQP中將不同數(shù)據(jù)源返回的結(jié)果轉(zhuǎn)換成一致的數(shù)據(jù)類型后進(jìn)行組裝,并返回給請求用戶。
    OGSA-SDQP支持空間操作函數(shù)。單數(shù)據(jù)源查詢過程中,提交到數(shù)據(jù)服務(wù)的查詢串被完整地推送到后端數(shù)據(jù)庫執(zhí)行查詢,后端數(shù)據(jù)庫支持的查詢函數(shù)都可以嵌入在查詢語句中提交給數(shù)據(jù)服務(wù)并獲得查詢結(jié)果。對于數(shù)據(jù)表中包含的空間信息,查詢語句可以根據(jù)嵌入的查詢函數(shù)經(jīng)后端數(shù)據(jù)庫處理后返回計算結(jié)果。而對于多源數(shù)據(jù)的分布式查詢,需要在查詢語句推送前對應(yīng)不同數(shù)據(jù)源拆分為相應(yīng)的查詢子句。在查詢子句返回數(shù)據(jù)結(jié)果之后,根據(jù)嵌入在OGSA-SDQP內(nèi)部的基于標(biāo)量函數(shù)拓展的空間分析函數(shù),對結(jié)果進(jìn)行處理、合并,返回給服務(wù)請求客戶端。
2 OGSA-SDQP關(guān)鍵技術(shù)
2.1空間數(shù)據(jù)類型轉(zhuǎn)換

    系統(tǒng)使用的兩個空間數(shù)據(jù)庫PostGIS和Beyondb都支持空間數(shù)據(jù)。Beyondb是項目組其他成員在開源項目Ingres的基礎(chǔ)上進(jìn)行空間擴(kuò)展生成的支持空間數(shù)據(jù)的數(shù)據(jù)庫系統(tǒng)。目前,OGSA-SDQP僅支持矢量空間數(shù)據(jù)。
    首先,將空間數(shù)據(jù)庫的基本信息提交給OGSA-SDQP,這些信息主要包括數(shù)據(jù)庫的URI、數(shù)據(jù)庫的驅(qū)動程序JDBC等。由于每個空間數(shù)據(jù)庫的空間數(shù)據(jù)類型各不相同,PostGIS的空間數(shù)據(jù)類型是PG_Geometry,Beyondb的空間數(shù)據(jù)類型是ST_Geometry,OGSA-SDQP根據(jù)每個空間數(shù)據(jù)庫的JDBC,將Geometry類型解析為通用文本W(wǎng)KT(Well-Known Text)類型。WKT格式是對幾何體編碼的一個結(jié)構(gòu)化文本格式,可以像操作字符串一樣對WKT進(jìn)行操作。通過將不同的空間數(shù)據(jù)類型轉(zhuǎn)換為WKT的方式,屏蔽了不同空間數(shù)據(jù)類型的異構(gòu)性。
    空間數(shù)據(jù)的類型轉(zhuǎn)換如圖1所示,當(dāng)用戶提交查詢操作時,OGSA-SDQP主要利用兩個行為Activity將數(shù)據(jù)轉(zhuǎn)換成結(jié)果集ResultSet的形式,SQLQuery和TupleToWebRowSetCharArrays。它們處在一個工作流中,SQLQuery的輸出是TupleToWebRowSetCharArrays的輸入。ResultSet是Java對象,不適合網(wǎng)絡(luò)傳輸,在傳輸前將其轉(zhuǎn)換成WebRowSet格式[6],OGSA-SDQP接收到數(shù)據(jù)后將其轉(zhuǎn)換回ResultSet格式。ResultSet中的空間數(shù)據(jù)類型是空間數(shù)據(jù)庫自己定義的類型,OGSA-SDQP將空間數(shù)據(jù)轉(zhuǎn)換成WKT格式,空間數(shù)據(jù)類型轉(zhuǎn)換是空間數(shù)據(jù)集成的前提。

2.2 空間數(shù)據(jù)集成
    空間數(shù)據(jù)集成是將分布式數(shù)據(jù)庫構(gòu)成一個大的虛擬的數(shù)據(jù)庫,屏蔽數(shù)據(jù)庫之間的異構(gòu)性,為用戶提供統(tǒng)一、透明的訪問接口。通過下面的語句可以從兩個空間數(shù)據(jù)庫中一次查詢出鐵路信息和公路信息并返回一個結(jié)果集:select rail. geom from beyondb_railway_pln rail union all select road.geom from postgis_road_pln road。
  為了向用戶提供統(tǒng)一的數(shù)據(jù)視圖,屏蔽底層數(shù)據(jù)庫的位置信息和平臺差異,實現(xiàn)異構(gòu)數(shù)據(jù)庫的無縫連接。虛擬表與數(shù)據(jù)源的映射關(guān)系如圖2所示,OGSA-SDQP首先建立了一張?zhí)摂M表,虛擬表中定義了虛擬表名、虛擬字段名等屬性。然后,又建立了一張?zhí)摂M關(guān)系表來維持虛擬表名與實際表名、虛擬字段名與實際屬性之間的映射關(guān)系,虛擬表中的一個屬性可以對應(yīng)0個或多個數(shù)據(jù)源對象的屬性[7]。OGSA-SDQP循環(huán)每個數(shù)據(jù)源結(jié)果集的行,再循環(huán)每行的字段,根據(jù)映射關(guān)系查找該字段在虛擬表中的位置,然后根據(jù)位置信息,將數(shù)據(jù)插入虛擬表。

2.3空間操作函數(shù)擴(kuò)展
  在數(shù)據(jù)訪問與集成處理過程中,行為(Activity)是基本工作模塊,每類行為負(fù)責(zé)完成一項特定的數(shù)據(jù)查詢、轉(zhuǎn)換、傳輸?shù)忍幚砣蝿?wù)[8]。OGSA-SDQP提供了行為的擴(kuò)展接口,用戶通過該接口可以定義自己的行為。
    OGSA-SDQP提供服務(wù)行為拓展機(jī)制,可供拓展的函數(shù)類型為標(biāo)量函數(shù)與聚合函數(shù)兩類。聚合函數(shù)從選擇列數(shù)據(jù)中提取出代表一種趨勢的值或者匯總值,并聚合列得到結(jié)果集,返回的數(shù)據(jù)類型對應(yīng)于該列或者傳遞到函數(shù)中的值,如COUNT、MAX、SUM等。標(biāo)量函數(shù)指的是基于輸入值定義類型返回單個數(shù)據(jù)值。聚合函數(shù)針對通用數(shù)據(jù)類型進(jìn)行操作,而空間分析過程需要針對空間數(shù)據(jù)表中每條記錄包含的幾何字段進(jìn)行計算,因此拓展空間分析函數(shù)主要基于標(biāo)量函數(shù)的形式拓展。
    JTS Topology Suite是一系列Java API,它完成了Java對幾何對象、空間拓?fù)涞暮诵牟僮魉惴╗9]。為了豐富用戶的個性化操作,利用OGSA-SDQP的擴(kuò)展功能和JTS Topology Suite,添加了一些支持矢量數(shù)據(jù)的空間操作,包括緩沖區(qū)計算、凸外包框計算和空間相交計算等。
2.4空間數(shù)據(jù)查詢流程
    OGSA-SDQP是一個基于服務(wù)的分布式查詢處理器,它可以一次對多個數(shù)據(jù)服務(wù)進(jìn)行并行查詢。OGSAS-DQP分布式查詢的實現(xiàn)需要兩個重要服務(wù)的支持:空間網(wǎng)格分布式查詢服務(wù)SGDQS(Spatial Grid Distributed Query Service)和空間網(wǎng)格查詢評估服務(wù)SGQES(Spatial Grid Query Evaluator Service)[10]。
    SGDQS負(fù)責(zé)創(chuàng)建SDQP服務(wù),生成數(shù)據(jù)資源實體的表結(jié)構(gòu)schema,對查詢計劃進(jìn)行編譯、優(yōu)化、分解、制定查詢計劃,并將分解后的查詢發(fā)送給SGQES。另外SGDQS還負(fù)責(zé)與用戶的交互,接受用戶提交的請求,返回查詢結(jié)果給用戶。
    SGQES是查詢計劃的分支,是查詢的執(zhí)行節(jié)點,它在SGDQS制定好查詢計劃后動態(tài)生成,每個查詢計劃分支對應(yīng)一個SGQES服務(wù),SGQES直接與數(shù)據(jù)資源和其他SGQES交互,并將執(zhí)行結(jié)果返回給SGDQS。SGQES使用經(jīng)SGDQS分解的SQL語句進(jìn)行查詢訪問。圖3說明了一次查詢進(jìn)行的數(shù)據(jù)流程,其中數(shù)據(jù)服務(wù)資源SDSR(Spatial Data Service Resource) 標(biāo)識和承載其數(shù)據(jù)庫的URI地址,充分屏蔽了異構(gòu)性,實現(xiàn)了透明訪問[11]。

3 系統(tǒng)實現(xiàn)及實驗
3.1系統(tǒng)環(huán)境

    部署了PostGIS和Beyondb兩個數(shù)據(jù)庫服務(wù)器。在WindowsXP操作系統(tǒng)上的Beyondb數(shù)據(jù)庫中存放了長沙市的鐵路數(shù)據(jù),在虛擬機(jī)Ubuntu操作系統(tǒng)上的PostGIS中部署了長沙市的公路數(shù)據(jù)。系統(tǒng)的服務(wù)器部分OGSA-SDQP部署在Ubuntu下??蛻舳朔謩e部署在WindowsXP和Ubuntu下。
3.2 系統(tǒng)實現(xiàn)方式
    該系統(tǒng)分為服務(wù)器和客戶端兩個部分。服務(wù)器是空間擴(kuò)展后的OGSA-SDQP,支持空間數(shù)據(jù)類型和空間操作;客戶端包括注冊、查詢、空間渲染、導(dǎo)出四個模塊,這四個模塊為用戶提供了接口,用戶可以根據(jù)需要選擇其中幾個模塊建立自己的圖形化系統(tǒng)。其中空間渲染模塊和導(dǎo)出模塊的實現(xiàn)上使用了開源項目Geotools。Geotools是Java語言編寫的開源GIS工具包,提供各種GIS算法、各種數(shù)據(jù)格式的讀寫和顯示,可以實現(xiàn)地圖的可視化。
3.3 實驗結(jié)果
    通過OGSA-SDQP訪問空間數(shù)據(jù)庫,既可以像以前一樣訪問單個數(shù)據(jù)庫來獲取空間信息,如圖4(a)、圖4(b)所示,也可以通過集成查詢,將鐵路和公路一次讀取并顯示出來,看起來就像是對一個數(shù)據(jù)庫進(jìn)行操作一樣,如圖4(c)所示;還可以對獲取的空間數(shù)據(jù)進(jìn)行操作,圖4(d)是對鐵路的外包框操作,圖4(e)是對公路做緩沖區(qū)操作,圖4(f)求鐵路和公路的交點。

    測試OGSA-SDQP的性能如圖5所示。橫軸表示查詢的數(shù)據(jù)量,縱軸表示查詢時間。先分別對兩個空間數(shù)據(jù)庫進(jìn)行查詢,將它們的查詢時間相加,再與OGSA-SDQP的查詢時間做比較。實驗發(fā)現(xiàn),由于采用并行查詢,OGSA-SDQP在查詢記錄較小時,基本上與單獨查詢的時間一致。隨著數(shù)據(jù)量的增大,耗費(fèi)的資源也隨之增大,因此在查詢數(shù)據(jù)量大時集成查詢所需時間會比單獨查詢時間更長,但總體上還是小于累計的時間。OGSA-SDQP的性能取決于網(wǎng)格服務(wù)器的性能和各個數(shù)據(jù)庫服務(wù)器的性能。

    針對空間數(shù)據(jù)分布式異構(gòu)的特點,使用網(wǎng)格技術(shù),構(gòu)建了分布式多源異構(gòu)空間信息的集成訪問環(huán)境OGSA-SDQP。在該環(huán)境下,用戶可以采用并發(fā)的方式同時訪問多個空間數(shù)據(jù)源;擴(kuò)展了空間操作功能,支持對查詢結(jié)果的處理。最后,通過實驗證明了該系統(tǒng)在集成查詢中的性能優(yōu)勢。
參考文獻(xiàn)
[1] 龔強(qiáng). 地理空間信息網(wǎng)格計算環(huán)境研究[J].信息技術(shù),2008,32(7):1-4.
[2] 都志輝, 陳渝. 以服務(wù)為中心的網(wǎng)格體系結(jié)構(gòu)OGSA[J]. 計算機(jī)科學(xué), 2003,30(7):26-30.
[3] JOSHY J, FELLENSTEIN F著. 網(wǎng)格計算(Grid Computing)[M]. 占曉蘇, 張少華,譯.北京: 清華大學(xué)出版社, 2005.
[4] 張豐. 面向網(wǎng)格的海量時空數(shù)據(jù)訪問、集成于互操作研究[D]. 浙江:浙江大學(xué), 2007.4.
[5] HOARAU W, TIXEUIL S, RODRIGUES N. Dependability evaluation of the ogsa-dai middleware[A]. Achievements in European Research on Grid  Systems[C]. 2008:223-236.
[6] LYNDEN S, MUKHERJEE A, HUME A C. The design and implementation of OGSA-DQP: A service-based distributed query processor[J]. FutureGeneration Computer Systems, 2009,25(3):224-236.
[7] 劉會強(qiáng). 網(wǎng)格環(huán)境下數(shù)據(jù)集成和查詢處理的研究與實現(xiàn)[D].北京:北京工業(yè)大學(xué), 2009.4.
[8] CHUE Hong N, ANTONIOLETTI M, KARASAVVAS K.  Accessing data in grids using OGSA-DAI[A]. Knowledge  and Data Management in GRIDs[C]. 2007.3.
[9] 高昂. 面向空間數(shù)據(jù)的分布式服務(wù)計算研究與實現(xiàn)[D].北京:中國科學(xué)院地理科學(xué)與資源研究所, 2010.3.
[10] 張建兵. 基于網(wǎng)格的空間信息服務(wù)關(guān)鍵技術(shù)研究[D]. 北京:中國科學(xué)院遙感應(yīng)用研究所, 2006.5.
[11] 龐雄文, 齊德昱, 李擁軍. Globus下的數(shù)據(jù)訪問方法[J].計算機(jī)應(yīng)用研究, 2006,27(4):68-70.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。