一种异构关系型数据库之间数据同步的方法和装置与流程

文档序号:20775605发布日期:2020-05-19 20:44阅读:125来源:国知局

技术领域
:】本发明涉及数据同步
技术领域
:,特别是涉及一种异构关系型数据库之间数据同步的方法和装置。
背景技术
::在当前互联网时代,许多企业的数据访问需求量增长迅速,单一的核心数据库往往无法支撑越来越大的并发操作,为此许多企业建立多个跨区域的目标数据库,将大量业务数据从核心数据库转移到相应的目标数据库中。为确保企业业务的正常运转,核心数据库与各区域的目标数据库之间需要实现数据同步,保证数据的完整性和一致性。另一方面,随着业务发展,部分企业会进行核心业务系统的升级,升级过程中会涉及到数据库的替换,在核心系统从完成升级到能够稳定运行这段期间内,往往会将原有系统中的数据库作为备份库保留一段时间,该期间内也需要实现新数据库到旧数据库之间的数据同步,以防止在新系统出现问题时能够快速切换回旧系统,从而保证业务能够继续运转。传统的数据同步方案有两种,第一种:数据同步主要是同一个数据库集群内的主从服务器之间互相进行数据同步,然而在不同数据库集群中进行数据同步时,由于无法达到数据实时同步而影响企业业务的正常运转;第二种:基于数据库日志的结构化数据同步方法,如oraclegoldengate。该方法能够解决上述第一种方法中无法实时同步的问题,但这种方法由于需要解析数据库日志,因此会占用源端数据库的计算资源和磁盘io资源,从而对源端数据库的性能产生一定影响,尤其当部署的同步架构为一对多时,对源端数据库的影响更为明显,并且整体的同步性能也较为低下。鉴于此,克服该现有技术所存在的缺陷是本
技术领域
:亟待解决的问题。技术实现要素:本发明要解决的技术问题是现有技术中缺少一种有效的异构数据库场景下的数据同步方法;解决现有技术中两种同步方式,要么缺乏实时性,要么需要临时解析数据库日志,造成占用源端数据库的计算资源和磁盘io资源问题。本发明进一步要解决的技术问题是如何进一步针对不同目的端其产生订阅的时机上的差异,以及可能发生的订阅请求是在上一轮订阅同步都完成后情况,此时,如何在所述同步服务器中存储的被订阅信息已经删除的情况下,仍然能够为所述新订阅目的端提供相应的订阅内容是当前还未有效解决的技术问题。本发明采用如下技术方案:第一方面,本发明提供了一种异构关系型数据库之间数据同步的方法,包括:同步服务器获取源端数据库日志;所述同步服务器根据对应所述源端数据库的订阅信息,将数据库日志转换为目的端所支持的数据库语言内容,并存放到对应扇区;所述同步服务器向订阅方发送日志内容更新的通知消息,以便目的端获取所述日志内容。优选的,所述同步服务器存储订阅信息,所述订阅信息包括订阅所述源端数据库的一个或者多个目的端的数据库类型,则所述同步服务器根据对应所述源端数据库的订阅信息,将数据库日志转换为目的端所支持的数据库语言内容,并存放到对应扇区,具体包括:同步服务器根据订阅所述源端数据库的目的端的数据库类型,将获取的源端数据库日志,转换为目的端所支持的数据库语言内容;其中,在存放到对应扇区时,同时会根据订阅的同一类型数据库的目的端数量,为相应的转换后的目的端所支持的数据库语言内容增加计数项;所述计数项在每次完成一目的端的完成所述数据库语言内容获取后更新,并且,在计数项状态与目的端数量相匹配时,删除对应扇区中相应类型的数据库语言内容。优选的,所述根据对应所述源端数据库的订阅信息,将数据库日志转换为目的端所支持的数据库语言内容,并存放到对应扇区,具体包:对于订阅信息中包含的目的端的重要等级、所订阅的数据总量、订阅的目的端设备数量中的一项或者多项,将所述转换为目的端所支持的数据库语言内容存放在不同读取速度的硬盘分区。优选的,所述不同读取速度的硬盘分区具体包括:按照不同直径的同心圆,将硬盘分为多个分区;其中,直径大的分区相应的读取速度相比较直径小的分区读取速度更快。优选的,周期性的扫描各源端数据库和目的端数据库的订阅信息,则所述方法还包括:若识别同一源端数据库的订阅方目的数据库的数量降低超过预设阈值,则将相应的,转换为目的端所支持的数据库语言内容存放位置,由初始的速度的硬盘分区向读取速度降一级的硬盘进行迁移;若识别同一源端数据库的订阅方目的数据库的数量增加超过预设阈值,则将相应的,转换为目的端所支持的数据库语言内容存放位置,由初始的速度的硬盘分区向读取速度升一级的硬盘进行迁移。优选的,若同步服务器存储的转换为目的端所支持的第一数据库语言内容被删除后,同步服务器又接收到新的目的端的订阅请求,并且被订阅内容与所述被删除的第一数据库语言内容相同,所述方法还包括:同步服务器向删除所述第一数据库语言内容之前的,同样订阅了所述第一数据库语言内容的一个或者多个目的端发送逆向订阅请求;其中,所述逆向订阅请求中包含有所述第一数据库语言内容的相关信息;所述一个或者多个目的端在接收到所述逆向订阅请求后,若确认本地存储的对应所述第一数据库语言内容并为被相关数据库语言修改,则向所述同步服务器返回逆向订阅响应,以便同步服务器从中选择目的端获取所述第一数据库语言内容。优选的,所述第一数据库语言内容的相关信息,包括:数据库id、表名、一条或者多条数据库操作语言、起始时间和结束时间中的一项或者多项。优选的,所述目的端的数据库类型包括关系型数据库oracle、db2、microsoftsqlserver和mysql中的一种或者多种。第二方面,本发明还提供了一种异构关系型数据库之间数据同步的装置,用于实现第一方面所述的异构关系型数据库之间数据同步的方法,所述装置包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被程序设置为执行第一方面所述的异构关系型数据库之间数据同步的方法。第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的异构关系型数据库之间数据同步的方法。本发明所提出的异构关系型数据库之间数据同步的方法,通过设置的同步服务器提供了一种目的端的订阅机制,使得相应的异构数据库同步过程,能够在同步服务器上预先完成针对不同数据库类型的被订阅数据的转化,从而在适当牺牲存储空间的条件下,即保证了实时性也减小了处理资源的占用。并且,考虑到真实场景下,真正涉及的数据库类型是很有限的,因此,上述的预先完成针对不同数据库类型的被订阅数据的转化,也不会带来太大的存储资源的浪费。进一步的,本发明中通过订阅目的端的类型归属,设置了技术项,从而极大的压缩了在目的端大部分为同类型数据库应用场景下的,对同步服务器存储空间的使用。进一步的,本发明中还提出了一种逆向订阅的技术解决方案,使得某一订阅目的端在错过同步服务器中生成的同步内容后,还能够基于同步服务器争取找到相应的同步内容,提高了整个方案架构的抗鲁棒性。【附图说明】为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的一种异构关系型数据库之间数据同步的架构示意图;图2是本发明实施例提供的一种异构关系型数据库之间数据同步的方法流程示意图;图3是本发明实施例提供的一种异构关系型数据库之间数据同步的分区存储示意图;图4是本发明实施例提供的一种异构关系型数据库之间数据同步的中多对一的场景示意图;图5是本发明实施例提供的一种异构关系型数据库之间数据交叉同步场景示意图;图6是本发明实施例提供的一种异构关系型数据库之间数据同步的装置结构示意图。【具体实施方式】为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。实施例1:本发明实施例1提供了一种异构关系型数据库之间数据同步的方法,其关系架构图如图1所示,被订阅者在实际操作过程中也可以是多个,而为了表现的直观性,仅仅以单一源端数据库(在本发明实施例中承载源端数据库的设备也被简称为源端)为例,在图1中所示的日志捕获模块实际实现时,可以就是相应的网络接口,用于提供对源端数据库侧获取其主动上报的日志内容,除此以外,也可以是在个源端数据库中增设监听线程,而所述日志捕获模块则与相应的监听线程实现网络通讯,并获取相应监听线程上报的日志内容。而在图1中所呈现的日志接收模块和日志解析模块则是相应针对不通过的目的端数据库类型所复用的一套解析机制,但是,也不排除并发创建多个日志解析线程来实现所述日志解析模块的可能性(尤其是在并发任务较多,而同步服务器也支持并发数据处理的情况下)。需要指出的是,图1所示的架构图仅仅是便于放哪的理解所呈现,其不对具体实现的方法过程产生特定的范围约束力,如图2所示,包括:在步骤201中,同步服务器获取源端数据库日志。其中,所述源端数据库日志记载了源端的所有数据库操作动作,因此,对于本发明实施例来说,相应的同步过程如果是从源端数据库运行之初就进行了,将表现为对源端数据内容全面备份和同步。在步骤202中,所述同步服务器根据对应所述源端数据库的订阅信息,将数据库日志转换为目的端所支持的数据库语言内容,并存放到对应扇区。其中,所述目的端的数据库类型包括关系型数据库oracle、db2、microsoftsqlserver和mysql中的一种或者多种。仍然以图1为例,订阅者和目的端数据库一一对应,即:oracle有oracle日志接收模块和oracle日志解析模块,mysql有mysql日志接收模块和mysql日志解析模块等等(这里需要一一对应的原因是由于各个数据库在某些sql语法上存在着部分差异,如果用同一个日志解析模块可能会导致解析出的sql能在mysql上运行,而不能在oracle上运行)。日志接收模块负责从日志捕获模块中读取到的是源端发送的数据库日志数据,然后日志解析模块负责解析日志数据,将其转换为相应的sql语句,进而执行sql将数据写入到对应的目的端数据库中。在步骤203中,所述同步服务器向订阅方发送日志内容更新的通知消息,以便目的端获取所述日志内容。本发明所提出的异构关系型数据库之间数据同步的方法,通过设置的同步服务器提供了一种目的端的订阅机制,使得相应的异构数据库同步过程,能够在同步服务器上预先完成针对不同数据库类型的被订阅数据的转化,从而在适当牺牲存储空间的条件下,即保证了实时性也减小了处理资源的占用。并且,考虑到真实场景下,真正涉及的数据库类型是很有限的,因此,上述的预先完成针对不同数据库类型的被订阅数据的转化,也不会带来太大的存储资源的浪费。在本发明实施例中,所述同步服务器存储订阅信息,所述订阅信息包括订阅所述源端数据库的一个或者多个目的端的数据库类型(例如,上述的所述目的端的数据库类型包括关系型数据库oracle、db2、microsoftsqlserver和mysql中的一种或者多种),则所述同步服务器根据对应所述源端数据库的订阅信息,将数据库日志转换为目的端所支持的数据库语言内容,并存放到对应扇区,具体包括:同步服务器根据订阅所述源端数据库的目的端的数据库类型,将获取的源端数据库日志,转换为目的端所支持的数据库语言内容;其中,在存放到对应扇区时,同时会根据订阅的同一类型数据库的目的端数量,为相应的转换后的目的端所支持的数据库语言内容增加计数项;所述计数项在每次完成一目的端的完成所述数据库语言内容获取后更新,并且,在计数项状态与目的端数量相匹配时,删除对应扇区中相应类型的数据库语言内容。本发明实施例优选方案中通过订阅目的端的类型归属,设置了技术项,从而极大的压缩了在目的端大部分为同类型数据库应用场景下的,对同步服务器存储空间的使用。在本发明实现过程中,对于目的端的订阅请求,还可以提供相应的策略特性,即目的端可以指定数据内容在源端被修改的订阅内容,还可以指定特定时间段(此处通常指未来的时间段)的源端数据操作的订阅内容,还可以指定数据表格的相关被修改的订阅内容等等。其对于同步服务器来说,通常表现为新开辟一存储区域为所述定制化要求的目的端提供待同步数据的存储。进一步,若结合本发明实施例后续提出的不同读取扇区差异化存储场景中,所述定制化要求的目的端提供待同步数据默认被存储于低读取速度的扇区,原因是其通常是小众目的端的特定需求。在本发明实施例中,为了最优化的提升订阅内容的同步效率,所述根据对应所述源端数据库的订阅信息,将数据库日志转换为目的端所支持的数据库语言内容,并存放到对应扇区,具体包:对于订阅信息中包含的目的端的重要等级、所订阅的数据总量、订阅的目的端设备数量中的一项或者多项,将所述转换为目的端所支持的数据库语言内容存放在不同读取速度的硬盘分区。所述不同读取速度的硬盘分区具体包括:按照不同直径的同心圆,将硬盘分为多个分区;其中,直径大的分区相应的读取速度相比较直径小的分区读取速度更快。如图3所示,其呈现了三个分区各自存储订阅内容的效果示意图,其中,分区1、分区2和分区3三者的读写速度依次递减。如图4所示,当为多对一同步时,每个主题便会包含多个分区。假设源端有3个数据库:数据库1,数据库2和数据库3,每个数据库中都有3张表:table1,table2,table3。多对一的场景一般是要求将源端各个库上的相同的表上的数据汇总到目的端,因此这里的主题仍然是表名,每个主题下的分区数量和源端数据库的个数保持一致,所以这里的键=数据库id+表名。比如数据库1的table1上的操作会被写入到主题1的分区1上,数据库2的table1上的操作会被写入到主题1的分区2上,数据库n的table1上的操作会被写入到主题1的分区n上,其他表的操作同理。与图3不同,在图3中,各分区中所呈现订阅内容(例如订阅内容1.1)直接表现为一个订阅任务的订阅内容对象。而图4中,其表现粒度则更小,可以理解起消息(例如消息1,消息2)为具体的数据库操作语句。具体操作过程中,对于目的端的重要等级较高(例如目的端的vip等级)、所订阅的数据总量较少和/或订阅的目的端设备数量较大时,考虑到实际情况中,统一源端数据库内容,所发生的订阅关系可能会变动,尤其是在进行一轮数据库升级或者服务器替换场景中,所述订阅关系可能就是短时间的;除此以外,还考虑到有些订阅关系可能是存在时效性的,即只针对特定时间段的订阅,过期之后便放弃订阅关系;因此,按照上述的类似数量参照方式设定订阅内容所存放的不同读取速度分区方式。优选的,还可以做出进一步的方案改进,具体的,周期性的扫描各源端数据库和目的端数据库的订阅信息,则所述方法还包括:若识别同一源端数据库的订阅方目的数据库的数量降低超过预设阈值,则将相应的,转换为目的端所支持的数据库语言内容存放位置,由初始的速度的硬盘分区向读取速度降一级的硬盘进行迁移;若识别同一源端数据库的订阅方目的数据库的数量增加超过预设阈值,则将相应的,转换为目的端所支持的数据库语言内容存放位置,由初始的速度的硬盘分区向读取速度升一级的硬盘进行迁移。其中,预设阈值是一种经验值,在实际操作过程中,考虑的维度也可能远不止上述的数量一个维度,而此处的预设阈值可以根据历史经验的最大订阅数量和最小订阅数量取折中参数进行设定。一个正常的订阅关系,自然是订阅方获取完订阅内容,则相应同步服务器便会把自身存储的相应订阅内容删除,从而腾出空间为其他订阅任务服务。然而,在实际实现过程中,总会遇到一轮订阅任务完成后,突然有新的目的端发起与已完结的订阅任务相同的订阅请求,此时,对于现有的同步服务器来说是无法有效解决相应问题的。若再次向同一源端发送订阅请求,可能相应的被同步数据已经被删除而无法为新的目的端提供源端同步数据内容。基于这样的问题场景,本发明实施例还提供了一种优选的扩展方案,具体的,若同步服务器存储的转换为目的端所支持的第一数据库语言内容被删除后,同步服务器又接收到新的目的端的订阅请求,并且被订阅内容与所述被删除的第一数据库语言内容相同,所述方法还包括:同步服务器向删除所述第一数据库语言内容之前的,同样订阅了所述第一数据库语言内容的一个或者多个目的端发送逆向订阅请求;其中,所述逆向订阅请求中包含有所述第一数据库语言内容的相关信息;所述第一数据库语言内容的相关信息,包括:数据库id、表名、一条或者多条数据库操作语言、起始时间和结束时间中的一项或者多项。所述一个或者多个目的端在接收到所述逆向订阅请求后,若确认本地存储的对应所述第一数据库语言内容并为被相关数据库语言修改,则向所述同步服务器返回逆向订阅响应,以便同步服务器从中选择目的端获取所述第一数据库语言内容。上述的,本发明实施例提出了一种逆向订阅的技术解决方案,使得某一订阅目的端在错过同步服务器中生成的同步内容后,还能够基于同步服务器争取找到相应的同步内容,提高了整个方案架构的抗鲁棒性。实施例2:本发明实施例以图5为例子,列举了一种交叉式的订阅关系,相比较实施例1而言,对于其可适用的场景直接利用实例的方式进行了呈现,而具体的订阅关系建立以及订阅同步和存储内容管理可以借鉴实施例1所描述的内容,在本实施例中将不重复展开描述。在本发明实施例中,有2张表table1和table2(可以是一个源端的,也可以属于不同的源端),每张表各1个分区。目的端有2个订阅者组(可以理解为由多个订阅者构成),其中订阅者组1由2个oracle订阅者组成,订阅者组2由2个mysql订阅者组成。table1上分区里的消息分别被oracle订阅者1和mysql订阅者2订阅,各个订阅者解析出数据后便分别写入各自所对应的数据库,同样,table2被oracle订阅者2和mysql订阅者1消费,然后写入数据库,这样便实现了table1和table2的数据同时写入oracle和mysql。当有多个分区的场景时,同理。实施例3:如图6所示,是本发明实施例的基于人体状态的内容推荐装置的架构示意图。本实施例的基于人体状态的内容推荐装置包括一个或多个处理器21以及存储器22。其中,图6中以一个处理器21为例。处理器21和存储器22可以通过总线或者其他方式连接,图6中以通过总线连接为例。存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例1中的异构关系型数据库之间数据同步的方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行异构关系型数据库之间数据同步的方法。存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的异构关系型数据库之间数据同步的方法,例如,执行以上描述的图2所示的各个步骤。值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取存储器(ram,randomaccessmemory)、磁盘或光盘等。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1