遲洋 李春風 (天津開發區測量隊 天津300456)
GML空間數據在Oracle XML DB 11g中的存儲機制研究
遲洋 李春風 (天津開發區測量隊 天津300456)
GML數據的存儲研究還屬于一個嶄新的領域,目前還沒有一個比較完好的技術實現方法。在分析比較Oracle XML DB存儲模式的基礎上,考慮GML空間數據的特點,研究GML空間數據在Oracle中的存儲機制,并分析儲存模式的優劣。利用Oracle XML DB實現對GML數據的存儲是GIS空間數據管理方面研究的一條新的思路和途徑。
地理信息 Oracle XML DB 二進制XML存儲 GML空間數據
長期以來,由于空間數據模型的不同導致空間信息在共享、集成等方面存在著諸多困難,造成了各行各業和各部門的空間信息難以實現互訪,形成了一個個“信息孤島”,造成社會財力和人力的巨大浪費。為了解決這些問題,開放地理信息系統協會(OGC)提出地理標記語言(GML)實施規范,GML作為Intemet環境下空間信息的全新、簡潔、統一的編碼標準,為空間數據建模、柵/矢一體化GIS體系研究、Webgis開發、空間數據共享與互操作研究等提供了新的方法和途徑。作為基于XML的地理標記語言,鑒于GML的文本性、自描述性、可擴展性、內容與表現分離性、開放性、互操作等特性,使得GML被廣泛關注、研究與實踐,大量甚至海量的GML空間數據正不斷產生。如何對其進行有效管理,從而實現GML空間數據的高效存儲、索引等,是GML相關研究者、GML空間數據使用者所必須面對的重要問題。
針對GML空間數據的管理,存在基于關系型數據庫管理和基于原生模式XML數據庫管理兩大類。原生模式XML數據庫(NXD)是一個新生事物,且其自身的許多方面還在不斷研究和發展中,還沒有形成像關系型數據庫那樣成熟的標準,采用原生模式對文檔型GML空間數據進行存儲管理并不理想。由于GML數據XML格式的特點,采用關系型數據庫對GML空間數據進行管理具有與生俱來的優勢,但傳統的關系數據庫技術并不適合海量復雜的GML空間數據的存儲與管理。針對以上不足,本文在分析GML空間數據的表達描述的基礎上,研究利用Oracle XML DB 11g數據庫來存儲海量復雜的GML空間數據的方案,為海量復雜的GML空間數據的存儲、管理和應用提供新的思路和方法。
GML作為XML的一種擴充,它主要是由GML模式(GML Schema)、GML 應用模式(GML Application Schema)以及 GML實例數據(GML Instance Data)3個部分組成,其中GML模式是由OGC定義的,而應用模式是根據應用領域的不同來定義,通過擴展或限制GML模式中定義的類型為應用領域定義所需的類型;最后根據具體的數據并依照GML Application Schema的規范形成GMLInstance Data。具體生成過程參見圖1。
首先將現實世界的地理實體抽象形成幾何體,接著對幾何體添加空間和非空間屬性使之成為地理要素,再用GML來定義地理要素相互之間的關系和結構,然后根據定義的結構用GML Schema生成Application Schema,最后根據Application Schema中定義的元素再結合具體的數據生成Instance Data,從而使地理要素資料成為GML數據。
對于空間數據來說,每種數據都有自己的空間幾何模型。實現空間數據GML格式轉換的本質是建立兩者之間的映射關系,可通過對GML基本的XML Schema的擴充來實現兩者的映射,通過建立各種空間對象的XML Schema可對這些空間對象進行描述。
GML是建立在XML shema基礎上,用于描述空間地理數據,并編碼和保存為XML數據格式的語法和機制。在這個基礎上,還允許用戶進一步開發符合需要的工作子集。目前,OGC先后推出了3個版本的GML,本文采用GML3.0進行建模研究。
GML3.0由32個基本的XML Schema構成,通過這些模式定義來表達與描述地理現實世界的信息,其中主要的模式有要素模式(Feature Schema)、幾何模式(Geometry Schema)、拓撲模式(TopologySchema)、時間模式(Temporal Schema)等。
地理要素包含一系列的空間和非空間屬性,要素模式為創建GML的要素和要素集合提供了一個框架,它定義了抽象和具體的元素及要素類型,并通過<include>元素引入了幾何模式和時態模式中的定義和聲明。幾何模式詳細地描述了地理要素的幾何模型,定義了具體的幾何形狀信息,它提供的點、線、面、曲線、多邊形、點集、線集、多邊形集等類型可以直接使用,用這些基本信息可以描述一些地物的地理性質。時態模式擴展了GML的核心元素,使其包括描述地理數據時態特征的元素,它提供一種框架用于描述動態要素的時間變化。拓撲模式定義了反映地理要素之間關系的拓撲對象,用來解決地物之間的拓撲關系。
GML是一個開放的框架結構,32個基本的Schema相當于32個基類,通過對這32個基本Schema的繼承和擴展,可以利用自己定義的Schema來對地理數據進行編碼,實現以XML的方式對地理信息的表達和描述。
Oracle公司從Oracle9i開始推出了Oracle XML DB,Oracle XMLDB是Oracle數據庫所提供的高性能XML存儲和檢索技術的集合,不僅提供目前最復雜和完整的關系數據庫所提供的所有功能,還提供與原生模式XML數據庫所相關的所有功能。Oracle 11g又增加了對XML的二進制存儲、新的XMLIndex索引和許多其他實現高性能存儲以及檢索結構化、非結構化XML文檔的功能。
Oracle用XMLType數據類型來存儲XML數據,它是為了保留XML的范型同時獲取關系型結構在性能與擴展上的優勢而創建的,是一種本機服務器數據類型。這種數據類型用來定義表格的列或者視圖,可以用SQL>CREATE TABLE TOUR OF XMLType來創建XMLType表,通過創建XMLType數據類型,Oracle XMLDB可以將XML應用數據存儲到數據庫中。
在Oracle XML DB 11g中,XMLType數據類型有3種不同的存儲模式,即結構化存儲(對象-關系型)、非結構化存儲(CLOB)、二進制XML存儲。
GML文檔都是符合特定GML應用模式的實例文檔,所以在Oracle XMLDB中存儲GML數據,首先需要注冊這種應用模式,模式可以通過DBMS_XMLSCHEMA包中的registerschema()函數進行注冊。
結構化存儲是將GML文檔分解為一系列的對象存儲到本地數據庫一個或者多個關系表中。當在Oracle XMLDB中注冊了XML模式以后,需要的本地數據庫類型的定義就會從XML模式生成。本地數據庫類型定義產生于XML模式中定義的complexTyle,由complexTyle定義的每一個元素和屬性成為對應的本地數據庫類型的屬性。產生的本地數據庫類型與XML模式一致的XML內容分解并存儲到數據庫對象中,沒有任何信息的丟失,當文檔存入時,由XML模式定義的結構被直接映射成相應的本地數據庫類型。
用結構化存儲創建XMLType表聲明如下:

