ArcGIS 10——地理数据库管理GIS数据
寫本文的最初意向是當(dāng)前正在進(jìn)行的項(xiàng)目中有實(shí)現(xiàn)ESRI版本化數(shù)據(jù)管理的功能模塊,碰到一些棘手的問題,幾經(jīng)周折還是決定系統(tǒng)學(xué)習(xí)ArcGIS10的幫助文檔。(文章摘抄的比較多)
?
地理數(shù)據(jù)庫是用于保存數(shù)據(jù)集集合的“容器”。首先了解一下ArcGIS的三種地理數(shù)據(jù)庫類型:
- 文件地理數(shù)據(jù)庫-在文件系統(tǒng)中以文件夾的形式存儲(chǔ)。每個(gè)數(shù)據(jù)集都以文件形式保存,該文件大小最多可擴(kuò)展至1TB。建議使用文件地理數(shù)據(jù)庫而不是個(gè)人地理數(shù)據(jù)庫;
- 個(gè)人地理數(shù)據(jù)庫-所有的數(shù)據(jù)集都存儲(chǔ)于Ms Access數(shù)據(jù)文件內(nèi),該文件的大小最大為2GB。
- ArcSDE地理數(shù)據(jù)庫-使用Oracle、MS SQL Server、IBM DB2、IBM Informix、PostgreSQL存儲(chǔ)與關(guān)系數(shù)據(jù)庫中。這些多用戶地理數(shù)據(jù)庫需要使用ArcSDE,在大小和用戶數(shù)量方面沒有限制;
地理數(shù)據(jù)庫在可擴(kuò)展性、跨平臺(tái)以及性能方面ESRI都推薦使用文件地理數(shù)據(jù)庫而非個(gè)人地理數(shù)據(jù)庫。而ArcSDE地理數(shù)據(jù)庫針對(duì)的是大型的多用戶的企業(yè)解決方案,其可用來管理共享式多用戶地理數(shù)據(jù)庫和支持多種基于版本的關(guān)鍵性GIS工作流。
?
這里重點(diǎn)來理清ArcSDE對(duì)DBMS事務(wù)框架進(jìn)行長事務(wù)管理和短事務(wù)管理:
ArcSDE 的主要角色之一就是支持每個(gè) DBMS 中的地理數(shù)據(jù)庫版本管理框架。
絕大多數(shù)情況下,GIS 中的單個(gè)編輯事務(wù)可能涉及對(duì)多個(gè)表中的多個(gè)行進(jìn)行更改。例如,更新宗地可能需要更改面的表示,并更改相應(yīng)的邊界線和宗地拐角。此外,還必須更新這些要素中每個(gè)要素的屬性記錄。此編輯操作需要對(duì)多個(gè)表中的多條記錄進(jìn)行更改。在這些情況下,用戶希望將此編輯集合視為單個(gè)事務(wù)。提交或回滾這些更改時(shí),會(huì)將它們視為一個(gè)統(tǒng)一的操作來進(jìn)行管理。
同時(shí),用戶希望能夠在一個(gè)編輯會(huì)話中撤消和重做單個(gè)編輯操作。為了使這種情況變得更為復(fù)雜,可能需要在與中央共享數(shù)據(jù)庫斷開連接的系統(tǒng)中執(zhí)行編輯操作。
而且,在這些專門化的 GIS 數(shù)據(jù)維護(hù)過程中,GIS 數(shù)據(jù)庫必須持續(xù)保持對(duì)日常操作可用,而在這些日常操作中,每位用戶都有可能獲取共享 GIS 數(shù)據(jù)庫的個(gè)人視圖或狀態(tài)。
通過使用一種稱為版本管理的方法,ArcSDE 地理數(shù)據(jù)庫支持在多用戶環(huán)境下對(duì)這些數(shù)據(jù)管理情景及許多其他數(shù)據(jù)管理情景進(jìn)行管理和更新。在版本管理這種機(jī)制下,所有的數(shù)據(jù)庫更改都作為表中的行進(jìn)行記錄。例如,每次更新某一行中的某個(gè)值時(shí),舊值即會(huì)失效,并會(huì)新增一個(gè)更新行。
這樣,通過將更改信息以增量記錄的方式存儲(chǔ)在數(shù)據(jù)庫中,ArcSDE 技術(shù)就能在簡單 DBMS 事務(wù)框架中管理復(fù)雜的高級(jí) GIS 事務(wù)。
ArcSDE 使用版本的元數(shù)據(jù)來隔離多個(gè)編輯會(huì)話、支持復(fù)雜事務(wù)、共享復(fù)本、同步多個(gè)數(shù)據(jù)庫之間的內(nèi)容、執(zhí)行自動(dòng)存檔并支持歷史查詢。
?
再來看看ESRI提供的數(shù)據(jù)庫維護(hù)策略:
非版本化數(shù)據(jù)維護(hù)
- 非版本化數(shù)據(jù)維護(hù)僅僅使用基礎(chǔ)DBMS事務(wù)模型,與標(biāo)準(zhǔn)數(shù)據(jù)庫事務(wù)等效。一次編輯會(huì)話(EditOperation)過程中從開啟到保存算一個(gè)事務(wù)過程,并且保存之后訪問該數(shù)據(jù)的其他用戶和應(yīng)用程序都將看到所做的更改。
- 此策略適用于簡單要素,不需要版本控制和歷史記錄管理的功能。
- 此策略不能對(duì)之前所做的操作執(zhí)行撤銷重做等操作,并且在后一次的操作記錄提交時(shí)不會(huì)進(jìn)行沖突檢測,而是直接覆蓋前一次的操作記錄。
版本化數(shù)據(jù)維護(hù)
- 地理數(shù)據(jù)庫對(duì)標(biāo)準(zhǔn) DBMS 事務(wù)進(jìn)行了擴(kuò)展,允許數(shù)據(jù)庫同時(shí)存在多個(gè)并發(fā)狀態(tài)(即版本)。每個(gè)版本可以表示正在進(jìn)行的工作(如一個(gè)設(shè)計(jì)或一組工作指令)、可跨越多個(gè)數(shù)據(jù)庫連接的工作,時(shí)間可以長達(dá)幾周或幾個(gè)月,視需要而定。版本可以使您在同一地理數(shù)據(jù)庫中管理對(duì)數(shù)據(jù)的過去、現(xiàn)在和建議的更改。
- 要管理過去的更改,需要將對(duì)數(shù)據(jù)的更改保存到單獨(dú)的存檔表中。可以根據(jù)需要將這些更改保留一定的時(shí)間,以便允許用戶查看數(shù)據(jù)庫在先前某個(gè)時(shí)間點(diǎn)的狀態(tài)。此功能稱為歸檔。啟用此功能時(shí),對(duì) DEFAULT 版本(通常用作數(shù)據(jù)庫的發(fā)布版本)的更改會(huì)自動(dòng)存檔。
- 要管理當(dāng)前更改,編輯者可以修改地理數(shù)據(jù)庫的私有(private)版本,這樣其他用戶便無法查看未完成的工作。編輯數(shù)據(jù)的某一版本時(shí),不應(yīng)用任何鎖。這樣就使并發(fā)得到了最大限度的提高,因?yàn)槠渌脩裟軌蜃x取和編輯您正在修改的數(shù)據(jù),并且您不會(huì)阻止其他用戶訪問數(shù)據(jù)庫。編輯者完成更改之后,便可以將更改整合到已發(fā)布版本之中。
- 要管理建議的更改,可以在數(shù)據(jù)庫的某個(gè)版本中設(shè)計(jì)一個(gè)情景或執(zhí)行假設(shè)分析。情景可以作為一個(gè)單獨(dú)的更改單元進(jìn)行管理,它可以跨越多個(gè)編輯會(huì)話并延續(xù)許多天、周或月。可以自由地添加建議的要素、執(zhí)行地理分析、生成地圖,所有操作都不會(huì)影響其他用戶正在訪問的數(shù)據(jù)庫。更改完成并通過批準(zhǔn)之后,可以將其整合到地理數(shù)據(jù)庫的其他部分中。
- 版本化表需要數(shù)據(jù)庫管理員進(jìn)行定期維護(hù)。隨著時(shí)間推移,對(duì)地理數(shù)據(jù)庫的編輯次數(shù)增多,增量表會(huì)逐漸增大,因此會(huì)影響到顯示和查詢性能。要保持性能,數(shù)據(jù)庫管理員可以定期壓縮版本化數(shù)據(jù)庫,此操作會(huì)從增量表中移除冗余的信息。在經(jīng)歷密集的數(shù)據(jù)庫活動(dòng)之后,如數(shù)據(jù)庫移動(dòng)結(jié)束時(shí)或加載新數(shù)據(jù)之后,需要對(duì)版本化數(shù)據(jù)庫執(zhí)行壓縮操作。可以在其他用戶連接到數(shù)據(jù)庫并使用數(shù)據(jù)庫的情況下進(jìn)行壓縮。
??????? ArcGIS 可以用下列兩種方法之一管理支持版本的基礎(chǔ)增量表:
- 將所有版本的更改保存到增量表[支持歷史歸檔][操作:注冊版本時(shí)不勾選“將編輯內(nèi)容移動(dòng)到基表”][應(yīng)用場景舉例:管理版本的最好方法是將所有更改都保存到增量表中。這可以使您充分利用地理數(shù)據(jù)庫的功能,包括存檔、復(fù)制以及編輯幾何網(wǎng)絡(luò)和拓?fù)涞哪芰
- 將所有非 DEFAULT 版本編輯內(nèi)容保存到增量表,將所有 DEFAULT 版本的編輯內(nèi)容保存到基表[不支持歷史歸檔][操作:注冊版本時(shí)勾選“將編輯內(nèi)容移動(dòng)到基表”][應(yīng)用場景舉例:這種情況舉例,一個(gè)部門使用 ArcGIS 維護(hù)數(shù)據(jù)庫中的地理數(shù)據(jù),而另一個(gè)部門使用自定義應(yīng)用程序維護(hù)同一數(shù)據(jù)庫中的客戶記錄。自定義應(yīng)用程序需要在事務(wù)進(jìn)行時(shí)應(yīng)用 DBMS 約束和觸發(fā)器并且可能不識(shí)別版本化表。與此同時(shí),另一部門需要在自己的獨(dú)立版本中編輯地理數(shù)據(jù),在編輯完成并通過批準(zhǔn)之后再共享部門編輯內(nèi)容。]
下面具體看看如何使用版本化數(shù)據(jù):
- DEFAULT版本:每個(gè)ArcSDE地理數(shù)據(jù)庫都具有一個(gè)名為DEFAULT的默認(rèn)版本,其始終存在且不能被刪除,一般用來作為數(shù)據(jù)庫的發(fā)布版本。在版本體系中,DEFALUT版本作為根版本,您可以將其他版本中的變更提交到DEFALUT版本,從而逐步維護(hù)和更新DEFAULT版本。
- 其他版本:可以通過從任意現(xiàn)有版本創(chuàng)建子版本或分支版本的方式創(chuàng)建其他版本。版本機(jī)制中,無論有多少個(gè)版本,各表和要素類在數(shù)據(jù)庫僅存儲(chǔ)一次,ArcGIS保留了各要素類和表的原始格式,但會(huì)在被稱為增量表(A表和D表)的表中記錄所有更改。用戶可以同時(shí)編輯所有版本,多個(gè)用戶還可以同時(shí)編輯同一版本。
?
通過以上基本知識(shí)的了解,深入探索一下版本和版本化編輯的工作原理:
對(duì)任意版本中的數(shù)據(jù)開始執(zhí)行版本化編輯之前,必須將數(shù)據(jù)集注冊為版本。
理解將數(shù)據(jù)集注冊為版本和創(chuàng)建版本的區(qū)別:
- 創(chuàng)建版本時(shí)所創(chuàng)建的是地理數(shù)據(jù)庫的某種“視圖”,您可以通過該“視圖”編輯版本化數(shù)據(jù)并隨即查看所做的更改。連接到同一版本的其他用戶將在刷新之后看到這些更改。但是,在您對(duì)這些更改進(jìn)行協(xié)調(diào)并提交到祖先版本之前,連接到其他版本的用戶將不會(huì)看到這些更改。舉個(gè)例子,如下圖所示版本工作流示意:在進(jìn)行版本化編輯之后,將更改提交回DEFALUT版本之后,無論您連接的是哪個(gè)版本,這些更改都是可見的。
- 將數(shù)據(jù)集(要素類、要素?cái)?shù)據(jù)集或表)注冊為版本會(huì)使其為版本化編輯準(zhǔn)備就緒。將數(shù)據(jù)集注冊為版本時(shí),會(huì)創(chuàng)建兩個(gè)增量表:用于插入和更新的A(或叫“添加”)表以及用于刪除的D(或叫“刪除”)表。每次更新或刪除數(shù)據(jù)集中的記錄時(shí),都會(huì)向這兩個(gè)表或其中一個(gè)表添加行。因此,版本化數(shù)據(jù)集包含原始表(稱為基表)以及增量表中的所有更改。進(jìn)行可填充增量表的編輯時(shí),地理數(shù)據(jù)庫會(huì)追蹤您所連接的版本。查詢或顯示版本中的數(shù)據(jù)集時(shí),ArcGIS 對(duì)原始表和增量表中的相關(guān)行進(jìn)行組合,呈現(xiàn)出數(shù)據(jù)的無縫視圖。
無論在哪個(gè)版本中進(jìn)行編輯,對(duì)要素類或表所做的全部編輯都會(huì)被記錄到同一增量表。總的來說,基表、A 表和 D 表中的所有行表示要素類或表的所有版本。這表示任何一個(gè)版本都只能引用這三個(gè)表中的行的子集。那么,ArcGIS 如何記住增量表中屬于各版本的行呢?
- 使用被稱為“狀態(tài) ID”的整型標(biāo)識(shí)符對(duì) A 表和 D 表中的各行進(jìn)行標(biāo)記,以在向表中添加行時(shí)提供參考。每次編輯版本時(shí)均會(huì)創(chuàng)建新的狀態(tài),并向這兩個(gè)增量表或其中一個(gè)增量表添加新行。狀態(tài)可被看作是樹結(jié)構(gòu)的一部分,在樹結(jié)構(gòu)中,各分支記錄了版本的發(fā)展情況。記錄版本從基表到當(dāng)前狀態(tài)之間一連串變更的一系列狀態(tài)稱為譜系。顯示或查詢版本時(shí),ArcGIS 會(huì)查詢版本的譜系以獲取“狀態(tài) ID”,然后從 A 表和 D 表中檢索正確的記錄。
?
以上概念性的描述不太形象,來看看Oracle數(shù)據(jù)庫中是通過哪些表來追蹤版本:
在內(nèi)部,版本通過多個(gè)數(shù)據(jù)庫表(數(shù)據(jù)集表、增量表和系統(tǒng)表)來管理,以追蹤版本。
虛線表示各列之間的隱含關(guān)系。
添加和刪除表的名稱中的數(shù)字為 TABLE_REGISTRY 表中業(yè)務(wù)表的 REGISTRATION_ID。
- 創(chuàng)建版本
在創(chuàng)建版本時(shí),會(huì)在Versions表中創(chuàng)建一條新紀(jì)錄,包括版本名稱、版本描述、版本創(chuàng)建時(shí)間等信息,最需要注意的是Status和State_ID兩個(gè)字段;
Status:默認(rèn)值為1,表明該版本正在進(jìn)行版本事務(wù)狀態(tài);
State_ID:獲得最新的編輯狀態(tài)ID;
- 版本編輯
所有進(jìn)行的編輯都會(huì)在STATES表(狀態(tài)表)中記錄相關(guān)的編輯狀。在版本編輯時(shí),該表會(huì)記錄每一步的編輯狀態(tài),但是在保存編輯時(shí),會(huì)記錄一個(gè)最終的有效的編輯狀態(tài)。舉例說明:創(chuàng)建一個(gè)要素(記錄了一次狀態(tài)),填寫屬性(記錄第二次的狀態(tài)),但是當(dāng)保存編輯的時(shí)候,只記錄最終的一個(gè)編輯狀態(tài)。
STATE_LINEAGES表(世系表)與STATES表(狀態(tài)表)是類似的,只存儲(chǔ)最終的編輯狀態(tài)。所謂世系表,是說如果一個(gè)DEFALUT版本創(chuàng)建一個(gè)子版本,相應(yīng)的編輯狀態(tài)值會(huì)對(duì)應(yīng)繼承DEFALUT版本的LINAEAGE_NAME值進(jìn)行記錄,如果在另外一個(gè)子版本進(jìn)行編輯,會(huì)獲得最新的編輯狀態(tài)作為另一個(gè)子版本的LINEAGE_NAME值來記錄該版本的編輯狀態(tài)。
在MVTABLES_MODIFIED表中記錄了針對(duì)每一個(gè)注冊ID(也就是要素類)的多版本編輯狀態(tài)。
所有在注冊版本記錄上新創(chuàng)建的數(shù)據(jù)都會(huì)存儲(chǔ)在A表中,因?yàn)锳表也有一個(gè)編輯狀態(tài),所以根據(jù)STATES表的編輯狀態(tài)可以定位到A表的某條數(shù)據(jù),所有的空間數(shù)據(jù)、屬性數(shù)據(jù)的信息都可以獲得。
所有注冊版本記錄上的對(duì)數(shù)據(jù)的刪除信息都保存在D表中,記錄相關(guān)的刪除狀態(tài)、OBJECTID、新建的狀態(tài)ID,根據(jù)后兩個(gè)字段可以唯一定位到刪除數(shù)據(jù)信息。
- 協(xié)調(diào)版本
只介紹STATES和STATE_LINEAGES這兩個(gè)表的變化,在協(xié)調(diào)版本時(shí)會(huì)將子版本的數(shù)據(jù)與相應(yīng)父版本進(jìn)行協(xié)調(diào),上面我們介紹各個(gè)版本對(duì)應(yīng)一個(gè)LINEAGE_NAME,所以這兩個(gè)表會(huì)添加兩條相應(yīng)的記錄。特別介紹一下STATES表,添加一條記錄是一個(gè)新的協(xié)調(diào)狀態(tài)ID(STATE_ID),然后記錄開始時(shí)間和結(jié)束時(shí)間,對(duì)應(yīng)的世系版本ID會(huì)是當(dāng)前編輯版本的值,而且還會(huì)添加一條記錄,就是對(duì)應(yīng)協(xié)調(diào)目標(biāo)版本的協(xié)調(diào)ID,協(xié)調(diào)版本的LINEAGE_NAME,以及創(chuàng)建時(shí)間,但是結(jié)束時(shí)間沒有進(jìn)行存儲(chǔ)。
這里也就對(duì)應(yīng)了上面所說的在協(xié)調(diào)過程中只會(huì)更新編輯版本的數(shù)據(jù),并不會(huì)更新協(xié)調(diào)版本的數(shù)據(jù)。
- 提交版本
也只介紹STATES和STATE_LINEAGES這兩個(gè)表的變化,上面所說的對(duì)應(yīng)協(xié)調(diào)版本的結(jié)束時(shí)間沒有存儲(chǔ),在進(jìn)行提交版本后,就存儲(chǔ)了協(xié)調(diào)版本的結(jié)束時(shí)間(對(duì)應(yīng)STATES表的記錄)。
在提交過程中,Versions表還會(huì)進(jìn)行相應(yīng)的變化,因?yàn)獒槍?duì)于某一個(gè)子版本的事務(wù)已經(jīng)結(jié)束,那么STATUS值和STATE_ID也會(huì)發(fā)生相應(yīng)的變化。
STATUS:變?yōu)槟骋粋€(gè)很大的值,表明該版本結(jié)束了相關(guān)事務(wù);
STATE_ID:獲得結(jié)束該版本編輯的一個(gè)狀態(tài)值,也可以理解為獲得當(dāng)前一個(gè)最新的編輯狀態(tài)ID。
?
?
隨著對(duì)地理數(shù)據(jù)庫不時(shí)進(jìn)行編輯,增量表的大小和狀態(tài)的數(shù)量會(huì)有所增加。表越大、狀態(tài)越多,每次顯示或查詢版本時(shí) ArcGIS 所必須處理的數(shù)據(jù)就越多。要保持?jǐn)?shù)據(jù)庫的性能,ArcSDE 管理員必須定期運(yùn)行“壓縮”命令,以移除不使用的數(shù)據(jù),之后再使用“分析”命令更新數(shù)據(jù)庫統(tǒng)計(jì)數(shù)據(jù)。
- 壓縮:地理數(shù)據(jù)庫壓縮操作可從對(duì)版本以及版本化編輯進(jìn)行跟蹤的系統(tǒng)表中移除不必要的狀態(tài)和行,還可將增量表中的行移動(dòng)到業(yè)務(wù)表(基表)中。壓縮操作只能由 ArcSDE 管理員來執(zhí)行,可對(duì)地理數(shù)據(jù)庫中的所有狀態(tài)進(jìn)行操作,與版本所有者無關(guān)。
壓縮操作很有必要,因?yàn)殡S著對(duì)編輯地理數(shù)據(jù)庫不斷進(jìn)行編輯,增量表的大小和狀態(tài)的數(shù)量也會(huì)不斷增加。表越大、狀態(tài)越多,每次顯示或查詢版本時(shí) ArcGIS 所必須處理的數(shù)據(jù)就越多。因此,對(duì)性能的最大影響不是版本的數(shù)量,而是增量表中對(duì)每個(gè)版本的更改量。因此,各個(gè)版本就可能具有不同的查詢響應(yīng)時(shí)間。
要維護(hù)數(shù)據(jù)庫性能,ArcSDE 管理員必須定期運(yùn)行壓縮操作來移除未使用的數(shù)據(jù)。
- 分析:此命令可用于更新地理數(shù)據(jù)庫的數(shù)據(jù)集中的統(tǒng)計(jì)數(shù)據(jù)。對(duì)業(yè)務(wù)表、要素表、增量表、柵格表和歷史存檔表中的統(tǒng)計(jì)數(shù)據(jù)以及與這些表相關(guān)聯(lián)的索引中的統(tǒng)計(jì)數(shù)據(jù)進(jìn)行更新。
?
理解“將編輯內(nèi)容移動(dòng)到基表”類型的注冊版本:
在將不參與網(wǎng)絡(luò)、拓?fù)浠驓v史歸檔的數(shù)據(jù)注冊為版本時(shí),您可以指定是否要將對(duì) DEFAULT 版本進(jìn)行的編輯移動(dòng)到基表中。如果指定此選項(xiàng),則仍將更改記錄到增量表中。但是在進(jìn)行保存時(shí),會(huì)將更改從增量表中移動(dòng)到基表,而增量表中不會(huì)保存更改。
在將數(shù)據(jù)注冊為版本時(shí),如果所做的修改僅需要數(shù)分鐘即可完成并且使用第三方應(yīng)用程序連接到版本化地理數(shù)據(jù)庫,則指定此選項(xiàng)會(huì)很有幫助。
第三方應(yīng)用程序通常僅可用于查詢基表,而無法查看增量表。如果使用版本化,且未選擇將編輯移動(dòng)到基表,那么這些應(yīng)用程序?qū)o法查看尚未協(xié)調(diào)并提交到 DEFAULT 版本的在其他版本中進(jìn)行的編輯。請(qǐng)注意,編輯 DEFAULT 之外的版本時(shí),會(huì)在同一增量表中記錄更改。保存時(shí),更改會(huì)保留在增量表中。但是,將更改合并到 DEFAULT 版本時(shí),更改會(huì)從增量表移動(dòng)到基表。將更改合并到 DEFAULT 之外的版本時(shí),更改將保留在增量表中,就像未指定將編輯移動(dòng)到基表的選項(xiàng)一樣。
?
Oracle中針對(duì)版本管理策略的添加和管理用戶:
- 用戶帳戶是用來標(biāo)識(shí)連接到地理數(shù)據(jù)庫的人員或客戶端應(yīng)用程序的唯一名稱和密碼,決定了哪些用戶可以訪問數(shù)據(jù)以及數(shù)據(jù)歸哪些用戶所有。
- 在地理數(shù)據(jù)庫中創(chuàng)建表時(shí)用于與地理數(shù)據(jù)庫建立連接的用戶名即是數(shù)據(jù)所有者的名稱。
- 了解數(shù)據(jù)歸誰所有至關(guān)重要,因?yàn)槿绻秤脩粼跀?shù)據(jù)庫中擁有數(shù)據(jù),則不允許將該用戶帳戶從數(shù)據(jù)庫中移除;而且,將由創(chuàng)建數(shù)據(jù)集的用戶控制其他用戶訪問該數(shù)據(jù)集的權(quán)限級(jí)別。
- 在Oracle中的ArcSDE管理用戶賬戶的推薦方案:建議只將 ArcSDE 管理員及其方案用于管理和存儲(chǔ) ArcSDE 系統(tǒng)表。對(duì)于要素類和柵格數(shù)據(jù)集等 ArcSDE 數(shù)據(jù)對(duì)象,應(yīng)創(chuàng)建單獨(dú)的用戶方案來進(jìn)行存儲(chǔ)。不要將這些對(duì)象存儲(chǔ)在 ArcSDE 管理員存儲(chǔ)空間中,因?yàn)檫@樣可能會(huì)因 ArcSDE 管理員空間被填滿而導(dǎo)致 ArcSDE 服務(wù)崩潰。如果能夠遵守操作規(guī)范,將系統(tǒng)表僅存儲(chǔ)在 ArcSDE 管理員存儲(chǔ)空間中,則可以簡化 ArcSDE 的管理。
那么什么是用戶權(quán)限?
權(quán)限用于決定授權(quán)用戶對(duì)數(shù)據(jù)和地理數(shù)據(jù)庫執(zhí)行何種操作。應(yīng)根據(jù)人員在組織中所執(zhí)行的工作類型來分配權(quán)限。用戶是否為地理數(shù)據(jù)庫的管理員?用戶是否需要編輯或創(chuàng)建數(shù)據(jù)?用戶是否僅需查詢數(shù)據(jù)?
對(duì)用戶或用戶組指定的權(quán)限會(huì)影響他們在地理數(shù)據(jù)庫中所能執(zhí)行的操作。有些用戶只能連接到地理數(shù)據(jù)庫。這些用戶為只讀用戶。另有一些用戶可連接到地理數(shù)據(jù)庫并創(chuàng)建數(shù)據(jù)集。另有一些用戶可連接到數(shù)據(jù)庫并編輯數(shù)據(jù)集,但無法創(chuàng)建或刪除數(shù)據(jù)集。還有一些用戶可執(zhí)行管理任務(wù),如創(chuàng)建備份文件或執(zhí)行壓縮操作。
可在不同級(jí)別設(shè)置用戶權(quán)限:數(shù)據(jù)庫、地理數(shù)據(jù)庫版本以及數(shù)據(jù)庫中的數(shù)據(jù)集。
- 數(shù)據(jù)庫權(quán)限[建用戶賬戶時(shí)分配的權(quán)限]
這些權(quán)限用于決定用戶或用戶組可在地理數(shù)據(jù)庫中或?qū)Φ乩頂?shù)據(jù)庫執(zhí)行的操作;例如,用戶是可以創(chuàng)建新數(shù)據(jù)集還是可以管理地理數(shù)據(jù)庫。
- 地理數(shù)據(jù)庫版本權(quán)限[在創(chuàng)建版本時(shí)決定的其他用戶對(duì)版本的訪問權(quán)限]
還可以通過設(shè)置權(quán)限來控制用戶對(duì)地理數(shù)據(jù)庫版本的訪問。這是一種特殊的數(shù)據(jù)庫權(quán)限類型,并不通過 DBMS 進(jìn)行設(shè)置。而是在創(chuàng)建地理數(shù)據(jù)庫版本時(shí)由該版本的創(chuàng)建者決定其他用戶對(duì)此版本所具有的訪問類型。如果將版本創(chuàng)建為“公共”版本,則所有用戶均可對(duì)其進(jìn)行訪問及修改。如果將其創(chuàng)建為“私有”版本,則只有該版本的創(chuàng)建者可以對(duì)其進(jìn)行訪問。如果版本為“受保護(hù)”版本,則其他用戶可以查看該版本,但只有創(chuàng)建者可以對(duì)其進(jìn)行修改。
- 數(shù)據(jù)集權(quán)限[在ArcMap中針對(duì)某個(gè)指定用戶對(duì)數(shù)據(jù)集進(jìn)行的權(quán)限分配]
數(shù)據(jù)集權(quán)限用于決定用戶可對(duì)特定數(shù)據(jù)集執(zhí)行的操作:用戶是可以對(duì)數(shù)據(jù)集進(jìn)行編輯,還是只能從中查詢數(shù)據(jù)?特定數(shù)據(jù)集的使用權(quán)限由該數(shù)據(jù)的所有者(即為創(chuàng)建數(shù)據(jù)或?qū)?shù)據(jù)導(dǎo)入地理數(shù)據(jù)庫的用戶)進(jìn)行控制。可授予用戶只讀(查詢)權(quán)限,也可授予讀/寫(更新、插入和刪除)權(quán)限。這些數(shù)據(jù)集權(quán)限用于決定用戶是否為編輯者;如果用戶不具備任何數(shù)據(jù)集的更新、插入或刪除權(quán)限,則此用戶不是編輯者。
下列規(guī)則適用于授予和撤消數(shù)據(jù)的權(quán)限:
- 只有數(shù)據(jù)集所有者才能更改該數(shù)據(jù)集的權(quán)限。
- 撤消權(quán)限需要數(shù)據(jù)集的排它鎖;因此,如果有其他用戶連接到該數(shù)據(jù)集,則您無法撤消用戶對(duì)該數(shù)據(jù)集的權(quán)限。
- 無法向用戶授予要素?cái)?shù)據(jù)集內(nèi)要素類的不同權(quán)限。
- 如果已將新要素類添加到要素?cái)?shù)據(jù)集中或在要素?cái)?shù)據(jù)集中構(gòu)建了網(wǎng)絡(luò)或拓?fù)?#xff0c;所有者必須再次授予要素?cái)?shù)據(jù)集的權(quán)限,以便能夠?qū)⑦@些權(quán)限應(yīng)用到要素?cái)?shù)據(jù)集的新表中。
- 只有數(shù)據(jù)集所有者才能刪除數(shù)據(jù)集或更改其定義;因此,即使數(shù)據(jù)集所有者向另一用戶授予了數(shù)據(jù)集的 INSERT、UPDATE 和 DELETE 權(quán)限,該用戶也無法更改數(shù)據(jù)集的方案。
- 您每次只能改變用戶對(duì)一個(gè)數(shù)據(jù)集的權(quán)限。
- 輸入用戶名時(shí),可能要求您將域名或計(jì)算機(jī)名與該用戶名一同提供,這取決于存儲(chǔ)數(shù)據(jù)集的數(shù)據(jù)庫管理系統(tǒng)類型以及用戶連接到該地理數(shù)據(jù)庫時(shí)所使用的身份驗(yàn)證類型。例如,如果創(chuàng)建的操作系統(tǒng)登錄帳戶包括域或計(jì)算機(jī)前綴,那么您需要輸入域名或計(jì)算機(jī)名,后加反斜線和用戶名:BARNYARD\user1
?
對(duì)版本機(jī)制原理和Oracle中ArcSDE管理用戶策略有了個(gè)大概的了解以后,來看看ArcGIS有關(guān)地理數(shù)據(jù)庫權(quán)限,這些是如何來控制對(duì)數(shù)據(jù)的訪問:
在創(chuàng)建版本時(shí),創(chuàng)建者可以指定版本的名稱、可選版本描述和版本的權(quán)限,作為版本的所有者,您可以隨時(shí)更改這些屬性或刪除版本。
您可以設(shè)置版本權(quán)限以防止版本被版本所有者以外的用戶編輯或查看。可對(duì)版本設(shè)置下面其中一種權(quán)限:
- 私有 - 只有所有者或 ArcSDE 管理員可以查看版本和修改已版本化的數(shù)據(jù)。
- 受保護(hù)的 - 任何用戶都可以查看版本,但是只有所有者或 ArcSDE 管理員可以對(duì)具有讀/寫權(quán)限的數(shù)據(jù)庫進(jìn)行編輯。
- 公共 - 任何用戶都可查看版本。任何具有數(shù)據(jù)集讀/寫(UPDATE、INSERT 和 DELETE 或讀/寫)權(quán)限的用戶都可以修改那些數(shù)據(jù)集。
設(shè)置版本權(quán)限時(shí),要考慮版本的工作流策略以及在該框架下工作的各類用戶的需要。應(yīng)同時(shí)使用版本權(quán)限和數(shù)據(jù)集權(quán)限來控制對(duì)數(shù)據(jù)的訪問。
設(shè)置權(quán)限時(shí),應(yīng)特別注意 DEFAULT 版本所采用的保護(hù)方式。DEFAULT 版本是地理數(shù)據(jù)庫中所有其他版本的祖先版本,通常代表已發(fā)布的地理數(shù)據(jù)庫版本。對(duì)于從 DEFAULT 版本中刪除的任何要素或行,即使這些要素或行已記錄在版本的增量文件中,也無法恢復(fù),除非將數(shù)據(jù)集取消注冊版本(假設(shè)事先未壓縮數(shù)據(jù)庫)。將數(shù)據(jù)集取消注冊版本可以將數(shù)據(jù)集恢復(fù)為上次壓縮數(shù)據(jù)庫時(shí)的配置;不過,所有未壓縮的編輯內(nèi)容都將丟失。鑒于這一點(diǎn),完全有必要保護(hù) DEFAULT 版本以防止發(fā)生意外修改或損壞。
可通過三種方法來保護(hù) DEFAULT 版本:
- 如果已選擇了用戶可直接編輯 DEFAULT 版本的策略,那么您可將新版本創(chuàng)建為 DEFAULT 的只讀存檔版本。任何從 DEFAULT 版本中意外刪除的要素都可以根據(jù)需要從該版本中恢復(fù)。
- 如果選擇了部分用戶需要直接編輯 DEFAULT 版本的策略,那么您可以使用 DEFAULT 來創(chuàng)建新版本,供其中一些用戶進(jìn)行編輯。
- 如果選擇了無人直接編輯 DEFAULT 的策略,那么 ArcSDE 管理用戶應(yīng)該將 DEFAULT 版本的權(quán)限設(shè)置為 PROTECTED 而不是 PRIVATE;PRIVATE 會(huì)防止除 ArcSDE 管理用戶以外的所有用戶連接到數(shù)據(jù)庫。如果將權(quán)限設(shè)置為 PROTECTED,則任何用戶都可以查看 DEFAULT 版本,但只有 ArcSDE 管理用戶可以對(duì) DEFAULT 版本直接進(jìn)行編輯或協(xié)調(diào)并可從其他版本中將編輯內(nèi)容提交到 DEFAULT 版本。
?
對(duì)于版本機(jī)制的實(shí)現(xiàn)原理,版本表的變化是非常復(fù)雜的。尤文G斯博客的博主強(qiáng)烈建議:由于機(jī)制實(shí)現(xiàn)相關(guān)表的關(guān)系比較復(fù)雜,禁止用戶直接利用操作普通表的方法修改SDE庫中版本表的相關(guān)數(shù)據(jù),因?yàn)橐坏┌严嚓P(guān)的狀態(tài)聯(lián)系刪除錯(cuò)誤,那么就意味著你可能要重新建庫。
本人親身體驗(yàn)過由于在SDE中直接操作歷史歸檔相關(guān)表導(dǎo)致的SDE庫混亂的痛苦,所以建議大家遵循ESRI公司的規(guī)則,沒有對(duì)機(jī)制更深入的理解還是不要直接去操作相關(guān)表。
轉(zhuǎn)載于:https://www.cnblogs.com/giserxiaoliang/p/3493695.html
總結(jié)
以上是生活随笔為你收集整理的ArcGIS 10——地理数据库管理GIS数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务发现与健康监测框架Consul-DN
- 下一篇: jQuery EasyUI快速入门01