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