arcgis地理空间数据库学习记录05-管理分布式数据库

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同步复制可以对整个或部分数据创建复本,复本之间相对独立但又可以进行同步;不管在线还是离线,变化的数据能够在所关联的两个复本间流动。

5.6.1 Replica (副本)

  • 每个参与复制的geodatabase都称为replica
  • 一个子replica由一个父replica创建成
  • 一个父replica与一个子replica构成一个“replica对” ,彼此称为对方的“相对应的replica”

 

5.6.2 数据同步复制类型

1. CheckIn/CheckOut

         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字段;对数据有读写权限。

        其中单向数据复制的同步又分为由子到父的同步和由父到子的同步 
        由父到子同步:适用与数据自上而下的分发管理,可对各个子本(SDEFGDBPGDB)进行同步 
        由子到父同步: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三种同步方式具体过程。

1. CheckIn/CheckOut

       签入签出(Check Out/In

       签入签出的使用在我们平常的业务中使用非常广泛,试想有一个中心数据库,用户在外边进行数据的编辑更新,可以利用该方式事先导出Check Out文件数据库(PGDB、FGBD、也可以是ArcSDE数据库),用户可以在文件数据库文件进行编辑更新,然后在将该数据Check In进去,以保持总数据库的同步更新。

      数据库要求

      数据源必须为ArcSDE GDB的数据库,既可以注册版本也可以非注册版本(ArcGIS10新特性),GDB里面既可以是Simple Model也可以是Full Model(ArcGIS10新特性)

      签入签出只介绍两个工具(需要将ArcSDE数据加载到ArcMap才能高亮):

    1. 创建复本
    2. 同步变化

       创建复本

       我们可以将数据库的所有数据导出,也可以事先将某一区域(用户可以利用查询条件,高亮选中数据导出),也就是我们是支持范围选择的。

 

 

        其实在注册版本数据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