基于分布式数据库的GIS应用系统的制作方法

文档序号:14797006发布日期:2018-06-29 19:46阅读:166来源:国知局

本发明涉及电网地理信息系统领域,尤其涉及一种基于分布式数据库的GIS应用系统。



背景技术:

随着各推广网省的业务应用不断深化,近年来,电网资源数据快速增长、业务应用不断深化、访问量逐步上升,对国家电网公司统一推广的GIS平台提出了挑战。原有集中式的电网GIS平台架构暴露出许多问题,制约了电网GIS平台的发展。

电网的空间数据关联着类型多样、形式复杂的设备属性数据。在数据的持久化层面上由关系数据库来存储。在电网的关系数据库中,存在为数众多的表,一般上百张的数据表,才能涵盖电网GIS系统所涉及的各种数据。大量的数据访问和计算使得以往单台或少数几台的关系数据库系统难以为继。内存数据库将大量数据缓存至机器内存,通过缓存数据的方式来支撑数据的实时读取,高并发的及时响应,大吞吐量的高速返回。在大数据应用的背景下,单台物理机器是无法满足将全部数据缓存至内存的需求。

通常的思路是采用多台机器组合,形成一个逻辑意义上的内存集群。物理条件的限制要求数据进行逻辑上的拆分,将整体的海量数据分离成单台机器能够负担的数据规模。如何既满足海量数据拆分,又保证不影响应用,且能够快速合并就是数据分区必须解决的问题。



技术实现要素:

本发明所要解决的技术问题是:提供一种基于分布式数据库的GIS应用系统,可支撑电网作业大规模协同所要求的高实时性。

为了解决上述技术问题,本发明采用的技术方案为:一种基于分布式数据库的GIS应用系统,包括:

数据加载模块,用于根据数据节点对应的地理范围,加载数据节点的数据并构建数据索引;

数据访问模块,用于根据查询请求和所述数据索引调用相关数据节点处理查询请求,得到查询结果;

数据合并模块,用于将所述相关数据节点返回的查询结果进行合并并去重,得到结果集;

数据同步模块,用于若有数据发生变更,则对变更数据所在的节点组中的数据节点进行同步。

本发明的有益效果在于:实现了分布式环境下空间、属性和拓扑结构全局强一致性的事务支持,支撑了电网作业大规模协同所要求的高实时性。建立了满足电力行业特性的高并发实时协同服务体系。将平台的电网设备管理能力提升至几十亿级,解决了数据体量大、分布范围广和电网结构复杂的问题,实现了数据管理从GB级、TB级到PB级的演进。

附图说明

图1为本发明实施例一的一种基于分布式数据库的GIS应用系统的结构示意图;

图2为本发明实施例一的分布式数据库的架构示意图;

图3为本发明实施例一的数据加载的原理示意图。

标号说明:

1、数据加载模块;2、数据访问模块;3、数据合并模块;4、数据同步模块。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。

本发明最关键的构思在于:将电网数据按照地理区域进行划分并分别存储到不同地理区域对应的数据节点上,并且支持查询结果的合并以及变更数据的同步。

请参阅图1,一种基于分布式数据库的GIS应用系统,包括:

数据加载模块,用于根据数据节点对应的地理范围,加载数据节点的数据并构建数据索引;

数据访问模块,用于根据查询请求和所述数据索引调用相关数据节点处理查询请求,得到查询结果;

数据合并模块,用于将所述相关数据节点返回的查询结果进行合并并去重,得到结果集;

数据同步模块,用于若有数据发生变更,则对变更数据所在的节点组中的数据节点进行同步。

从上述描述可知,本发明的有益效果在于:实现了分布式环境下空间、属性和拓扑结构全局强一致性的事务支持,支撑了电网作业大规模协同所要求的高实时性。

进一步地,所述数据加载模块具体用于:

获取数据节点对应的地理范围;

获取对应所述地理范围的数据并加载至所述数据节点中,所述数据包括图形数据和属性数据;

构建数据索引。

由上述描述可知,将电网数据按照地理区域进行划分并分别存储到不同地理区域对应的数据节点上。

进一步地,所述数据访问模块具体用于:

接收应用端发送的查询请求;

根据数据索引和所述查询请求,确定相关数据节点;

若所述相关数据节点有多个,则通过结构化接口调用所述相关数据节点处理所述查询请求;

将所述相关数据节点返回的查询结果排序后,返回至应用端。

进一步地,所述数据合并模块具体用于:

判断一数据节点返回的查询结果中是否存在重复的数据主键;

若存在,则根据数据主键,对所述一数据节点返回的查询结果进行去重;

若不存在,则将所述一数据节点返回的查询结果合并进结果集。

进一步地,所述数据同步模块具体用于:

控制节点根据应用端发送的编辑请求,通过索引判断变更数据是否只在一个节点组上,所述节点组包括多个数据节点,分别为一个主节点和多个从节点;

若变更数据只在一个节点组上,则控制节点将所述编辑请求发送到所述节点组的主节点上;

所述主节点进行持久化操作;

所述主节点向所述节点组内的从节点发送更新消息;

当所有从节点更新成功后,主节点进行数据更新,并在更新成功后通知控制节点;

若变更数据分布在两个以上的节点组上,则控制节点进行持久化操作;

控制节点通知所述两个以上的节点组中的所有数据节点进行数据同步;

同步成功后,通知控制节点;

控制节点将操作成功的信息返回给应用端,并判断是否需要更新全局索引;

若需要,则异步发送同步信息至其他控制节点与管理节点。

由上述描述可知,在数据访问中有编辑数据和查询数据。数据编辑的动作,会触发数据的同步。数据查询会触发数据的合并。

实施例一

请参照图1,本发明的实施例一为:一种基于分布式数据库的GIS应用系统,该系统基于如图2所示的分布式数据库架构。

该架构通过控制节点为应用提供数据服务,负责解析SQL、分发任务、处理回应、进行结果汇集处理,是整个系统提供服务的核心部分,控制节点以集群的方式对外提供。

在数据节点中以结构化方法提供数据访问、数据编辑功能,由控制节点调度,数据节点以集群的方式对外提供,可实现读写分离。

利用管理服务为整个系统提供管理和协调工作,并对相关配置进行持久化,以主备的模式提供高可用服务。数据库管理员DBA可以通过管理工具查看系统运行状况、监控系统关键指标等。

如图1所示,本系统包括:数据加载模块1、数据访问模块2、数据合并模块3和数据同步模块4。

数据加载模块1,用于根据数据节点对应的地理范围,加载数据节点的数据并构建数据索引;

数据访问模块2,用于根据查询请求和所述数据索引调用相关数据节点处理查询请求,得到查询结果;

数据合并模块3,用于将所述相关数据节点返回的查询结果进行合并并去重,得到结果集;

数据同步模块4,用于若有数据发生变更,则对变更数据所在的节点组中的数据节点进行同步。

进一步地,所述数据加载模块具体用于:获取数据节点对应的地理范围;获取对应所述地理范围的数据并加载至所述数据节点中,所述数据包括图形数据和属性数据;构建数据索引。

图3为数据加载的原理示意图,背景的网格可以看作是地理区域的网格,预设每个数据节点对应的地理范围,然后将该地区的数据都加载至该数据节点内,例如,将厦门地区的数据加载至数据节点3,将福州地区的数据加载至数据节点2。可以先加载图形数据,然后加载图形的属性数据,再加载纯属性数据;最后构建数据索引。

通过缓存数据的方式来支撑数据的实时读取,高并发的及时响应,大吞吐量的高速返回。系统将每个数据分区划分为一个逻辑组,一个逻辑组有多个数据节点组成,包括一个主节点和多个从节点。由于原来电网的数据表都按类型进行存储,即一张表存储了各个地区的同一类型的电网数据,因此,每一张表都会进行分区,每一个分区都会由一个单独的任务来进行加载。数据加载完成后就可以直接访问数据。

进一步地,所述数据访问模块具体用于:

接收应用端发送的查询请求,即接收用户的查询请求,对SQL语句进行解析处理;

根据数据索引和所述查询请求,确定相关数据节点,即判断分发到哪些数据节点或必须访问哪些数据节点才能满足该查询请求;

若所述相关数据节点有多个,则通过结构化接口调用所述相关数据节点处理所述查询请求,即如果目标数据存储于多个数据节点上,就必须进行分布式处理,控制节点通过结构化接口调用数据节点处理数据访问请求并在多个数据节点之间进行协调;

将所述相关数据节点返回的查询结果排序后,返回至应用端。

进一步地,在数据访问模块将查新结果返回给应用端之前,还要经过数据合并模块的处理。所述数据合并模块具体用于:

判断一数据节点返回的查询结果中是否存在重复的数据主键;

若存在,则根据数据主键,对所述一数据节点返回的查询结果进行去重;

若不存在,则将所述一数据节点返回的查询结果合并进结果集。

即当控制节点判断SQL请求的数据涉及到多个数据节点时,接收到的多个数据节点返回的数据,需要进行数据合并、去重。具体地,根据数据主键进行合并,分别判断各数据节点返回的数据主键是否有重复键,有的话需要去重,确保用户只获取到一条唯一数据,没有的话则合并进结果集。最后将结果集返回给应用端。

进一步地,数据的访问除了查询数据,还包括编辑数据,数据编辑的动作会触发数据的同步,即会触发数据同步模块。所述数据同步模块具体用于:

控制节点根据应用端发送的编辑请求,通过索引判断变更数据是否只在一个节点组上,所述节点组包括多个数据节点,分别为一个主节点和多个从节点;一个节点组中的数据节点存储的数据应保持一致;

若变更数据只在一个节点组上,则控制节点将所述编辑请求发送到所述节点组的主节点上;

所述主节点进行持久化操作;

所述主节点向所述节点组内的从节点发送更新消息;

当所有从节点更新成功后,主节点进行数据更新,并在更新成功后通知控制节点;

若变更数据分布在两个以上的节点组上,则控制节点进行持久化操作;

控制节点通知所述两个以上的节点组中的所有数据节点进行数据同步;

同步成功后,通知控制节点;

控制节点将操作成功的信息返回给应用端,并判断是否需要更新全局索引;

若需要,则异步发送同步信息至其他控制节点与管理节点。

也就是说,数据同步的场景分为两种,第一种为变更的数据只在一个节点组上;第二种为变更的数据分布在多个节点组上。两种场景根据变更的数据分布在节点的个数来采取不同的数据同步方式。

对于单组数据同步,当应用端发送任务到控制节点,控制节点通过索引判断数据编辑涉及的变更数据在只在一个节点组上时,控制节点将任务发送到该节点组的主节点上;主节点执行持久化操作;持久化操作成功后,由主节点向节点组内的从节点发送更新消息,当所有从节点均更新成功后,通知主节点;主节点进行数据更新,成功后通知控制节点;控制节点返回应用端操作成功;同时,判断是否需要更新全局索引,若需要更新,异步发送同步信息到其他控制节点与管理节点。

对于多组数据同步,当应用端发送任务到控制节点,控制节点通过索引判断变更数据所在的数据节点,若变更数据涉及多个数据节点或无法判断所属数据节点,则由控制节点直接进行持久化操作;控制节点持久化成功后,通知相关数据节点进行数据同步;所有数据节点同步成功后,通知控制节点;控制节点返回应用端操作成功。同时,判断是否需要更新全局索引,若需要更新,异步发送同步信息到其他控制节点与管理节点。

主节点Master可用写入、修改、删除数据;其他从节点Slave通过数据同步更新数据,提供读取服务。主库为每一个Slave建立一个单独的binlog dump线程,并同时与它们交互。

1)主库将所有的更新操作,写入二进制日志(binary log);

2)从库运行IO线程读取主库的二进制日志,将log events拷贝到它的中继日志(relay log);

3)从库运行SQL线程重做中继日志中的事件,从而保持一致;

主从同步的实现中,从库连接到主库,并向主库发送一个DUMP命令,然后在主库上启动一个特殊的binlog dump线程。Dump线程会读取主库上的二进制日志内容发往从库。

本实施例通过自主研发分布式电网GIS内存数据库,实现了分布式环境下空间、属性和拓扑结构全局强一致性的事务支持,支撑了电网作业大规模协同所要求的高实时性。建立了满足电力行业特性的高并发实时协同服务体系。将平台的电网设备管理能力提升至几十亿级,解决了数据体量大、分布范围广和电网结构复杂的问题,实现了数据管理从GB级、TB级到PB级的演进。

综上所述,本发明提供的一种基于分布式数据库的GIS应用系统,实现了分布式环境下空间、属性和拓扑结构全局强一致性的事务支持,支撑了电网作业大规模协同所要求的高实时性。建立了满足电力行业特性的高并发实时协同服务体系。将平台的电网设备管理能力提升至几十亿级,解决了数据体量大、分布范围广和电网结构复杂的问题,实现了数据管理从GB级、TB级到PB级的演进。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1