5.1 同步复制技术概述
为了解决多级应用、分布在不同地方的数据的管理维护、同步更新等问题,ArcGIS提供了分布式地理数据库(Distributed geographic database)实现分布的地理数据库的管理,同步复制、更新等功能。
通过为地理数据库创建复本(Replica),在目标地理数据库上创建相同的数据,在数据变更后,通过数据同步,实现分布式的地理数据的同步更新。
5.2 同步复制技术使用场景
1.需要与网络断开连接的移动用户和现场工作人员
2.需要在不同的组织级别(城市、县、州)维护数据副本的用户
3.需要在不同的地理环境中维护数据副本的用户
4.需要向承包商分发工作的用户
5.需要生产和发布地理数据库的用户
5.3 同步复制技术特点
ArcGIS提供的建立在版本机制(和归档机制且具有全局ID)之上的数据分发的方法,可以在2个或者更多的GDB中分布式地管理和应用数据的拷贝;
支持所有的Geodatabase数据模型,包括拓扑和几何网络;
松散耦合的同步机制,可以独立地编辑各个GDB, 在需要的时候对它们实施数据同步;
跨数据库平台之间可以实现复制;
有许多可选的设置用来支持不同类型的工作流。
5.4 同步复制技术理念
说到ArcGIS数据库复制,就不得不先提下分布式数据库.所谓的分布式数据库,常是由一组物理上或逻辑上分布的计算机组成,各个子节点相对独立但又互相协同进行工作,共同组成一个完整的、全局的大型数据库。
分布式数据库最显著的特点就是数据的分散存储,这种分散存储可以是不同的地点或是不同的数据库。ArcGIS支持这种数据存储方式,方便了各个部门管理本单位、本行业的数据信息,同时又利于国家、政府进行统筹规划建设时的使用。
既然用分布式数据来管理数据,大家不禁要问,数据是如何进行分发、更新的呢?数据在国家、省、市、区、县等各级行政单位间流转又是如何管理的呢?
ArcGIS提供的建立在版本机制(和归档机制)之上的数据分发的方法,可以在2个或者更多的GDB中分布式地管理和应用数据的拷贝;
支持所有的Geodatabase数据模型,包括拓扑和几何网络;
松散耦合的同步机制,可以独立地编辑各个GDB,
在需要的时候对它们实施数据同步;
跨数据库平台之间可以实现复制;
有许多可选的设置用来支持不同类型的工作流。
ArcGIS数据复制更新解决方案
ArcGIS数据复制可以对整个或部分数据创建复本,复本之间相对独立但又可以进行同步;在线也好、离线也罢,变化的数据能够在所关联的两个复本间流动。
利用Geodatabase归档:
ArcGIS数据同步过程中更新发生变化的部分,来达到关联复本数据的状态一致。那么ArcGIS如何知道那个部分、区域的数据发生了变化,如何锁定这些数据,依靠的就是数据库归档功能。
Geodatabase归档:
记录数据在各时间点的变化
基于版本
用以追踪和反演数据随时间的变化趋势
提供了捕获、管理、分析数据变化的途径和方法
5.5 同步复制工具
在ArcMap中提供了2种分布式地理数据库工具:
分布式地理数据库工具栏和ArcToolbox工具,如下图所示:
分布式地理数据库工具栏
Toolbox工具
5.6 同步复制工具使用
ArcGIS同步复制可以对整个或部分数据创建复本,复本之间相对独立但又可以进行同步;不管在线还是离线,变化的数据能够在所关联的两个复本间流动。
- 每个参与复制的geodatabase都称为replica
- 一个子replica由一个父replica创建成
- 一个父replica与一个子replica构成一个“replica对” ,彼此称为对方的“相对应的replica”
5.6.2 数据同步复制类型
ArcGIS还提供了CheckOut、CheckIn数据下载、上传方式,结合离线编辑可以实现在离线的情况下来实现对数据的更新,在管线、石油、电力、交通等行业的数据采集更新中广泛使用。
CheckIn、CheckOut离线更新是基于版本的,且只能同步更新一次。
CheckOut:数据下载的源头必须是SDE数据库,数据要注册版本;下载的数据可以是全部的,也可以是指定区域的;下载后的数据可以是SDE、FGDB、PGDB等格式;
CheckIn:数据上传的目标必须是SDE数据库,且只能更新一次。
2. OneWay单向复制
- 单向复制的源头即父Replica必须是SDE数据库,复制的目标即子Replica可以是SDE Geodatabase、File Geodatabase、Personal Geodatabase;
- 必须注册为版本,且注册时不勾选“move edits to base”选项;
- 具有GlobeID字段;对数据有读写权限。
其中单向数据复制的同步又分为由子到父的同步和由父到子的同步
由父到子同步:适用与数据自上而下的分发管理,可对各个子本(SDE、FGDB、PGDB)进行同步
由子到父同步:ArcGIS10的新功能;子本和父本都必须是SDE数据库,适用于数据由下收集,自下而上汇总的情形。
3. TwoWay双向复制
简单介绍
双向复制可用于多次将数据变更从父复本发送到子复本,或从子复本发送到父复本。如果在两个复本地理数据库中编辑同一行,同步复本时会检测到冲突。提供的协调策略可用于定义冲突的处理方式。
同步后双向复本会继续存在,以便用户继续编辑和同步复本。创建双向复本时,目标必须是 ArcSDE 地理数据库。
几点必要条件
- 数据复制的两端必须都是SDE数据库
- 必须注册为版本,且注册时不勾选“move edits to base”选项
- 具有GlobeID字段;对数据有读写权限
- 支持Simple Model(ArcGIS10)、Full Model
5.6.3 数据同步复制功能介绍
本节介绍同步复制中用到的具体功能。
在线环境和离线环境中均可使用地理数据库复制功能。
对于在线复制,将通过计算机网络(有线或无线)来连接复本地理数据库。可以使用以下形式中的任一种:
始终在线 - 在网络上始终可以访问复本地理数据库。
间歇在线 - 在这类情况下,只能于某些时候在同一网络上访问复本地理数据库。当两个复本地理数据库均位于网络中 时,可以执行复本创建和复本同步操作。
当未通过计算机网络连接复本地理数据库时,将进行离线复制。
在线或离线环境中均可执行复本创建过程、同步过程以及应用架构更改过程。
1. 创建复本
所有数据集必须来自同一企业级地理数据库。
您希望复制的数据必须进行版本化,但是无法通过“将编辑内容移动到基表”选项进行版本化。连接的数据库用户也必须具有对该数据的写入权限。对于双向复本和单向复本(两种类型),所有数据集都必须具有 globalid 列并且具有高精度的空间参考。
对于检出复本和单向复本,子复本地理数据库可以是企业级、文件或个人地理数据库。
对于双向复本和单向“子-父”复本,子地理数据库必须是企业级地理数据库。
要对单向复本使用归档,父工作空间必须连接至“默认”版本。对于单向“子-父”复本,子工作空间必须连接至“默认”版本。
2. 在线数据同步
系统是根据子库父库存储的Replica的XML获取相关的角色、连接、数据描述等相关信息,然后编辑数据根据版本表、增量表将变化的数据读取然后进行相关的操作。
在线数据同步的原理就是从一个数据库A后台静默导出数据增量包,通过网络连接的方式在另一个数据库B中导入获得的数据增量包,同时数据库B后台静默生成确认消息,通过网络连接的在线方式传输到数据库A,数据库A静默导入确认消息完成整个流程,以完成在线数据同步功能。
3. 离线数据同步
离线数据同步的原理就是从一个数据库A导出数据变更(.xml文件),通过发送邮件或者U盘、光盘等方式在另一个数据库B中导入获得的数据变更(.xml文件),进行离线同步,B导入成功后,导出确认消息(.xml文件),再次通过发送邮件或者U盘、光盘到达A数据库,A数据库导入确认消息,完成离线数据同步功能。
下面4个步骤截图即为过程:
父库数据编辑导出数据(数据或者XML)->子库接受数据->子库导出确认消息->父库接受确认消息
5.6.4 数据同步三种方式
本节介绍同步复制中CheckIn/CheckOut 、OneWay、TwoWay三种同步方式具体过程。
签入签出(Check Out/In)
签入签出的使用在我们平常的业务中使用非常广泛,试想有一个中心数据库,用户在外边进行数据的编辑更新,可以利用该方式事先导出Check Out文件数据库(PGDB、FGBD、也可以是ArcSDE数据库),用户可以在文件数据库文件进行编辑更新,然后在将该数据Check In进去,以保持总数据库的同步更新。
数据库要求
数据源必须为ArcSDE GDB的数据库,既可以注册版本也可以非注册版本(ArcGIS10新特性),GDB里面既可以是Simple Model也可以是Full Model(ArcGIS10新特性)
签入签出只介绍两个工具(需要将ArcSDE数据加载到ArcMap才能高亮):
-
- 创建复本
- 同步变化
创建复本
我们可以将数据库的所有数据导出,也可以事先将某一区域(用户可以利用查询条件,高亮选中数据导出),也就是我们是支持范围选择的。
其实在注册版本数据Check Out时,利用的是版本的机制,创建了一个版本(复本),本例就是创建了一个MyCheckOut版本。勾选进一步可以得到更详细的选择信息。
Simple Model:简单的点线面
Full Model:带有拓扑、几何网络等复杂数据类型
点击完成后我们可以看到,生成的一个文件GDB是属性是:this geodatabase contains single generation replica,说明该数据可以进行修改签入,而且签入之后,就不能再次进行签入了。签入之后状态会发生变化为:this is not a replica geodatabase。
同步变化
然后我们对Check Out的数据CheckOut_Output.mdb进行编辑修改,
然后选择同步复制按钮,选择同步的版本,同步的数据文件.
上面的选择我们在版本的使用看起来比较熟悉,这更说明了同步复制也使用了版本的原理。
在ArcGIS10版本之后可以对非注册版本进行签入签出,那么就不存在版本的概念了,也就是说我们的数据直接同步到Default版本了。
在将数据Check In后,我们在看该mdb数据状态已经【This is not a replica geodatabase】
2. OneWay在线数据同步
创建复本
在线数据同步
3. OneWay离线数据同步
创建复本
离线数据同步
父库数据编辑-导出数据(数据或者XML)-子库接受数据-子库导出确认消息-父库接受确认消息
注意:
DataSender才能导出数据
4. TwoWay在线数据同步
创建复本
在线数据同步
5. TwoWay离线数据同步
创建复本
离线数据同步
父库数据编辑-导出数据(数据或者XML)-子库接受数据-子库导出确认消息-父库接受确认消息
注意:
DataSender才能导出数据
下面三个图即为DataReceive方不能导出变化数据
参考:https://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/geodatabases/what-is-a-geodatabase.htm