一种基于CMSP实现跨网闸Oracle数据库同步的方法及装置与流程

文档序号:16855695发布日期:2019-02-12 23:15阅读:525来源:国知局
一种基于CMSP实现跨网闸Oracle数据库同步的方法及装置与流程

本发明涉及跨网闸数据同步技术领域,具体地说是一种基于cmsp实现跨网闸oracle数据库同步的方法及装置。



背景技术:

在政府或企业环境中,经常由于安全需要,内网和外网需要“物理隔离”,但内网和外网还需要交换数据(如oracle数据库同步),就引入了网闸。网闸的隔离定义上有三个层级:

物理隔离:模拟人工交换的过程,必须在内外网的节点机上进行数据交换,不能实现网络上任意计算机的数据交换,这种方式安全性很高。

网络隔离:在简单交换的基础上,对文件传输协议的数据打包交换,实现了网络上任意信息点的数据交换,安全性降低。

协议隔离:对其他应用协议代理,如http,实现了应用数据的直接交换,方便交换的同时大大降低了安全性。

物理隔离是指只有文件级交换的网闸,在这种情况下,内网用户如需通过访问外网的oracle,协议上是不通的,也就是说不能直接访问外网的oracle数据库。于是产生了一种新的需求,在保障安全的情况下,把外网的oracle数据库通过网闸物理隔离方式同步到内网的oracle数据库,这样内网用户直接访问内网的oracle数据库就相当于可以访问外网的oracle数据库了。外网的oracle数据库其数据文件是在不断变化的,直接同步大量体量大的文件是不现实的,网闸一般也不支持大文件的交换。

cmsp,全称cloudandmanagedservicesprogram,也就是云消息服务平台,是一种消息中间件,它可以利用tcp/ip协议将位于一个网络消息队列中的消息实时有序地传输到另一个网络消息队列,提供了不同网络实时高效交换数据的方法。cmsp有一个重要的特性,严格的先进先出,即消息的生产、存储、传输和消费等各个环节都是严格有序的。在有网闸隔离的内网环境中,在保证隔离安全(只允许文件交换,不允许协议通过等)的情况直接下,cmsp无法正常传输数据,如简单地将消息从消息队列取出生成文件并通过网闸进行交换则破坏了消息的有序性,cmsp就失去了一些要求严格有序的应用场景,如oracle数据库同步。



技术实现要素:

本发明的技术任务是解决现有技术的不足,提供一种基于cmsp实现跨网闸oracle数据库同步的方法,既解决oracle数据库跨网闸同步问题,又保证oracle数据库同步的及时性和高效性。

本发明解决其技术问题所采用的技术方案是:

一种基于cmsp实现跨网闸oracle数据库同步的方法,该方法基于oracle数据库和cmsp,包括外网oracle数据库、内网oracle数据库、第一消息队列、第二消息队列、网闸,该方法的实现步骤包括:

s100:采集外网oracle数据库的信息并以消息形式保存到第一消息队列中;

s200:第一消息队列的消息跨网闸有序传输到第二消息队列中;

s300:内网oracle数据库从第二消息队列有序获取所采集外网oracle数据库的信息。

步骤s100中,采集的外网oracle数据库信息包括全量数据和增量数据;全量数据是从选定的某些表中的通过oracle接口获得全部记录,增量数据采集是获取oracle源数据库数据增量变化信息,增量变化信息具体包括新插入记录的内容及该记录的rowid和插入时间戳,改变记录的内容、rowid和变化时间戳,删除记录的rowid和删除时间戳。

内网oracle数据库获取的全量数据将写入内网oracle数据库的相应表中;内网oracle数据库获取的增量变化消息将依据增加、更改、删除三种变化类型和记录的rowid及时间戳,进行排序等及时将增量变化内容同步到内网oracle数据库中,实现内网oracle数据库与外网oracle数据库的实时同步。

步骤s200的具体操作步骤包括:在第一消息队列和网闸之间增设第一转换模块,在第二消息队列和网闸之间增设第二转换模块,第一转换模块负责从第一消息队列有序读出消息并实时生成文件名带编码的第一文件,网闸本身具有文件交换功能,第一文件通过网闸后生成文件名带编码的第二文件,第二转换模块负责有序地将文件名带编码的第二文件内容读出并以消息地形式顺序写入第二消息队列中。

具体的,第一转换模块有序地从第一消息队列中读出消息,随后,以同样的顺序排序实时写入文件名带编码的第一文件,第一文件的文件名包含第一转换模块所读取消息的起始序号和终止序号。

具体的,第二转换模块第一次运行时开始读出的消息序号是需要配置的,以后每次读出文件都要从上一次终止序号的下一个开始读起,如网闸未将满足条件的文件交换过来,则第二转换模块一直等待直到条件满足,随后,第二转换模块有序地从满足条件的文件中读出数据并顺序写入第二消息队列中。

本发明还提供一种基于cmsp实现跨网闸oracle数据库同步的装置,该装置基于oracle数据库和cmsp,包括外网oracle数据库、内网oracle数据库、第一消息队列、第二消息队列、网闸,网闸本身具有文件交换功能,还包括:

采集模块,负责采集外网oracle数据库的信息并以消息形式保存到第一消息队列中;

第一转换模块,负责从第一消息队列有序读出消息并实时生成文件名带编码的第一文件,第一文件的文件名包含第一转换模块所读取消息的起始序号和终止序号,第一文件通过网闸后生成文件名带编码的第二文件;

第二转换模块,负责有序地将文件名带编码的第二文件内容读出并以消息地形式顺序写入第二消息队列中;

入库模块,从第二消息队列中有序获取信息并入库至内网oracle数据库。

具体的,第一转换模块包括:

第一有序读出单元,用于有序地从第一消息队列中读出消息;

第一有序写入单元,用与读出消息时相同的顺序进行排序并写入文件名带编码的第一文件。

具体的,第二转换模块包括:

第二有序读出单元,用于有序地读出文件名带编码的第二文件内容;

第二有序写入单元,用于将读出的内容以消息地形式顺序写入第二消息队列中。

具体的,第二转换模块第一次运行时开始读出的消息序号是需要配置的,以后每次读出文件都要从上一次终止序号的下一个开始读起,如网闸未将满足条件的文件交换过来,则第二转换模块一直等待直到条件满足,随后,第二转换模块有序地从满足条件的文件中读出数据并顺序写入第二消息队列中。

本发明的一种基于cmsp实现跨网闸oracle数据库同步的方法及装置与现有技术相比所产生的有益效果是:

1)本发明通过采集外网oracle数据库的信息并以消息形式保存到第一消息队列中,然后将第一消息队列的消息跨网闸有序传输到第二消息队列中,最后,内网oracle数据库从第二消息队列有序获取所采集外网oracle数据库的信息,解决了oracle数据库跨网闸同步问题,同时保证oracle数据库的及时性和高效性;

2)本发明在实现跨网闸同步的过程中,还通过在云消息服务平台的队列消息和网闸之间增设转换模块,实现了队列消息的跨网闸传输,保证了云消息服务平台传输数据的有序性和高效性;同时,增设在网闸传输前一侧的转换模块,也就是第一转换模块,还可以保证文件成成的实时性,兼顾文件名带编码的第一文件的大小,以确保第一文件尽可能被网闸高效实时的交换到另一个消息队列。

附图说明

附图1是本发明的流程框图;

附图2是本发明中实施例一的方法流程框图;

附图3是本发明中实施例二的结构连接框图。

图中各标号表示:

10、第一消息队列,20、第二消息队列,30、网闸,40、第一转换模块,

50、第二转换模块,60、采集模块,70、入库模块;

41、第一有序读出单元,42、第一有序写入单元;

51、第二有序读出单元,52、第二有序写入单元;

m、文件名带编码的第一文件,n、文件名带编码的第二文件。

具体实施方式

下面结合附图1、2、3,对本发明的一种基于cmsp实现跨网闸oracle数据库同步的方法及装置作以下详细说明。

实施例一:

如附图1、2所示,本发明的一种基于cmsp实现跨网闸oracle数据库同步的方法,该方法基于oracle数据库和cmsp,包括外网oracle数据库、内网oracle数据库、第一消息队列10、第二消息队列20、网闸30,该方法的实现步骤包括:

s100:采集外网oracle数据库的信息并以消息形式保存到第一消息队列10中;

s200:第一消息队列10的消息跨网闸30有序传输到第二消息队列20中;

s300:内网oracle数据库从第二消息队列20有序获取所采集外网oracle数据库的信息。

步骤s100中,采集的外网oracle数据库信息包括全量数据和增量数据;全量数据是从选定的某些表中的通过oracle接口获得全部记录,增量数据采集是获取oracle源数据库数据增量变化信息,增量变化信息具体包括新插入记录的内容及该记录的rowid和插入时间戳,改变记录的内容、rowid和变化时间戳,删除记录的rowid和删除时间戳。

内网oracle数据库获取的全量数据将写入内网oracle数据库的相应表中;内网oracle数据库获取的增量变化消息将依据增加、更改、删除三种变化类型和记录的rowid及时间戳,进行排序等及时将增量变化内容同步到内网oracle数据库中,实现内网oracle数据库与外网oracle数据库的实时同步。

参考附图2,步骤s200的具体操作步骤包括:在第一消息队列10和网闸30之间增设第一转换模块40,在第二消息队列20和网闸30之间增设第二转换模块50,第一转换模块40负责从第一消息队列10有序读出消息并实时生成文件名带编码的第一文件m,网闸30本身具有文件交换功能,第一文件通过网闸30后生成文件名带编码的第二文件n,第二转换模块50负责有序地将文件名带编码的第二文件n内容读出并以消息地形式顺序写入第二消息队列20中。

具体的,第一转换模块40有序地从第一消息队列10中读出消息,随后,以同样的顺序排序实时写入文件名带编码的第一文件m,第一文件的文件名包含第一转换模块40所读取消息的起始序号和终止序号,如文件名样例为cmspxxxxxx_yyyyyy.msg,xxxxxx为起始序号,yyyyyy为起始序号。

具体的,第二转换模块50第一次运行时开始读出的消息序号是需要配置的,以后每次读出文件都要从上一次终止序号的下一个开始读起,如网闸30未将满足条件的文件交换过来,则第二转换模块50一直等待直到条件满足,随后,第二转换模块50有序地从满足条件的文件中读出数据并顺序写入第二消息队列20中。

实施例二:

如附图2、3所示,本发明还提供一种基于cmsp实现跨网闸oracle数据库同步的装置,该装置基于oracle数据库和cmsp,包括外网oracle数据库、内网oracle数据库、第一消息队列10、第二消息队列20、网闸30,网闸30本身具有文件交换功能,还包括:

采集模块60,负责采集外网oracle数据库的信息并以消息形式保存到第一消息队列10中;

第一转换模块40,负责从第一消息队列10有序读出消息并实时生成文件名带编码的第一文件m,第一文件的文件名包含第一转换模块40所读取消息的起始序号和终止序号,如文件名样例为cmspxxxxxx_yyyyyy.msg,xxxxxx为起始序号,yyyyyy为起始序号,第一文件通过网闸30后生成文件名带编码的第二文件n;

第二转换模块50,负责有序地将文件名带编码的第二文件n内容读出并以消息地形式顺序写入第二消息队列20中;

入库模块70,从第二消息队列20中有序获取信息并入库至内网oracle数据库。

如附图3所示,第一转换模块40包括:

第一有序读出单元41,用于有序地从第一消息队列10中读出消息;

第一有序写入单元42,用与读出消息时相同的顺序进行排序并写入文件名带编码的第一文件m。

如附图3所示,第二转换模块50包括:

第二有序读出单元51,用于有序地读出文件名带编码的第二文件n内容;

第二有序写入单元52,用于将读出的内容以消息地形式顺序写入第二消息队列20中。

第二转换模块50第一次运行时开始读出的消息序号是需要配置的,以后每次读出文件都要从上一次终止序号的下一个开始读起,如网闸30未将满足条件的文件交换过来,则第二转换模块50一直等待直到条件满足,随后,第二转换模块50有序地从满足条件的文件中读出数据并顺序写入第二消息队列20中。

最后应当说明的是,以上内容仅用以说明本发明的技术方案,而非对本发明保护范围的限制,尽管该具体实施方式部分对本发明作了详细地说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的实质和范围。

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