ArcSDE的版本管理機制


轉自:http://blog.sina.com.cn/s/blog_80a9926b0101h1vh.html

一、版本是什么?(What is Version?)

版本是SDE數據庫中管理數據的一種機制,主要解決長事務問題。下面使用圖例對該機制進行說明:

      Default 版本是SDE數據庫默認的版本,假如我們在這里建立了子版本1,子版本2,子版本3,它們擁有Default版本上的所有數據,但是它們三個版本之間互相不擁有對方的數據。比如我現在子版本1中添加了一個面,子版本2中添加一個點,子版本3中添加了一條線,在沒有進行沖突檢查並把這些數據提交到父版本之前,Default版本,子版本2,子版本3中不會擁有子版本1中新添加的一個面。
建立版本入數據的一個好處是:
      假如現在在向SDE數據庫中寫入一個圖幅名稱為DLG5364的數據,入庫后發現入的數據不是最新的,或者說在入庫的過程中由於網絡突然中斷而造成數據入庫失敗。如果是把數據入到了子版本1中的話,只用刪除子版1,然后再新建一個版本1,再把重新把DLG5364圖幅數據入庫。否則,如果直接入到了 Default版本的話,需要刪除SDE庫里邊的對應用戶下面的所有數據,然后把所有刪除的數據都重新入庫。
等所有的數據入庫完畢后,在ArcMap或版本管理系統中把所有的子版本都提交到Default版本,然后再刪除這些版本,並對數據庫進行壓縮(該功能版本管理系統中提供了)。


“版本”(version)是ArcGIS軟件在多用戶關系數據庫基礎上,依托ArcSDE服務而提供的長事務處理工具。在個人geodatabase中無法實現版本功能。

Versioning allows multiple users to edit spatial and tabular data simultaneously in a long transaction environment. Users can directly modify the database without having to extract data or lock features in advance. The object model provides functionality to create and administer versions, register and unregister classes as versioned, detect differences between versions, and reconcile and post versions.

 

Geodatabase數據模型提供的版本化機制允許多用戶在長事務處理環境中同時編輯空間和屬性數據,用戶無須預先數據復制和鎖定要素就可以直接編輯。這一數據模型提供了諸如以下的功能:創建和管理版本、注冊和不注冊要素類、檢測各個版本之間的差異、協調及提交版本。

 

二、怎樣來理解版本?(How to Understand Version?)

版本是命了名字的geodatabase狀態,你可以使用版本來模擬工程設計、建造工作、以及geodatabase的一個快照,還有任何類型的涉及正在進展的“what if ”問題研究的流程。

 

版本跨越整個geodatabase並且擁有屬性。在ArcCatalog中,你可以指定哪些對象在geodatabase中是版本化的,你可以選擇性的指定哪些數據要素集、要素類還有表注冊成為版本。通過設置權限你可以控制其它用戶對你的數據的版本是否可見。

 

同一個geodatabase中允許多個版本的存在。

 

版本之間的本質區別在於行為狀態而不是方案。版本創建之后,便呈現給你所有編輯工作的無中斷視圖。其中行的狀態反應了所有的對象添加、刪除以及修改操作。這些狀態的變化都被保存在它的歸檔文件中。

 

每個版本geodatabase都有一個默認的(default)版本。默認版本實際是geodatabase本身。

 

三、版本與版本之間的關系

默認版本是所有版本的起始版本(ancestor)。除了默認版本,每個版本只能擁有一個父版本。在確保該版本的所有子版本被刪除后,該版本可以被刪除

 

版本中的編輯變化可被協調並提交給另外一個版本。(這涉及到geodatabase復制,將另外專門討論)

 

用戶可以連接任意一個授權於他的版本。

 

四、AE提供的類圖與接口

 


1、VersionedWorkspace類及其接口:

 

A VersionedWorkspace is a Workspace that supports multiuser editing and multiple representations of features classes and tables in a relational database system. VersionedWorkspaces support the IVersionedWorkspace interface.

 

VersionedWorkspace類是Workspace類的一個子類,在關系數據庫系統中,它允許多用戶編輯以及要素類及數據表多樣化的表達。它向用戶提供了IVersionedWorkspace接口。

 

A list of all versions to which the user has permissions can be retrieved using the Versions property. The versions returned are either owned by the connected user or have public access.

 

通過IVersionedWorkspace接口提供的Versions的屬性,用戶可以得到授予他們訪問權限的VersionedWorkspace中的所有版本。

 

通過Versions屬性得到的對象是一個枚舉型變量——EnumVersionInfo。

 

通過IVersionedWorkspace接口提供的FindVersion方法,用戶可以通過版本名稱進行查找而得到該版本。

 

The IVersion interface is used to manage the properties of a version as well as create new versions. Creating a new version requires an existing version to be the parent of the new version. When the new version is created, the parent and child versions are identical。

 

IVersion接口向用戶提供了創建及管理版本屬性的功能。創建一個新版本要求一個已經存在的版本作為其父版本。當新版本被創建時,版本之間的關系(父與子)也就被確立了。

 

下面是更新版本屬性的C#代碼示例:

//假設你已經得到dataset的引用
IVersion version = (IVersion)dataset.Workspace;
IVersionInfo versionInfo = version.VersionInfo;
if(versionInfo.IsOwner)
{
   version.Access = esriVersionAccess.esriVersionAccessPublic;
}


2、DataSet類與IVersionedObject and IVersionedObject2接口:

 

通過IVersionedOjbect或IVersionedObject2接口提供的RegisterAsVersioned方法,用戶可以注冊或不注冊要素數據集或要素類為版本。如果注冊為版本,則將在數據庫中創建兩個額外的表,以記錄版本的行為狀態發生的變化。

 

3、Table類與IVersionedTable、IConflictClass接口:

 

在進行協調操作之前,一般需要通過IVersionedTabled接口提供的Differences方法來檢測源版本與目標版本之間存在的沖突。

 

經過協調(Reconcile)處理后,IConflictClass接口提供了得到沖突選擇集的機制。通過其提供的DeleteUpdate、UpdateDelete、UpdateUpdates屬性用戶可以得到相應的SelectionSet。

轉:http://giscolor.bokee.com/41116235.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM