http://www.gissky.net- GIS空间站

我要投稿 投稿指南 RSS订阅 网站资讯通告:
搜索: 您现在的位置: GIS空间站 >> 技术专栏 >> ArcGIS >> ArcSDE >> 正文

Geodatabase and ArcSDE系列讲座 第六部分:Geodatabase Distribution(复制与同步)

作者:萝卜兔子    文章来源:ESRI中国北京有限公司    点击数:    更新时间:2007-2-1
摘要:

数据库复制的几种常见方式
    有三种分发数据的方法:(1)Copy和Paste:这种方法能够实现数据的分发以及更新,但是不能保证数据完全更新,并且无法保证数据库的同步;(2)Geodatabase Replication:能够在两个或者多个Geodatabase之间实现数据的复制与同步。Geodatabase Replication是建立在版本化数据的基础上的,支持拓扑与网络等完全的数据模型,并且能够在不同类型的数据库之间实现数据的复制与同步,例如Oracle与SQL Server之间;并且还支持在联网和非联网的方式下实现,在支持本地数据库连接的基础上,还支持通过Internet 所获得的GeodataServer对象;(3)DBMS复制:能够实现数据的复制与同步,要求数据库之间必须是直接连接的,不支持跨类型的数据库,不支持拓扑、网络等高级数据模型,并且更新的是所有的版本,而Geodatabase Replication只针对特定的版本。

分布式数据库的多种应用场景
     Geodatabase Replication是在ArcInfo和ArcEditor中提供的
   (1)Replica Tree
    Geodatabase Replication能够用于创建复制树,允许企业在层状机构中间分发数据,每个下级部分获得的是与自己业务相关的一部分数据,而最上级机关负责管理所有的数据。
  (2)Central Hub
   为了使得某些操作能够快速进行,可以将中心Geodatabase作为一个Hub,其它地方对中心数据库复制一份,用于数据编辑,然后将编辑的结果同步到中心数据库中。
   (3)Mobile Users
   将中心数据库的一部分拷贝到移动设备上,拿到野外进行离线编辑,最后连接到中心数据库,利用移动设备上的数据来更新中心数据库。
  (4)Contractors
   能够将中心数据库中的数据复制下来,作为产品卖出,每个一段时间给用户实现同步以更新数据
  (5)Load Balancing
   为了实现机构内部数据编辑和访问的负载均衡,可以建立两套Geodatabase ,一个提供只读数据,方便用户进行数据浏览,另外一个提供可编辑的数据,方便用户进行数据更新。然后定期用可编辑的数据库去同步只读的数据库,实现数据库的同步,并且达到负载均衡、提高效率的目的。
  (6)Multi-Group Data Management
   在一个机构内部,一个中心数据库可能需要多个部门分别来管理,因此会将中心数据库分开拷贝到子数据库,由分中心进行维护,维护后的结果需要同步到中心数据库。

Replica和Geodatabase
    实现Geodatabase的Replication包括两个步骤:将数据从源数据库拷贝到目的数据库,在源数据库和目的库之间创建Replica。这个Replica包含了数据源的信息以及用于数据同步的信息。在源数据库中的Replica叫做父复本,在目的库中的Replica叫做子复本。每一对父复本和子复本称为一个Replica对。其中源数据库必须是ArcSDE Geodatabse ,而目的数据库则可以是多种类型的Geodatabase。一个ArcSDE Geodatabase可以同时包含子复本和父复本,也可以包含多个子复本或者是多个父复本。File Geodatabase和Personal Geodatabase只能用于Check Out的子复本。

Replication Type
   Geodatabase复制允许将数据拷贝分布在2个或更多的Geodatabase中,可以将数据库独立编辑,需要的时候再将它们同步。Geodatabase复制包括三种类型:
  (1) Check In/Out:允许对子复本进行编辑,然后同步到父复本中,但是只能同步一次。如果希望将子数据库中的其它编辑情况再次同步到父数据库,则需要创建新的Check Out Replica,其中Check In/Out的子复本的数据库可以是ArcSDE Geodatabase、File或者Personal Geodatabase。
(2) One Way:父复本可以向子复本发送多次同步,而子复本不能将变化同步到父复本。同步的时候不会产生冲突,因为子版本的编辑均被父版本覆盖。One Way的子复本必须是建立在ArcSDE Geodatabase中。
     能够复制的类型包括Full:包括拓扑和网络数据模型,要求子复本的数据被版本化;Simple:只能复制简单数据类型,子复本不一定要求被注册版本。
(3) Two Way:父复本和子复本之间可以多次同步,并且是双向的。在同步的过程总可能会发生冲突。子复本必须建立在ArcSDE Geodatabase中。

Replication的数据准备工作
     在进行数据库复制的时候,可以将整个数据集复制,也可以是将子库进行复制,或者只是Schema。数据库用户必须对数据源具备读写权限,数据库必须是版本化的。不能将数据库注册为“Move edits to base ”。对于One Way/Two Way复制,有以下额外条件:每个数据库都必须具备Global colum,每个空间数据都必须保存在High Precision的空间参考系中。
    复制的时候可以通过设定Filters和Relationship Classes来实现数据复制。Filters包括:Spatial、Selections、Querydefs;

Replica Creation 和Versioning
      版本化的数据库方可实现数据库的复制。创建Replica后,在Source和Target数据库之间创建的是Replica Versions,同步时该Replica Version之间的变化进行交换。Default Version或者其它的Version都能够被用为Parent Replica的Replica Version。很多Replica能够共享相同的Replica Version,也可以根据相同的Version创建多个Replica。
     对于Check In/Out来说,子复本也可以创建在File和Personal Geodatabase中,但是这些数据库不支持版本化,因此需要其它的机制以实现版本化。

Replicating Related Data
     有多种复制方向可以选择:Forwards、Backwards、Circulation
     Raster Catalog和Raster Dataset不能够版本化,因此不能够被复制。但是在Create Replica Wizard面板中能够从源数据库中提取Raster数据集和Raster Catalog,只要这些Raster数据是包含在ArcMap文档中的 。
     Terrain和Network也不能被复制,但是只要构成它们的要素能够被版本化,它们也可以复制。在复制过程中忽略Terrain和Network,只有在复制完成以后,才能重建Terrain和Network

Synchronization
     同步是将一个Replica中的数据变化,如插入、更新和删除,提交到相应的Replica中。为了能够同步,必须用创建复制时的同一个数据库用户进行同步。
在同步的时候会创建Synchronization Version,它是Replica Version的子类,暂时保存变化信息,直至被Reconcile和Post到Replica Version中。
     对于Two Way复制来说,通过Filters和Relationship决定哪些数据被同步,同样也可以利用Logic来分辨哪些数据已经通不过。对于Check Out来说,对Check Out Replica的所有编辑都将被同步。
    数据库同步时的数据交换是基于交换Replication Message的。在Connected 环境下,消息的传递是由系统管理的,可以确定同步的方向,一旦发生错误,则可以回退。而在Disconnected环境下,消息的传递需要人为控制,借助于CD、DVD、USPS等。
    在数据同步过程中,Data Sender和Data Recevier之间的Acknowledgement Message是非常关键的。并且Sender和Reveiver之间的角色根据复制的类型是可以调换的。在进行下一次同步的时候,同步的数据包括新产生的更新,以及Un-Acknowledge的数据。

数据库复制的步骤
(1)决定把数据库复制多少次:复制一次,还是复制多次;
(2)采用什么样的复制类型:Check In/Out,One Way,Two Way;
(3)采用什么样的工具实现数据库的复制:Create Replica Wizard;Create Replica Geoprocessing Tool;ArcObjects API
(4)将复制集成到Versioning Workflows中:一旦建立复制,则在父复本和子复本之间建立了复制对。要决定是对其它版本创建复制,还是直接对Default版本创建复制,这将决定同步时数据是否直接提交到Default版本。
(5)决定数据复制的数据类型:点线面等简单数据类型,还是网络、拓扑等复杂数据类型
(6)考虑复制的选项:是否Re-use Schema,表示是否利用子复本的数据库模式,仅用于Check Out;Schema Only,只将数据库的模式导出,仅用于Check Out,方便用户直接拿到野外,从头开始添加数据;Register Existing Data:如果要复制的数据量非常大,可考虑选择Register数据库,在复制之前需要做很多操作;Replicate Related Data:对于拓扑、网络等数据,是否也要复制相关的数据
(7)考虑数据库复制时是在Connected环境下,还是在Disconnected环境下,如果网络条件不好并且不稳定,则应该考虑后者。
(8)同步复制:Manul Synchronization,如果只是对小数据量的数据库进行同步更新,并且不是经常进行,则可以利用Distribution Geodatabase Toolbar来实现,能够实现局域网或者Internet数据库的同步;利用Agent实现自动更新:Geoprocessing中的Python脚本,以及通过ArcObjects实现
(9)同步时的冲突解决:如果同步时出现冲突,则可以通过自动或者手动的方式实现冲突解决
(10)决定将哪些数据同步,对于复杂数据要着重考虑
(11)同步的数据量:上一次同步以后产生的数据变化,以及同步以后没有接收到Acknowlegement的数据
(12)同步的先后顺序:由选择的复制类型以及定义的同步顺序所决定;
(13)Shcema变化:最后是否保持数据库的Schema不变
(14)错误信息:同步过程中发生错误,可以回退,并且可以浏览错误信息。

Geodatabase Replication和ArcGIS Server
     能够通过LAN、WAN将访问由ArcGIS Server 的geodataserver 所发布的Geodatabase Service,实现数据的读取和复制,将其加载到ArcSDE Geodatabase、File和Personal Geodatabase中。如果要是在ArcMap中获取远程的Geodatabase,则需要具备Map Service以及Geodata  Service

Tags:Geodatabase,ArcSDE  
责任编辑:gissky
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 中国地图