用關系數據庫與空間數據庫協同管理土地數據,是近年來土地信息系統的分布式處理的常用方法之一,其分布式實現主要依賴于關系數據庫(如Oracle)所提供的分布式功能。
本文將詳細闡述土地信息系統中基于Oracle的關系數據庫分布式設計及空間數據分布式處理的實現。
2 Oracle系統的分布式設計技術
2.1 分布式Oracle系統構架
分布式Oracle系統是由分布式數據庫管理系統(Oracle Rdbms)、支持多種操作系統和通信協議的分布式處理環境軟件SQL*NET、以及與非Oracle Rdbms聯接的軟件SQL*CONNECT組成的一個軟件群[2]。其中,Oracle Rdbms的分布式功能主要包括分布式查詢、單點事務、多個事務中多點更新及結點自治等;SQL*NET提供不同Oracle數據庫間的連接功能;SQL*CONNECT是實現Oracle與其它DBMS轉換的一個接口產品。
2.2 SQL*NET
SQL*NET是Oracle分布式處理的基礎,其體系結構如圖1所示。通過SQL*NET,一個應用程序可以并行存取本地或遠程的多個數據庫。當存取遠程數據庫時,在客戶端,SQL*NET將來自用戶程序接口(UPI)層的子程序調用(SQL語句)組裝成信息報文,經過異種機環境所需要的數據轉換后,通過網絡將報文發送給遠程計算機;在服務器端,SQL*NET接受報文,作必要的數據轉換,并將子程序調用參數傳送到適當的Oracle核心入口點,在相反方向上服務器端驅動SQL*NET傳送的是數據和返回碼信息[1]。
圖1 SQL*NET體系結構
2.3 各類數據庫對象
Oracle中與分布式處理有關的數據庫對象主要有:數據庫鏈路、視圖、快照、同義詞等。其中,數據庫鏈路用于連接本地結點和遠程結點之間的數據庫;數據快照是Oracle系統提供的一種對數據表的異步復制,它有以下兩種作用:數據快照是遠程數據表在本地的復制,通過它可以實現對遠程數據的快速查詢;在系統或網絡出現故障時,可以通過數據快照恢復數據。
同義詞用來簡化一些繁瑣的表名或視圖名等。對于遠程操作,用戶也可以為遠程數據庫的表名或視圖名等建立相應的同義詞,以后訪問這些遠程數據庫的表或視圖就可以直接寫同義詞名,也就是說用戶在訪問數據時無須指明數據所在結點的名字,這就達到了透明訪問。例如,在某一結點訪問另一結點的數據表時需要命令:
SELECT*FROM SUPDBA.EMPLOYEE@SUP—HQ;
如果建立如下同義詞:
CREATE PUBLIC SYNONYM EMPLOYEE FOR SUPDBA.EMPLOYEE@SUP—HQ;
再訪問該遠程表時就只需要命令:
SELECT * FROM EMPLOYEE;
2.4 分布式操作
在數據庫鏈路定義以后,遠程操作就變得非常簡單和方便。用戶訪問遠程數據庫的表或視圖時,只要在表名或視圖名后面附上數據庫鏈路名即可通過SELECT或INSERT、UPDATE、DELETE等語句對數據進行操作。其形式為:
SELECT 列表達式[,列表達式,...]
FROM 表名@數據庫鏈路名[,表名@數據庫鏈路名,...]
[WHERE 邏輯表達式];
在訪問數據時,如果要訪問的數據來自同一個數據表,根據需要直接訪問該表或基于該表的視圖或快照;如果所要訪問的數據來自不同的數據表,可通過連接(JOIN)操作或相應的視圖來實現,視圖中各數據項的來源有以下幾種情況:
來自同一數據庫中的一個表或多個表;
來自同一結點不同數據庫中的兩個表或多個表;
來自不同結點上數據庫中的兩個表或多個表。
如果事先建立了有關視圖,用戶就可以直接訪問這些視圖以實現一些對數據的復雜訪問。
3 數據庫分布式設計的基本步驟
3.1 確定數據的物理位置
在分布式數據庫環境中,對每一數據表都要首先確定其最佳的存放位置,從而使整體數據的分布更加合理。在這一過程中,需要考慮的因素主要有以下幾點:每一結點需傳遞的事務量;每一結點使用的數據量;網絡的性能與可靠性;各結點速度、磁盤容量;若結點間連接不通后的訪問規則;表間聯系對數據完整性的影響等。
3.2 確定數據庫及其對象
對每一存放數據的獨立結點都要建立至少一個數據庫,對于不同的應用,在同一地點也可以建立多個數據庫。在每一數據庫中還要根據實際需求建立有關的數據庫對象,如Oracle中有關數據庫對象有Table、View、Snapshot、Synonym、DatabaseLink等。
3.3 確定數據存取機制
分布式數據庫的一大重要特點是數據訪問的透明性。在應用系統中,不同的功能會需要訪問不同數據庫中的數據。為了達到數據訪問的透明性,在分布式數據庫設計時就需要確定如何存取其它數據庫中的數據,如何實現不同數據庫中數據表的鏈接等規則。
4 土地信息系統數據庫的設計
深圳市土地管理信息系統(以下簡稱SZLIS)是一個面向深圳市規劃國土局土地管理業務的集成化分布式信息系統。由于該局行政上采用市局——分局——管理所三級運作模式,土地管理業務分布在三級管理部門,因此SZLIS系統中的分布式處理至關重要。由于Oracle難以管理空間數據,地理信息系統軟件ARC/INFO不支持分布式處理,故考慮二者結合來管理,即系統中非空間數據用Oracle管理,空間數據用ARC/INFO管理。
4.1 SZLIS體系結構
SZLIS運行在由七個局域子網構成的廣域網上。七個局域網分別分布于深圳市規劃國土局市局和六個分局,管理所采用電話撥號上網連接到分局數據庫中。系統在市局和六個分局的服務器中分別建立七個數據庫。
SZLIS的主要功能包括:管理業務文件的流轉及辦理過程;用地申請的處理和批復;用計算機進行出讓地塊的劃界和對用地空間與文字屬性的管理;進行紅線圖、方案圖以及其它圖件的制作與輸出;制定地價方案,編制土地使用權出讓合同書;對與土地有關的各類、各層次信息的查詢功能等。在SZLIS中,市局、分局和管理所都有以上功能,且市局可以查詢及審批各分局的業務數據,三級部門之間要互相流轉文件。
4.2 數據說明
根據系統的功能需求,SZLIS中的數據及其使用情況分為以下幾類:
類型一:人員、部門、崗位、任職、單位等做參考用的數據,全局統一一份數據,更新量少,市局、分局都能更新;
類型二:文件內容、辦理過程等與文件流轉相關的數據,市局和分局都會收文,且市局、分局、管理所三級之間要轉文;
類型三:業務屬性數據,如紅線、宗地屬性、界址點、地價方案、土地出讓合同屬性等,主要業務在分局辦理,部分大型業務在市局辦理,部分小型業務在管理所辦理;
類型四:圖形數據,包括紅線、宗地等地塊的圖形數據。
SZLIS中的圖形數據用ARC/INFO管理,ARC/INFO提供接口與Oracle管理的屬性數據相連接。為了實現圖形數據與屬性數據的有效連接,以及利用圖形數據查詢或更新屬性數據,除通過建立ARC/INFO 與Oracle系統之間的連接外,還需利用RELATE關系建立各COVERAGE的INFO屬性表(AAT和PAT)與Oracle數據庫中的屬性表(table)之間的關聯關系,即在ARC/INFO的AAT或PAT表與Oracle表中分別建立公共的標識項,通過這些公共的標識項把AAT或PAT表中的記錄與相應Oracle中的對應記錄掛接起來。
4.3 分布式設計
根據系統對分布式的需求,SZLIS中數據庫分布式設計方案如下:
對于類型一數據,市局數據庫中建立數據表,分局數據庫中建立對市局表的快照和視圖,對這些數據的大部分修改在市局進行,分局通過視圖修改這些數據,通過快照查詢這些數據;對于類型二數據,市局和分局的數據庫中分別建立數據表,數據存放在數據的產生地,如果市局向分局轉文,則有關此文的文件內容、辦理過程等數據都拷到分局的數據庫中,反之亦然;對于類型三數據,數據存放在分局的數據庫中,在市局的數據庫中分別建立對六個分局數據庫的DATABASE LINK,市局通過視圖創建或修改這些數據,通過快照查詢這些數據;分局和管理所系統登錄到對應分局的數據庫,直接對業務數據進行操作。以宗地屬性數據為例,在分局建立表PARCEL,分局操作此表,在市局建立視圖和快照如下:
CREATE VIEW V$PARCEL—LH AS SELECT * FROM SUPDBA.PARCEL@SUP—LH;
CREATE SNAPSHOT S$PARCEL—LH
PCTFREE 5 PCTUSED 60
TABLESPACE users
STORAGE INITIAL 50K NEXT 50K
USING INDEX STORAGE (INITIAL 25K NEXT 25K)
REFRESH START WITH ROUND(SYSDATE + 1) + 18/24
NEXT SYSDATE + 1
AS SELECT * FROM SUPDBA.PARCEL@SUP—LH;
/* 快照從第二天18點開始刷新,每天刷新一次 */
上述三類數據存貯于SZLIS的Oracle數據庫中,具體的表、視圖、快照間的關系如圖2所示。
圖2 SZLIS中各數據庫對象間關系
對于類型四數據,市局、分局、管理所各存放一份ARC/INFO數據,市局系統通過與Oracle數據庫中對分局遠程表做的視圖相連來修改屬性數據,通過快照來查詢屬性數據;分局和管理所系統則直接通過與Oracle數據庫中的表相連來操作屬性數據;每天系統的更新程序要根據Oracle數據庫的屬性數據對市局、分局、管理所的圖形數據進行增量更新,以保證三地的數據一致。
SZLIS中基于Oracle的分布式數據庫組織結構如圖3所示。
圖3 SZLIS分布式數據庫組織結構
4.4 空間數據同步處理
ARC/INFO本身并不支持分布式存儲和管理,為了實現市局、分局及管理所的空間數據同步,系統采用如下方法處理:
. 在分局的Oracle數據庫中建立圖形修改記錄表,數據項包括數據類型、數據序號、創建地點、更新日期、更新類型、更新用戶、讀取標志等,市局建立它們的視圖,并通過視圖讀取圖形修改記錄表。
. 市局或各分局系統運行時對圖形的每個變動,如創建、更新、刪除等操作,往圖形修改記錄表中加入記錄。
. 在進行空間數據交換時,調用圖形修改記錄表,提取信息,進行圖形數據更新。
. 處于第三級的管理所,數據的處理類似市局,屬性數據訪問的是分局的表,圖形數據在其本地建數據庫,與分局的表相關聯。
5 展望
關系數據庫經過多年的發展,其分布式處理技術已經越來越成熟。對于土地信息系統這種既有非空間數據又有空間數據的大型系統來說,其非空間數據可借助于相對成熟的分布式關系數據庫來實現分布式處理,而目前空間數據的分布式處理需要寄生于關系數據庫的分布式技術。要真正解決空間數據的分布式處理問題,還有待于深入的研究。
榮 芳 工程師。主要研究方向:地理信息系統,數據庫設計等。