Gedatabase的结构
Geodatabase是Object-Oriented的,采用两层结构:数据存储层和应用层。数据存储层是将GIS数据存储为File、XML、DBMS等多种格式,而应用层则是维护数据的高级逻辑和行为,例如Feature Classes、Raster Dataset、Topology、Network、Address Locators等等。Geodatabase的管理功能由ArcGIS软件和DBMS一起实现。
目前有三种方法来创建一个Geodatabase:
(1) 设计和创建一个新的Geodatabase;
(2) 拷贝和修改一个已经存在的Geodatabase Schema
(3) 对已经存在的Geodatabase复制数据和Schema
Copying the schema of a Geodatabase
有多种方式实现数据库Schema的移动:
(1)在ArcCatalog中通过工具将数据Export To XML Workspace Document,选择只导出Schema。然后再点击要导入Schema的Geodatabase,选择Import XML Workspace Document;
(2)在ArcMap中利用Extract Data Wizard:包含在Distributed Geodatabase工具栏中;
(3)从ArcGIS Model Template中拷贝Geodatabase Schema:利用ESRI网站上已经建立的Model:http://support.esri.com/datamodels
(4)利用CASE 工具和UML语言来创建Geodatabase Schema:但是这种方法的局限性在于:不能够很好的设计Topology,Network,Terrain,Raster Catalog,Map Layer,Map Symbol,Metadata,Cartographic Representation,Semantic Classification。
Copying Geodatabase
有三种方法实现Geodatabase的复制:
(1) ArcToolbox/Copy;
(2) ArcCatalog/Export Geodatabase to XML Workspace;
(3) ArcMap/Distributed Geodatabase/Extract Data Wizard;
(4) ArcCatalog/Export。
需要注意的是:只有简单Feature Class才能够Copy,对于Feature Dataset、、Topology、Network等高级数据类型,无法通过拷贝方式来实现数据的复制。
附件中为ArcGIS 9.2的三种ArcGIS Geodatabase的对比
What is transaction?
Transaction事实上是数据库的某一个工作过程。一个Transaction开始以后,可以对数据库进行修改、提交结果以及回滚。一旦提交Transaction,则该Transaction实现的所有变化也将被其他用户和应用获得。
Transaction具备以下特点:
(1)Atomic:一旦提交Transaction的工作,所做的修改都会提交到Geodatabase中;一旦回滚,则所有的变化都被放弃;
(2)Consistent:Transaction使得数据库状况保持一致性;
(3)Isolation:Transaction中的所有变化与其它Transaction的变化相互独立,提交变化以后,其他用户才能获得该Transaction的变化信息;
(4)Durable:一旦开始Transaction,它的结果是可持续的。
为了实现以上的目标,DBMS采用一系列的Locking机制以保证多个并发的Transactions能够相互独立。此外地理数据库的Transaction在持续时间和复杂性上变化很大,Geodatabase支持两种类型-maintenance with and without versions,即用户采用短事务或者长事务,也可以在同一个Geodatabase中同时采用以上两种机制。
Schema Locking
ArcGIS会自动应用和释放Geodatabase的Shared Locks和Exclusive Locks,以帮助用户管理数据库的变化,不至于与其他的用户发生冲突。
在ArcSDE Geodatabase中,可能会有多个用户同时浏览和编辑同一个数据,则应该保证每一个用户在对其数据浏览和编辑时,数据库的Schema是固定不变的。例如,当加载一个Feature Class到ArcMap中,则它的Schema不能再发生变化。一旦将该Feature Class从ArcMap中删除,没有其他用户查询或编辑该Feature Class,则其Schema可以发生改变。ArcGIS提供了很多自动的Schema Locking机制以帮助管理Geodatabase的变化。
(1)Shared Locks
用户使用一个单独的Dataset时,ArcGIS将自动获取Shared Lock,例如,用户在编辑或者查询Feature Class或者Table时,ArcGIS将自动获取Shared Lock,使得其他用户不能修改Dataset的内容和Schema。对于一个单独的Feature Class或者Table,能够创建任意数量的Shared Locks。当用户使用ArcGIS来修改Geodatabase Schema时,则将创建一个Exclusive Lock,但是如果该Dataset已经创建了Shared Lock,则就不能再创建Exclusive Lock。
(2)Exclusive Locks
Exclusive Locks用于锁定Geodatabase的Dataset,以防止其他用户更改数据。一旦具备权限的用户开始修改某个Dataset时,ArcGIS将自动创建一个Exclusive Lock。如果用户希望能够修改一个Geodatabase的Schema,则要确保没有其他人正在使用该数据库。
对于Personal Geodatabase来说, Geodatabase的某个部分,例如Table、Rows创建Shared Locks或者Exclusive Locks,则整个Geodatabase都将具备
Shared Locks或者Exclusive Locks,代表某一时刻只能有一个用户编辑Personal Geodatabase。
对于File Geodatabase来说,只有具备读写权限的用户能够修改File Geodatabase的Schema。对于所有的Geodatabase 来说,如果对Feature Dataset中的某个Feature Class创建Lock,则该Lock应用于整个Feature Dataset的内容。如果相关联的要素之间,有一个要素设置了Lock,则与其关联的另一个要素也具备了Lock。