利用非結構化存儲可以用來存儲不基于模式的文檔,但也可以用來存儲GML空間數據,可以將GML文檔作為整體存儲到一個CLOB字段中,但必須對XMLType表進行聲明:

在Oracle數據庫11g中,利用二進制XML存儲可以將GML文檔解析成一種中間狀態,然后以二進制的方式存儲到CLOB中。首先創建二進制XMLType表,然后利用XMLTable()函數創建可以高效查詢二進制XML表的關系視圖。
用二進制XML存儲創建XMLType表聲明如下:


結構化存儲和非結構化存儲是Oracle中非常典型的兩種存儲方式,CLOB型存儲格式可以避免將XML數據拆散存儲,而對象表的存儲方式則更有利于進行節點級的查詢。但都有不足之處,非結構化存儲占用的空間最大且查詢性能最差,結構化存儲速度比非結構化儲存慢。
二進制XML存儲綜合了結構化和非結構化存儲模式的優點,用以聯接結構化和非結構化存儲的現有本機存儲模型。二進制XML存儲可以感知XML模式,可以獲得更高的磁盤空間效率和查詢性能,提供比非結構化存儲更高效的數據庫存儲、更新、查詢、索引和片段提取的性能。與結構化存儲類似,數據和元數據也可通過二進制存儲在數據庫級別分離,以提高效率,而且可以存儲混合的可變數據和元數據。但它的查詢性能卻遜色于結構化存儲,二進制XML存儲模式易于使用,只要可以接受二進制XML存儲在關系訪問時的查詢性能,二進制XML存儲就是一個很好的GML空間數據存儲方式,因此在選擇結構化存儲GML前值得對其進行評價。
由于GML數據的存儲研究還屬于一個嶄新的領域,日前還沒有一個比較完好的技術實現方法。本文在分析比較Oracle XMLDB數據存儲的基礎上,考慮GML空間數據的特點,研究GML空間數據在Oracle 11g數據庫中的存儲方法。利用Oracle XML DB實現對GML數據的存儲是GIS空間數據管理方面研究的一條新的思路和途徑,將有利于推動GIS之間的數據共享及Web GIS的發展。目前國內外有不少GIS界的學者在致力于這方面的研究,相信在不久的將來會出現具備更完善功能的GML數據庫系統?!?/p>
[l]Oracle.Oracle Database lOgRlXMLDB Technical Whitepaper[EB/O L].http://dow nload.oracle.com/technology/tech/xml/xmldb/current/twp.pdf,2005.
[2]朱前飛,高芒,廖俊國.一種基于G M L的空間數據共享方案的研究[J].工程勘察,2004,(1):57-63.
[3]史婷婷,李巖,王鵬.基于GML空間數據儲存方法研究與實現[J].計算機應用,2006,26(10):2409-2410.
[4]陳建華.原生模式GML空間數據管理機制研究[D].成都:成都理工大學,2008:14-17.
[5]潘雨青,陳天滋.基于GML的地理空間數據模型[J].江蘇大學學報,2002,23(6):82-85.
2011-05-09