摘 要:對象—關系—屬性數據模型相對傳統的結構化數據模型,用更豐富的數據語義區別了對象類屬性和關系類型屬性兩個概念,使其適用于半結構化數據的存儲與管理。從分析空間數據的半結構化特征入手,以空間數據的嵌套關系為管理對象,實現了在關系型數據庫中對空間半結構化數據的存儲與管理。
關鍵詞:對象—關系—屬性數據模型; 空間半結構化數據; 嵌套關系; 關系型數據庫
中圖分類號:TP311.12文獻標志碼:A
文章編號:1001-3695(2007)06-0055-03
空間實體的非結構特征決定了空間數據的非結構性。它表現在一個多邊形可能只由一條弧段封閉而成,也可能由若干條弧段組成,如圖1所示。
多邊形記錄是多條弧段的嵌套(Nested)[1],即空間數據是所謂半結構化數據(SemiStructured Data,SSD)。半結構化數據的這種嵌套結構是一般關系型數據庫所不能滿足的。
不同于存儲在典型關系和對象數據庫中的結構化數據,空間半結構化數據缺乏已知的、獨立于數據之外的固定模式,使得空間數據的查詢和集成效率不高。因此,目前對半結構化空間數據的存儲和管理基本上采用各類擴展標記性語言,如XML、OWL、OEM等。擴展標記性語言作為一種樹狀數據結構,雖然有效地解決了半結構化空間數據的嵌
套問題,但同時它又是一種平面的數據結構。這樣導致了半結構化空間數據管理上的兩個問題[2]:
數據查詢及更新的不便;數據冗余。
傳統的DBMS如關系或面向對象數據庫系統以其強大的功能和穩定的性能,是數據管理的主流技術。如何運用傳統DBMS管理半結構化空間數據,一直是地理信息科學(GIS)的熱點和重大前沿課題。對象—關系—屬性數據模型的引入為解決這一問題提供了新的思路。
1 概念、定義及相關性質
1.1 半結構化數據的模式與傳統關系及面向對象數據的模式差異[3]
半結構化數據具有如下特點:
(1)隱含的模式信息。半結構化數據具有一定的結構,但其結構與數據混在一起,沒有顯式的模式定義。
(2)不規則的結構。一個數據集合可能由異構的元素組成,如前述空間多邊形的表示。
(3)沒有嚴格的類型約束。由于沒有一個預先定義的模式以及數據在結構上的不規則性,缺乏對數據的嚴格類型約束。
目前關于半結構化數據的研究主要集中在新的數據模型、查詢模式、存儲技術以及優化技術等方面。在眾多的研究課題中,對半結構化數據結構的研究是一個非常重要的方向。半結構化數據的模式與傳統關系及面向對象數據的模式不同,主要有如下一些差異特點:
(1)對半結構化數據來說,是先有數據后有模式。
(2)半結構化數據的模式是用于描述數據的結構信息,而不是對數據結構進行強制性的約束。
(3)半結構化數據的模式是非精確的。它可能只描述數據的一部分結構,也可能根據數據處理各階段的不同視角而不同。
(4)半結構化數據的模式可能規模很大,甚至超過源數據的規模,而且會由于數據的不斷更新而處于動態變化之中。
1.2 對象—關系—屬性數據模型
對象—關系—屬性數據模型(ObjectRelationshipAttribute model for SemiStructured data,ORASS)由新加坡學者Ling Tok Wang等人提出[4],最初用于解決圖書管理、工程項目管理等半結構化數據管理。它由對象類、關系類型、(對象類或關系類型的)屬性三個基本概念構成。
1.2.1 對象類(Object Classes)
ORA模型中的對象類概念與傳統對象—關系數據模型中的對象概念類似,也是對客觀世界實體的抽象表達,如作為地理實體的點、線、面。相對傳統ER圖,ORA模型中的對象類也采用長方形表示,橢圓表示屬性,菱形表示聯系。在圖形內表示它們的名字。
1.2.2 關系類型(Relationship Types)
1.2.3 類的屬性(Attributes)
不同于傳統面向對象模型,ORA模型用更豐富的數據語義(Semantics)區別了對象類屬性和關系類型屬性兩個概念。模型中的屬性不僅僅直接關聯于實體,而且關聯于實體間的嵌套關系,如圖5所示(為簡便起見,此處僅說明二元嵌套關系,三元嵌套關系可類推)。
(1)對象類的屬性與傳統的對象—關系型數據庫模型中類的屬性類似,如每條邊界線的屬性為
(2)關系類型的屬性并不與點、線、面等空間實體直接關聯,而是與其嵌套關系直接關聯。例如圖5中的“國土證號”等屬性并不是直接與代表每一塊宗地的面實體關聯,而是與線—面間的二元嵌套關系相關聯。
2 ORA模型與傳統半結構數據表達機制比較研究
2.1 ORA模型與XML模型比較研究
XML作為傳統的半結構數據表達機制,雖然有效地解決了數據嵌套問題;但同時作為一種樹狀的平面數據結構,導致了半結構化空間數據管理上的數據查詢及更新不便和數據冗余兩個問題。如圖1所示,線實體L1、L2共享點P4,在XML模型中必須分屬兩條線存儲,數據的冗余顯而易見。ORA模型區別了對象類和關系類兩個概念,僅直接存儲被嵌套的空間元數據,通過嵌套關系表達復雜的空間實體,避免了數據冗余;而且充分利用傳統DBMS的Ad hoc查詢、有效存取、并發控制、故障恢復以及安全等功能實現了對空間半結構化數據的有效管理。
2.2 ORA模型與OEM比較研究
對象交換模型(Object Exchange Model,OEM)[5]將空間實體抽象為數據對象,每一個對象擁有唯一的標志符、實體空間屬性(基本的或嵌套的)和非空間屬性,通過生命—活動機制(LMS)實現對象在時間域的變化,即所謂對象交換。一個典型的對象交換模型如圖6所示。
作為一種純數據庫模型,比較傳統OR模型而言,OEM忽略了對象的類、方法、繼承等屬性,僅僅支持對象的識別和嵌套,用更簡便的數據語義實現了對空間半結構數據的管理;但正是這種語義的簡化導致了OEM在表達多重嵌套結構時的不足[4]。ORA模型運用關系類型的度和約束條件機制實現了對空間數據的多重嵌套管理。
3 系統實例
筆者在參加某城市“基礎地理信息系統”的建設中,運用ORA模型進行了“土地管理系統”設計,取得了較好的效果。下面以該市王家橋地區隨城市發展而產生的宗地變化情況(圖7、8)為例,說明ORA模型的應用。
王家橋地區的某中學通過征地擴建,其宗地屬性發生了部分變化(圖9)。這種變化在傳統對象—關系型數據庫模型和ORA模型中有著不同的表達。
在傳統的對象—關系型數據庫模型中,每一塊宗地被抽象為一個面實體,以二進制大對象BLOB形式整體存儲于關系型數據庫中;而宗地的相關屬性與每一個面實體直接關聯;空間索引表存儲空間對象,按照特定方式建立空間索引的索引信息,如MBR索引等。
傳統的對象—關系型數據庫模型能有效地實現空間對象的空間檢索、分析等操作,是當前空間數據管理的主流技術。但這樣的數據模型當空間數據發生上述變化時在數據描述上便出現了困難。
作為數據庫直接管理的對象,每一個面實體在發生變化時,傳統的對象—關系型數據庫模型通常采用兩種做法:
(1)將每一個面實體重新抽象,形成新的二進制大對象,即僅管理當前空間數據的一個快照(Snapshot)。這樣導致了宗地變化信息的丟失,如S2邊界的具體變化情況。
(2)將每一次面實體的變化情況均加以存儲,即多個快照,這樣又導致了數據的冗余。
關系類型屬性相比對象類屬性具有更豐富的數據語義,其優越性在表達圖9中的宗地變化關系時有極好的體現。它無須對空間實體重新抽象,僅對線—面間的嵌套關系(NestID)更新即可,同時采用時間戳(Timestamp)記錄變化日志,從而有效彌補了傳統ORA模型的不足。
系統中宗地的嵌套關系及屬性關聯如表1所示。
當宗地發生變化時,系統實際僅需利用原有測繪點位數據,或適當補充后更新表②、③中的兩個嵌套關系即可,并通過時間戳記錄宗地變化日志。相較傳統ORA模型,系統在數據更新和冗余方面均取得了較好的效果。
4 結束語
本文研究了對象—關系—屬性數據模型的基本原理以及對空間半結構數據管理的實現。實踐證明,其機制切實可行,并在實際工作中得到了很好的應用。
作為典型的半結構化數據,對空間數據的有效管理還將繼續深入,以后的工作將集中在兩個方面:
①對時空(SpatioTemporal)嵌套關系的研究;
②對嵌套關系快速有效的索引研究。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。