掌桥专利:专业的专利平台
掌桥专利
首页

跨网闸实时数据库数据同步方法及系统

文献发布时间:2023-06-19 12:13:22


跨网闸实时数据库数据同步方法及系统

技术领域

本发明涉及实时数据库数据传输领域,尤其涉及一种跨网闸实时数据库数据同步方法及系统。

背景技术

工业领域,为保障网络安全性会使用网闸,网闸是一种网络隔离硬件设备,它只允许单向的UDP协议,也支持只返回单字节的TCP协议。网闸内端是受保护的工业网络,包括用于现场数据采集的传感器、采集接口机及数据库;网闸外端是用于数据分析的业务逻辑,它不能穿过网闸来访问内部的数据。

传统方法包括在网闸中指定可访问的IP段,在内外网服务器建立共享文件夹以实现文件的同步。但是都存在一定的问题,在网闸中指定可访问的IP段的方法不够安全;在内外网服务器建立共享文件夹以实现文件的同步的效率太低。

本发明提供跨网闸实时数据库数据同步方法,旨在解决网闸隔离条件下的数据库实时传输问题。

发明内容

为解决现有技术中存在的不足,本发明的目的在于,提供一种跨网闸实时数据库数据同步方法及系统,采用镜像方式,实现跨网闸的数据同步,镜像两端通过标签全名的CRC压缩作为映射。

本发明采用如下的技术方案。

一种跨网闸实时数据库数据同步方法,包括步骤:

(1)在网闸内外数据库分别创建镜像标签集,将网闸内外数据库配置为镜像发送/接收数据库;

(2)镜像发送端进行快照更新,对更新成功的快照进行缓存,将缓存中的快照和对应标签编包并发送给镜像接收端;

(3)镜像接收端收到编包后解编,取得对应的标签及快照,写入本地数据库。

进一步地,所述步骤(1)的具体步骤:

(1.1)在网闸内外数据库分别创建镜像标签集,并打开镜像标志位开关;

(1.2)将网闸内部数据库配置为镜像发送数据库,并设置发送目标IP地址和端口号;

(1.3)将网闸外部数据库配置为镜像接收数据库,并设置监听端口号,与发送端口号相匹配。

进一步地,镜像标签集包含所有使用的标签全名,利用循环冗余校验法对所有标签全名进行压缩,得到标签crc。

进一步地,镜像发送数据库包含一个所有标签ID到标签crc的映射表,镜像接收数据库包含一个所有标签crc到标签ID的映射表。

进一步地,镜像发送端,编包时将标签ID替换为标签crc;

镜像接收端,解编取得快照和标签后,将标签crc替换为本地标签ID。

进一步地,所述步骤(3)还包括,

判断镜像接收端本地标签是否也打开了镜像标志位开关,如果没有打开,则不对报文进行同步;如果打开,则进行报文同步,写入本地;

然后返回一个1字节的标志位表示接收是否成功。

进一步地,一个镜像接收端可以包含多个镜像连接,即对应多个镜像发送端,但多个镜像连接所镜像的标签有所区别。

一种跨网闸实时数据库数据同步系统,包括镜像发送端和镜像接收端,分别位于网闸的两端,由网闸内镜像发送端向网闸外镜像接收端镜像快照,实现两个实时数据库之间对同名标签快照的一一复制。

进一步地,在镜像发送/接收数据库分别创建相同的镜像标签集,标签集中包括所有使用的标签全名,利用循环冗余校验法对标签全名压缩得到标签crc;

镜像发送数据库维护一个所有标签ID到标签crc的映射,镜像接收数据库维护一个所有标签crc到标签ID的映射。

进一步地,镜像发送端,进行快照更新,对更新成功的快照进行缓存,将缓存中的快照和对应标签编包并发送给镜像接收端;编包时将标签ID替换为标签crc;

镜像接收端,收到编包后解编,取得对应的标签及快照,写入本地数据库;解编取得快照和标签后,将标签crc替换为本地标签ID。

本发明的有益效果在于,与现有技术相比,

本发明采用镜像方法实现跨网闸实时数据库数据同步,在网闸隔离的两端,由网闸内端向网闸外端镜像快照,在两个实时数据库之间对同名标签快照实现一一复制,镜像两端通过标签名的CRC压缩作为映射。

本发明镜像使用循环冗余校验法,可以生成固定长度的压缩数据,更利于编包解包算法的处理;同时避免同样的标签名在不同数据库中ID不同的情况。

本发明提供的跨网闸实时数据库数据同步方法,既保证了内外网的安全性,又实现了实时数据库数据的跨网闸传输,且保证了数据的传输效率。

附图说明

图1是跨网闸实时数据库数据同步系统示意图;

图2是跨网闸实时数据库数据同步方法流程图;

图3是镜像逻辑流程图。

具体实施方式

下面结合附图对本申请作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本申请的保护范围。

如图1所示,跨网闸实时数据库数据同步系统,包括镜像发送端,镜像接收端;分别位于网闸的两端,网闸内端为镜像发送端,网闸外端为镜像接收端。

在网闸隔离的两端,由网闸内端向网闸外端镜像快照,实现两个实时数据库之间对同名标签快照的一一复制,且镜像快照最新时间戳数据。

此后,镜像发送端快照更新,同时会将快照数据同步镜像到镜像接收端。

在镜像发送端数据库创建镜像标签集,在镜像接收端数据库创建镜像标签集,为相同的标签集。标签集中包括所有使用的标签名。

为避免同样的标签名在不同数据库中ID不同的情况,镜像两端通过标签名的CRC压缩作为映射。镜像发送数据库维护一个所有标签ID到标签crc的映射,镜像接收数据库维护一个所有标签crc到标签ID的映射,它是前一映射的反映射。

镜像发送端首先进行快照更新,对更新成功的快照进行缓存,将缓存中的快照和对应标签编包并发送给镜像对端。编包时将快照的标签ID替换为标签crc。

镜像接收端收到编包后解编,取得对应的标签及快照,写入本地数据库。解编取得快照和标签后,将标签crc替换为本地标签ID,再写入本地数据库。

如图2所示,跨网闸实时数据库数据同步方法,包括步骤:

(1)用户将网闸内外数据库配置为镜像发送/接收数据库;

(1.1)首先确定需要镜像的标签集,并在网闸两边数据库分别创建它们,并打开它们的镜像标志位(mirror)开关;

标签集包括需要镜像的所有标签名,然后在网闸两边数据库创建相同的标签集。

镜像标签集中的标签使用的是标签全名,因为标签ID是特定于数据库的,同样的标签名在不同数据库的ID可能不同,因此不能简单的使用标签ID来代替标签名。

但如果在报文中包含标签全名,最长可以达到160个字符,这相对于4字节的标签ID而言大大增加了网络带宽的占用,如果直接使用标签全名,每秒能同步的标签只在一个非常有限的范围内,不能满足现场使用的需要。

为减小网络带宽的占用,使用算法对标签名进行压缩,循环冗余校验法(CyclicRedundancy Check,CRC)可以计算任意长度数据的校验码,此处采用CRC32循环冗余校验得到32位校验码,该校验码重复的概率是2.328E-10,对于不到百万标签的数据库来说近乎是唯一的,而且它可以生成4字节固定长度的压缩数据,更利于编包解包算法的处理。

利用循环冗余校验法对所有标签名进行压缩,得到4字节的标签crc,用于发送报文中。

(1.2)将网闸内部数据库配置为镜像发送数据库,并设置发送目标IP地址和端口号;

镜像发送数据库的功能包括:更新快照,将快照和标签编包,发送。

镜像发送数据库维护一个所有标签ID到标签crc的映射,事先计算好所有标签名的crc,建立标签ID到标签crc的映射表。镜像发送数据库发送快照时,将快照的标签ID替换为标签crc,再进行编包发送。

镜像发送数据库在更改标签名、更改表名时自动重新生成标签crc。

(1.3)将网闸外部数据库配置为镜像接收数据库,并设置监听端口号,与发送端口号相匹配;

镜像接收数据库的功能包括:接收编包,解编取得快照和标签,写入数据库。

镜像接收数据库维护一个所有标签crc到标签ID的映射,它是前一映射的反映射。镜像接收数据库得到镜像包后进行解编,取得快照和标签,将标签crc替换为标签ID,再写入数据库中。

(1.4)设置后重新启动数据库以应用新的配置;

镜像发送/接收数据库仍具有独立服务器具有的一切功能,如创建标签、创建归档文件、写快照等。

(2)镜像发送端首先进行快照更新,对更新成功的快照进行缓存,将缓存中的快照和对应标签编包并发送给镜像对端;

在服务器端截获所有更改快照的api调用,调用完成后,将对应快照进行更新。对更新成功的快照进行缓存,缓存是一个内存中的队列,从一边入队,另一边一个单独的线程出队。

将标签和快照编包发送,如图3所示,镜像发送包括出队、编包、发送。镜像发送数据库发送快照,编包时将快照的标签ID替换为标签crc。

使用缓存是必需的,因为镜像发送端到镜像接收端的网络延迟是不定的,将镜像数据放入缓存可防止数据丢失。但是队列的容量也是有限的,如果镜像发送总是慢于快照更新,则队列会无限增长,直到耗尽内存,服务崩溃,目前设置为1000000事件,如果队列已满,新的快照更新事件会被丢弃。

(3)镜像接收端收到编包后解编,取得对应的标签及快照,写入本地数据库。

如图3所示,镜像接收包括收包、解编、写入。解编取得快照和标签后,将标签crc替换为本地标签ID,再写入本地数据库。

镜像接收端除了要判断标签类型,还要判断本地的标签是否也打开了镜像标志位(mirror)开关,如果没有打开,即使对方发来了报文,也不对它进行同步。如果都处理了就写入本地快照。然后返回一个1字节的标志位表示接收是否成功。具体地,标志位小于等于0时表示接收未成功,标志位大于0时表示接收成功。

镜像接收端本身也是一个服务器,它可以接收不止一个镜像连接,可以应用于有多个网闸隔离的内部网络或一个隔离网络中多个数据库,它们都可以指定同一个镜像接收端,但它们镜像的标签必需有所区别,否则会产生相互影响。

镜像只能截获来自外部对标签快照的更新,来自内部的更新无法处理,例如实时计算模块对计算标签快照的更新并不在镜像范围之内。但是,镜像接收端如果有计算标签,当它所依赖的采集标签快照因为镜像而发生更新时,该标签也会自动进行计算,因此也就不需要被镜像了。

本发明的有益效果在于,与现有技术相比,

本发明采用镜像方法实现跨网闸实时数据库数据同步,在网闸隔离的两端,由网闸内端向网闸外端镜像快照,在两个实时数据库之间对同名标签快照实现一一复制,镜像两端通过标签名的CRC压缩作为映射。

本发明镜像使用循环冗余校验法,可以生成固定长度的压缩数据,更利于编包解包算法的处理;同时避免同样的标签名在不同数据库中ID不同的情况。

本发明提供的跨网闸实时数据库数据同步方法,既保证了内外网的安全性,又实现了实时数据库数据的跨网闸传输,且保证了数据的传输效率。

本发明申请人结合说明书附图对本发明的实施示例做了详细的说明与描述,但是本领域技术人员应该理解,以上实施示例仅为本发明的优选实施方案,详尽的说明只是为了帮助读者更好地理解本发明精神,而并非对本发明保护范围的限制,相反,任何基于本发明的发明精神所作的任何改进或修饰都应当落在本发明的保护范围之内。

相关技术
  • 跨网闸实时数据库数据同步方法及系统
  • 一种实现跨安全隔离网闸数据库实时同步的方法及系统
技术分类

06120113212718