法律状态公告日
法律状态信息
法律状态
2013-06-12
授权
授权
2012-07-18
实质审查的生效 IPC(主分类):G06F17/30 申请日:20111019
实质审查的生效
2012-06-20
公开
公开
技术领域
本发明属于空间数据管理技术领域。尤其涉及一种基于XML的空间数据增量同步更新方法。
背景技术
随着空间数据库的发展及普及,我国各类空间数据库的建设取得了很大的成就,尤其是多节点空间数据库模式在政府、企事业单位等部门的基础地理信息平台系统中得到了广泛的应用。在多节点空间数据库系统中,如何保证各个节点空间数据的一致性始终是基础地理信息平台中的关键问题。
目前,美国著名的GIS软件厂商ESRI公司提供了基于Geodatabase 复制技术的商业化解决方案,它能够在两个或者多个Geodatabase之间实现数据的复制与同步。Geodatabase复制技术(Geodatabase Replication)是建立在版本化数据的基础上,支持拓扑与网络等完全的数据模型,并且能够在不同类型的数据库之间实现数据的复制与同步;但Geodatabase Replication技术也存在如资源消耗过大,需要连通网络环境,且同步数据库对象粒度不可自由控制等缺陷。
另外,国内一些学者也对数据同步这个难题进行了相关的研究,见[1]陈珉.分布式空间数据库主动数据更新研究[D].博士学位论文,武汉大学,2004;[2] 周春莲.基于时间戳的数据同步技术实现研究[D].硕士学位论文,南昌大学,2009;[3] 张坤,刘士彬,彭海龙.空间数据库双向按需同步方案的研究与实现[J].遥感信息,2010(001):99-102;这些学者采用触发器机制、时间戳、消息等机制研究了数据同步技术,这些方法在网络连通的环境下可以正常工作,但在一些网络条件较差的环境中,如外业环境、移动环境等,就无法正常工作了。随着3G网络的建设,未来的网络条件将会得到改善,由于空间数据量较大,仍然无法满足实际中的应用。由于多用户终端用户无法经常连接网络和在离线环境下仍然需要对数据进行操作,这就导致了终端用户与服务器中数据不一致,因此需要有空间数据冲突仲裁机制的同步策略来维持数据的一致性。
传统的空间数据同步方案一般都是在网络连通的环境下进行数据同步更新,不支持离线环境,且存在同步空间数据对象粒度、同步过程均不可自由控制等缺陷,另外在同步过程中也不具备有效的冲突仲裁机制来维护空间数据的一致性,不仅应用领域有限,而且又费时费力且易出错。
发明内容
本发明的目的是克服现有技术的不足,提出一种基于XML的空间数据增量同步更新方法。
基于XML的空间数据增量同步更新方法包括如下步骤:
1)从服务器上的变更记录收集功能模块监控从服务器上空间数据的所有变化,并将变化的信息记录到辅助空间信息变化表中;
2)从服务器上的变更数据组织功能模块根据用户配置,结合数据库变更摘要辅助表中的记录信息,附加上同步动作和表名信息,将变更数据组织为待交换的XML数据文件,并将它发送给主服务器;
3)在主服务器收到步骤2)中的XML数据文件后,则直接调用变更数据冲突仲裁功能模块,对变更的数据进行冲突检测,并根据设定的冲突消除规则进行自动消除,对于不符合规则的冲突标记为人工处理,最终实现冲突数据的消除;
4)主服务器在完成步骤3)中的冲突仲裁后,则进入变更数据同步功能模块,根据变更数据的变化类型,分别执行不同的同步操作,最终达到主从服务器上的空间数据一致性。
所述的变更记录收集功能模块为:从服务器监控空间副本数据的所有变化,并将变化的信息记录到辅助空间信息变化表中,需要记录的数据包括变更的图层,变更要素的全球唯一标识码,要素的类型即点状、线状、面状,要素变更的动作,记录产生的时间。
所述的变更数据组织功能模块为:当完成变更记录收集任务时,从服务器上的变更数据组织模块根据用户配置,结合数据库变更摘要辅助表中的数据信息,附加上同步动作和表名信息,将变更数据组织成 XML文件,最后,将该XML文件、元数据文件及与空间要素关联的其他数据按规则过滤打包压缩、并增加 MD5 验证串处理,并发送给主服务器。
所述的变更数据冲突仲裁功能模块为:主服务器在接收到XML同步数据文件后,会对文件中的数据进行冲突检测,空间数据冲突的类型包括数据增加冲突、数据更新冲突和数据删除冲突,识别每一种冲突,并设定相应冲突的自动维护的规则,对于符合规则的冲突设置自动处理,否则设置为人工处理,报告该冲突,交由执行数据合并操作的用户做人工处理。
所述的变更数据同步功能模块为:在处理冲突数据之后,从服务器会根据变更数据的变化类型,分别执行不同的同步操作,最终达到主从服务器上的空间数据一致性。
本发明与现有技术相比具有的有益效果:
1)实现了多副本空间数据的一致性同步,该方法具有支持离线和在线双重环境,支持异构数据库优点,是一个透明的、可扩展的、可控制的、细粒度的数据同步技术。
2)在空间数据同步过程中进行了数据冲突仲裁,避免了数据合并的错误,保证了数据的正确性和一致性。
3)本发明技术实现方法简单,数据增量同步更新,执行效率高。
附图说明
图1 为本发明中变更摘要辅助表结构示意图;
图2为本发明中空间数据同步的模型图;
图3为本发明中空间数据冲突检测流程图。
具体实施方式
基于XML的空间数据增量同步更新方法包括如下步骤:
1)从服务器上的变更记录收集功能模块监控从服务器上空间数据的所有变化,并将变化的信息记录到辅助空间信息变化表中;
2)从服务器上的变更数据组织功能模块根据用户配置,结合数据库变更摘要辅助表中的记录信息,附加上同步动作和表名信息,将变更数据组织为待交换的XML数据文件,并将它发送给主服务器;
3)在主服务器收到步骤2)中的XML数据文件后,则直接调用变更数据冲突仲裁功能模块,对变更的数据进行冲突检测,并根据设定的冲突消除规则进行自动消除,对于不符合规则的冲突标记为人工处理,最终实现冲突数据的消除;
4)主服务器在完成步骤3)中的冲突仲裁后,则进入变更数据同步功能模块,根据变更数据的变化类型,分别执行不同的同步操作,最终达到主从服务器上的空间数据一致性。
所述的变更记录收集功能模块为:从服务器监控空间副本数据的所有变化,并将变化的信息记录到辅助空间信息变化表中,需要记录的数据包括变更的图层,变更要素的全球唯一标识码,要素的类型即点状、线状、面状,要素变更的动作,记录产生的时间。
所述的变更数据组织功能模块为:当完成变更记录收集任务时,从服务器上的变更数据组织模块根据用户配置,结合数据库变更摘要辅助表中的数据信息,附加上同步动作和表名信息,将变更数据组织成 XML文件,最后,将该XML文件、元数据文件及与空间要素关联的其他数据按规则过滤打包压缩、并增加 MD5 验证串处理,并发送给主服务器。
所述的变更数据冲突仲裁功能模块为:主服务器在接收到XML同步数据文件后,会对文件中的数据进行冲突检测,空间数据冲突的类型包括数据增加冲突、数据更新冲突和数据删除冲突,识别每一种冲突,并设定相应冲突的自动维护的规则,对于符合规则的冲突设置自动处理,否则设置为人工处理,报告该冲突,交由执行数据合并操作的用户做人工处理。
所述的变更数据同步功能模块为:在处理冲突数据之后,从服务器会根据变更数据的变化类型,分别执行不同的同步操作(具体内容如下表所示),最终达到主从服务器上的空间数据一致性。
本发明的整个运行过程可以总结如下:
基于XML的空间数据增量更新方法的运行过程是在从服务器修改空间副本数据,并且由从服务器监控空间数据的所有变化,将其记录到辅助空间信息变化表中;在完成变更记录收集任务后,从服务器上的变更数据组织模块根据用户配置,结合数据库变更摘要辅助表中的数据信息,附加上同步动作和表名等信息,将变更数据组织为待交换的XML同步数据文件,并将该同步包发送给主服务器;主服务器收到空间数据同步包后,需要调用变更数据冲突仲裁功能模块,对变更的数据进行冲突检测,并根据设定好的冲突消除规则进行自动消除,对于不符合规则的冲突标记为人工处理,最终实现冲突数据的消除;服务器在完成数据冲突仲裁后,则进入数据同步功能模块,根据变更数据的变化类型,分别执行不同的同步操作,最终达到主从服务器上的空间数据一致性。这样,通过基于XML的空间数据增量同步更新方法就可以完成可扩展的、可控制的、细粒度的数据同步任务。
实施例
空间数据增量同步更新方法应用在空间数据库中,其整个运行过程是用一个C#类Services来控制的,四大功能模块分别是用四个C#类DataCollectionServices、DataOrganizationServices、ConflictIntercedeServices、DataSynchronizationServices来实现的,在应用程序中分别调用各个功能模块类来实现相应的功能,完成整个运行过程。具体步骤为:
1)变更数据收集功能模块DataCollectionServices监控从服务器的空间数据变化,并将变化的信息记录到辅助空间信息变化表中;
2)变更数据组织功能模块DataOrganizationServices根据变更摘要辅助表中的记录信息,附加上同步动作和表名等信息,将变更数据组织为待交换的XML数据文件;
3)变更数据冲突仲裁功能模块ConflictIntercedeServices分别检测数据增加冲突、数据更新冲突和数据删除冲突,识别每一种冲突,并处理各种冲突;
4)数据同步功能模块DataSynchronizationServices根据变更数据的变化类型,分别执行不同的同步操作,最终达到主从服务器上的空间数据一致性。
空间数据交换XML文件示例格式描述如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--Prototype xml document for Data Synchronization. -->
<SynDataList>
<SynData>
<TFBH>28980576</TFBH>
<Operator>张三</Operator>
<DataType>Polygon</DataType>
<ChangeType>Add</ChangeType>
<FeatureInfo>
<gml:boundedBy >
<gml:Envelope srsName="_TM_" >
<gml:coordinates >
576203.992015,2897999.999995 576210.221305,2898011.103014
</gml:coordinates>
</gml:Envelope>
</gml:boundedBy>
<gml:featureMember >
<SGC:ENT_POLYGON >
<SGC:GUID >8a9115eb-2ab7-4714-a488-989989d03119</SGC:GUID>
<SGC:CASS_CODE >310000</SGC:CASS_CODE>
<SGC:CODE >912017</SGC:CODE>
<SGC:DLDM >112</SGC:DLDM>
<SGC:代表高程 >851.23</SGC:代表高程>
<SGC:断面区间 >J4</SGC:断面区间>
<gml:Polygon srsName="_TM_" >
<gml:outerBoundaryIs >
<gml:LinearRing >
<gml:coordinates >
576210.221305,2897999.999995 576205.525065,2897999.999995 576203.992015,2898007.798029 576207.395975,2898011.103014 576208.932029,2898002.356987 576210.221305,2897999.999995
</gml:coordinates>
</gml:LinearRing>
</gml:outerBoundaryIs>
</gml:Polygon>
</SGC:ENT_POLYGON>
</gml:featureMember>
</FeatureInfo>
</SynData>
</SynDataList>。
机译: 基于地图的空间数据同步代理系统控制系统及其控制方法
机译: 具有增量同步的基于浏览器的浏览器,基于dom的对等通信
机译: 具有增量同步的基于浏览器的浏览器,基于dom的对等通信