一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据同步方法、数据同步装置和计算机可读存储介质与流程

2022-03-09 02:10:09 来源:中国专利 TAG:
1.本技术涉及大数据的数据处理领域,尤其涉及数据同步方法、数据同步装置和计算机可读存储介质。
背景技术
::2.数据库的数据同步技术是指将一个数据库的数据同步到另一个数据库,这两个数据库可以是同源的,也可以是异构的。数据同步技术主要包括全量同步和增量同步两种方法,全量同步是一次性将源端数据库中的全部数据同步到目的端数据库,增量同步是将源端数据库与目的端数据库中不同的数据同步到目的端数据库。3.目前实现数据同步的方法如下:在源端数据库中为目标数据添加时间戳字段,当客户端对目标数据进行目标操作时,更新该目标数据对应的时间戳字段,根据时间戳字段记录的时间来确定每次的增量数据范围,进而把增量数据同步到目的端数据库。4.但是该方法需要在源端数据库中为目标数据创建并维护时间戳字段,更改了源端数据库存储数据的结构,而且该时间戳字段无法删除,源端数据库中不仅保存了数据,还保存了目标数据的时间戳字段,尤其在客户端对多个目标数据进行操作时,源端数据库需要创建并维护每个目标数据的时间戳字段,消耗了源端数据库中大量的内存资源。技术实现要素:5.本技术提供了一种数据同步方法、数据同步装置和计算机可读存储介质,用以解决现有技术中源端数据库的时间戳字段无法删除或时间戳字段过多导致源端数据库内存资源消耗过大的问题。6.第一方面,本技术提供一种数据同步方法,该方法包括:接收来自客户端的第一数据库操作语句,该第一数据库操作语句用于指示对源数据库中的目标数据进行目标操作;根据该第一数据库操作语句对该目标数据执行目标操作;根据该第一数据库操作语句,在操作记录表中增加目标数据的操作记录,该目标数据的操作记录用于指示目标操作和目标数据对应的时间戳,目标数据对应的时间戳用于指示对目标数据进行目标操作的时间,操作记录表用于在源数据库中的数据被操作时记录对数据进行的操作和所述操作的执行时间;从操作记录表中获取时间戳位于源数据库上一次同步时间至本次同步时间之间的至少一个操作记录;将对至少一个操作记录指示的数据进行至少一个操作记录指示的操作之后所得的数据确定为所述源数据库的增量数据;将该增量数据同步到目的数据库。7.其中,目标数据的操作记录包括该目标数据在源数据库中的主键信息、目标操作的标识信息和接收第一数据库操作语句的时间,接收第一数据库操作语句的时间和对目标数据进行目标操作的时间基本一致。8.本方法中,运用操作记录表来记录目标数据的操作记录,这样无需在源数据库中增加目标数据对应的时间戳字段,保留了源数据库存储数据的结构,当源数据库中目标数据被操作时,只需要更改操作记录表中该目标数据的操作记录即可,可以避免源数据库中因添加的时间戳字段无法删除导致占用源数据库的内存的问题。另外,在目标数据过多的情况下,本技术不仅可以解决源数据库添加过多的时间戳字段而占用源数据库过多资源的问题,还可以解决源数据库添加过多的时间戳字段而加大源数据库操作难度的问题。9.该方法还包括:根据第一数据库操作语句对目标数据执行目标操作成功,且根据第一数据库操作语句在操作记录表中增加该目标数据的操作记录成功的情况下,向所述客户端发送响应消息,所述响应消息用于指示对该目标数据进行目标操作成功。10.本方法中,在源数据库中目标数据被操作的同时在操作记录表中添加该目标数据的操作记录,只有在对源数据库中的目标数据执行目标操作成功,且操作记录表中增加该目标数据的操作记录成功的情况下,向客户端发送对该目标数据进行目标操作成功的消息,也就是把更新源数据库中的数据和更新操作记录表作为同一个事务来执行,要么两个操作都成功,要么两个操作都失败。这样可以保证源数据库中每一个执行目标操作的数据都被操作记录表记录下来,避免出现源数据库中的数据被执行操作,而操作记录表没有添加该数据的操作记录,导致后续进行数据同步时,增量数据范围缺少该数据,进一步导致该数据没有在目的数据库同步,出现源数据库中的数据没有完全同步到目的数据库的问题。11.结合第一方面,将增量数据同步到目的数据库之后,该方法还包括:将源数据库的上一次同步时间更新为本次同步时间。12.本方法中,根据源数据库的上一次同步时间和本次同步时间,可以确定源数据库本次需要同步的时间段,然后将操作记录表中位于该时间段内的至少一个操作记录所指示的数据进行目标操作之后得到的数据就是源数据库的增量数据,这样直接根据该时间段内的数据就可以快速准确地得到源数据库的增量数据,进一步加快数据同步的时间。13.结合第一方面,将增量数据同步到目的数据库包括:确定至少一个操作记录一一对应的至少一个第二数据库操作语句,该至少一个第二数据库操作语句中每个第二数据库操作语句用于指示对至少一个操作记录中对应的操作记录所指示的数据进行的操作;根据至少一个数据操作语句对目的数据库进行操作。14.本方法中,通过将至少一个操作记录转化为第二数据库操作语句,目的端执行该第二数据库操作语句,即客户端和目的端分别对源端数据库和目的数据库执行相同的操作,相当于客户端对源数据库的操作在目的端回放,从而完成将源数据库的增量数据同步到目的数据库的操作。15.本方法中,第一数据库操作语句与第二数据库操作语句可以为相同数据库语言类型的操作语句。16.当第一数据库操作语句与第二数据库操作语句为相同数据库语言类型的操作语句时,这样可以提高数据同步装置与源数据库和目的数据库之间的兼容性。17.本方法中,第一数据库操作语句与第二数据库操作语句也可以为不同数据库语言类型的操作语句。18.当第一数据库操作语句与第二数据库操作语句为不同数据库语言类型的操作语句时,这样可以避免数据同步装置的实现受限于源数据库和目标数据库的实现语言,进而提高实现数据同步的灵活性。19.第二方面,本技术提供了一种数据同步装置,该装置可以包括用于实现第一方面中的方法的各个功能模块。任意功能模块可以通过软件和/或硬件方式实现。例如,该装置可以包括:接收模块、执行模块和处理模块。其中,接收模块用于接收来自客户端的第一数据库操作语句,第一数据库操作语句用于指示对源数据库中的目标数据进行目标操作;执行模块用于根据第一数据库操作语句对目标数据执行目标操作;处理模块用于根据第一数据库操作语句,在操作记录表中增加目标数据的操作记录,目标数据的操作记录用于指示目标操作和该目标数据对应的时间戳,目标数据对应的时间戳用于指示对该目标数据进行目标操作的时间,操作记录表用于在源数据库中的数据被操作时记录对该数据进行的操作和操作的执行时间;处理模块还用于从操作记录表中获取时间戳位于源数据库上一次同步时间至本次同步时间之间的至少一个操作记录;处理模块还用于将对至少一个操作记录指示的数据进行所述至少一个操作记录指示的操作之后所得的数据确定为源数据库的增量数据;处理模块还用于将所述增量数据同步到目的数据库。20.除此之外,处理模块还可用于所述将所述增量数据同步到目的数据库之后,将所述源数据库的上一次同步时间更新为所述本次同步时间;以及确定所述至少一个操作记录一一对应的至少一个第二数据库操作语句,所述至少一个第二数据库操作语句中每个第二数据库操作语句用于指示对所述至少一个操作记录中对应的操作记录所指示的数据进行的操作;根据所述至少一个数据操作语句对所述目的数据库进行操作。21.第三方面,本技术提供了一种数据同步装置,该装置可以包括用于实现第一方面中的方法的各个功能模块。例如,该装置可以包括存储器,以及与存储器耦合的处理器。22.处理器用于执行程序指令,以实现第一方面中方法所执行的指令;存储器用于存储处理器执行的指令或存储处理器运行指令所需要的输入数据或存储处理器运行指令后产生的数据。23.第四方面,本技术提供一种计算机可读存储介质,该计算机可读介质存储用于处理器执行的程序代码,该程序代码包括用于实现第一方面中的方法的指令。24.第五方面,本技术提供一种计算机程序产品,当该计算机程序产品在处理器上运行时,使得该数据同步装置实现第一方面中的方法。附图说明25.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。26.图1为本技术实施例适用的一种数据同步系统场景示意图;27.图2为本技术一个实施例提供的数据同步方法流程示意图;28.图3为本技术一个实施例提供的操作记录表增加目标数据的操作记录的示意图;29.图4为本技术另一个实施例提供的操作记录表增加目标数据的操作记录的示意图;30.图5为本技术一个实施例提供的数据同步装置示意图;31.图6为本技术另一个实施例提供的数据同步装置示意图。32.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。具体实施方式33.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。34.首先对本技术所涉及的名词进行解释:35.数据库的数据同步技术:是指将一个数据库的数据同步到另一个数据库,假设将数据库1的表同步到数据库2时,则数据库1为源端数据库,数据库2为目的端数据库。36.根据类型的而不同,数据库可分为关系型数据库和非关系型数据库两种。37.关系型数据库:是指采用一种关系模型来组织数据的数据库,这种数据库以行和列的形式存储数据,以便于用户理解,这一系列的行和列被称为表,一组表组成了数据库。常见的关系型数据库包括:oracle数据库、mysql数据库、mariadb数据库、sqlserver数据库、access数据库。关系型数据库采用结构化查询语言(structuredquerylanguage,sql)来对数据库进行操作。38.非关系型数据库:是指采用一种数据结构化的方式来组织数据的数据库,这种数据库可以用文档的方式存储数据,也可以用键值对的方式存储数据。常见的非关系型数据库包括文档数据库、键值存储数据库、列式数据库和图形数据库。非关系型数据库一般采用c 、c、javascript等语言来对数据库进行操作。39.数据库的数据同步可以是同一种类型的两个数据库进行数据同步,例如,将sqlserver数据库中的数据同步到oracle数据库;又如,将文档型数据库中的数据同步到图形数据库中。数据库的数据同步还可以是不同类型的两个数据库进行数据同步,例如,将sqlserver数据库中的数据同步到图形数据库中。40.同源集群:是指该集群中的所有数据库是同源的,该集群中的所有数据库都可以使用一个共同的数据库管理系统软件。41.异构集群:是指该集群中的数据库是异构的,数据库异构指的是不同的数据库具有不同的模式和不同的数据库管理系统软件。42.源端数据库和目的端数据库可以为同源集群中的两个数据库,也可以是异构集群中的两个数据库。43.数据库的数据同步技术主要包括两种方法:全量同步和增量同步。其中,全量同步是指定时或周期性地把源端数据库中的数据全部拷贝到目的端数据库,该方法的优点是程序设计简单,但是当数据量很大的时候,耗时长,无法满足用户快速查询的需求。增量同步是指定时或周期性地将源端数据库与目的端数据库中不同的数据拷贝到目的端数据库中,目的端数据库只对该部分不同的数据进行更新,该方法的优点是同步的数据集小,耗时短,非常适合准实时和实时的系统。44.然而,实际上大部分数据同步系统都为准实时和实时的系统,因此,大多采用增量同步方法来实现数据库的数据同步。45.目前实现数据增量同步的方法有两种:一是基于事务日志,二是基于时间戳。46.其中,基于事务日志的数据增量同步方法是指从源端的数据库中解析出事务日志,然后将该事务日志传送给目的端,目的端执行相应的操作并更新到目的端数据库。该方法可用于实现同源集群中的两个数据库之间的数据同步,例如关系型数据管理系统中的主备复制技术,主将更新数据实时地同步给备,主备的数据必须一致。该方法还适用于两个对等的系统,即源端数据库和目的端数据库维护相同的表,这样日志才可以在目的端数据库正常回放,例如将源端数据库中的数据表a同步到目的端数据库中的数据表b中,当数据表a添加数据表c中的数据时,目的端数据库中也必须维护数据表c的全量数据。因此,基于事务日志的增量同步方法只能适用于同源集群中两个数据库之间的数据同步。47.基于时间戳的数据增量同步方法是指在源端数据库为数据添加一个时间戳字段,该时间戳字段用于指示对该数据进行操作的时间,基于该时间戳字段来确定增量数据范围。48.图1为本技术实施例适用的一种数据同步系统场景示意图。如图1所示,该数据同步系统包括客户端、源端、目的端和同步设备,源端上包括源数据库,目的端上包括目的数据库。同步设备与客户端、源端、目的端之间都可以相互通信。客户端与源端和目的端之间可以相互通信。49.该数据同步系统中,源数据库存储源端的数据,目的数据库存储目的端的数据,源数据库中的数据可以同步到目的数据库中,当源数据库中的数据被更改时,也要将更改的这部分数据同步到目的数据库。50.可以理解的是,源端上的源数据库可以称为源端数据库,目的端上的目的数据库也可以称为目的端数据库。51.同步设备可以接收来自客户端的第一数据库操作语句,该第一数据库操作语句用于指示对源端数据库中的目标数据进行目标操作。另外,同步设备还可以根据第一数据库操作语句对源端数据库中的目标数据执行目标操作,并将目标数据执行目标操作后得到的数据更新到目的端数据库中。52.可选地,源端数据库和目的端数据库可以是同源的,也可以是异构的。53.可选地,源端数据库和目的端数据库可以是两种不同的关系型数据库,也可以是两种不同的非关系型数据库,还可以一个是关系型数据库另一个是非关系型数据库。54.目前的数据同步方法中,当源端数据库中的数据被更改时,添加该数据对应的时间戳字段,然后根据时间戳字段记录的时间来确定每次的增量数据范围。该方法需要为源端数据库中的目标数据创建并维护时间戳字段,改变了源端数据库中存储数据的结构,且该时间戳字段无法删除,导致源端数据库中不仅保存了源端数据库中的数据,还保存了目标数据的时间戳字段,消耗了源端数据库的内存资源,随着源端数据库中被更改的数据的增加,源端数据库中保存的时间戳字段也会不断增加,源端数据库的内存资源也消耗更多。55.因此,如何保证数据库数据增量快速同步的同时,节省源端数据库的内存占用资源,为本领域技术人员亟待解决的技术问题。56.针对现有技术容易消耗源端数据库内存资源的技术问题,本技术提出了一种新的技术方案,该技术方案包括数据同步方法、数据同步装置和计算机可读存储介质。本技术的技术方案不仅可以保留源端数据库中数据的存储结构,而且可以节省源端数据库的内存占用资源。57.本技术中,源端数据库和目的端数据库可以为关系型数据库,也可以为非关系型数据库,当源端数据库和目的端数据库为关系型数据库时,该数据库操作语句指令为sql指令,当源端数据库和目的端数据库为非关系型数据库时,该数据库操作语句指令为其它指令,例如:c 、c、javascript等指令。58.需要说明的是,大数据可应用于多个领域,例如金融领域、医疗领域、交通领域、教育领域等,因此本技术提出的数据同步方法、数据同步装置和计算机可读存储介质不仅可用于实现金融领域中的源端数据库和目的端数据库之间的数据同步,还可应用于除金融领域之外的任意领域,本技术对具体应用领域不做限定。59.下面以源端数据库和目的端数据库均为关系型数据库为例进行说明,此时用于指示源端数据库和目的端数据库进行目标操作的操作指令均为sql指令。60.图2为本技术一个实施例提供的数据同步方法流程示意图,如图2所示,该数据同步方法包括:步骤201、步骤202、步骤203、步骤204、步骤205和步骤206。该方法可以由图1所示系统中的同步设备实现。61.步骤201,接收来自客户端的第一数据库操作语句,该第一数据库操作语句用于指示对源端数据库中的目标数据进行目标操作。62.该源端数据库为关系型数据库,因此该源端数据库以数据表的形式来存储数据,指示该源端数据库进行目标操作的操作指令为sql指令。63.该第一数据库操作语句可以包括:删除(delete)指令、更新(update)指令、添加(insert)指令和替代(replace)指令。例如,当该第一数据库操作语句为deletefromtablecwherekey=‘key2’时,key为主键,则该源端数据库中的源数据表为“tablec”,目标数据为主键值为“key2”的数据,目标操作为删除目标数据。64.又如,当该第一数据库操作语句为updatetablecsetcol1=‘values’wherekey=‘key1’时,则该源端数据库中的源数据表为“tablec”,目标数据为主键值为“key2”且列名为“roll”的数据,目标操作为将目标数据更新为“values”。替代指令和更新指令类似,故不再赘述。65.再如,当该第一数据库操作语句为insertintotablecselect*fromtableajointableb时,则该源端数据库中的源数据表为“tablec”,目标数据为“tablea”和“tableb”的两个数据表中的数据,目标操作为将目标数据添加到源数据表。66.可以理解的是,接收来自客户端的第一数据库操作语句之前,客户端先对该第一数据库语句进行解析和拦截。其中,解析是指运用语法分析器生成工具和语法分析器生成器将第一数据库操作语句解析为对应的语法树,获取第一数据库操作语句中的表名、列名等信息。拦截是指客户端支持配置过滤器,即只拦截已配置的用户和表的信息,将解析出来的符合配置的第一数据库操作语句记录保留,过滤器不仅可以用于验证客户端是否来自可信的网络,还可以过滤客户端某些不应该出现的词汇、验证用户是否登录、验证客户的浏览器是否支持当前的应用、以及记录系统的日志等等。67.本实施例中,接收到来自客户端的第一数据库操作语句可以是一个,也可以是多个。当只接收到一个第一数据库操作语句时,直接记录该第一数据库操作语句;当接收到多个第一数据库操作语句时,可以先将接收到这多个第一数据库操作语句按提交时间序列排序,然后进行记录,也可以直接记录这多个第一数据库操作语句指令。68.本实施例中,当接收到来自客户端的第一数据库操作语句为多个时,这多个第一数据库操作语句可以指示对该数据库中不同数据表中的数据进行操作。69.步骤202,根据第一数据库操作语句对目标数据执行目标操作。70.根据第一数据库操作语句对目标数据执行目标操作指的是根据第一数据库操作语句的指示信息对源数据表中的目标数据进行目标操作。例如,当该数据库操作语句为deletefromtablecwherekey=‘key2’时,删除表名为“tablec”的源数据表中主键值为“key2”的数据。71.又如,当该第一数据库操作语句为updatetablecsetcol1=‘values’wherekey=‘key1’时,将表名为“tablec”的源数据表中主键值为“key1”且列名为“col1”的数据更新为“values”。72.再如,当该第一数据库操作语句为insertintotablecselect*fromtableajointableb时,将表名分别为“tablea”和“tableb”的两个数据表中的数据添加到表名为“tablec”的源数据表中。73.步骤203,根据第一数据库操作语句,在操作记录表中增加目标数据的操作记录。74.目标数据的操作记录包括该目标数据在源数据表中的主键信息、该目标操作的标识信息和接收所述第一数据库操作语句的时间。75.目标数据的操作记录用于指示目标操作和目标数据对应的时间戳,该目标数据对应的时间戳用于指示对该目标数据进行该目标操作的时间,该操作记录表用于在源数据表中的数据被操作时记录对该数据进行的操作和操作的执行时间。76.可以理解的是,接收第一数据库操作语句的时间和目标数据被操作时记录的执行时间大体一致,故接收第一数据库操作语句的时间基本等于目标数据被操作时记录的执行时间。77.操作记录表中增加目标数据的操作记录可以包括两种类型:一种是带删除标记的,即第一数据库操作语句为删除指令;另一种是带值的,即第一数据库操作语句为更新指令、添加指令和代替指令中的至少一种指令。78.图3为本技术一个实施例提供的操作记录表增加目标数据的操作记录的示意图,其中,(a)表示一个源数据表,该源数据表中包括表名、列名以及存储的数据,(b)表示对该源数据表中的数据进行目标操作后得到的更新后的源数据表,(c)表示对该源数据表进行目标操作之前,该源数据表所对应的操作记录表,(d)对该源数据表中的数据进行目标操作后得到的更新后的操作记录表。79.如图3所示,假设该源数据表的表名为“表c(tablec)”,该源数据表的列包括编号(id)、姓名(name)和分数(score),其中编号为该源数据表的主键,编号对应的数据为该源数据表的主键值,该源数据表的主键值分别为01、02和03。80.假如客户端发送的第一数据库操作语句为deletefromtablecwhereid=‘03’,该第一数据库操作语句指示对表名为“表c”的源数据表中编号为03的数据进行删除,此时目标数据为“编号为03的数据”,目标操作为“删除”,对该源数据表执行该目标操作后,源数据表由(a)更新为(b),此时源数据表中不存在编号为03的数据。81.可以理解的是,该源数据表中包含至少一个主键值,每个主键值都有一个对应的姓名值和分数值。82.对源数据表执行该目标操作之前,源数据表所对应的操作记录表如(c)所示,此时由于还未删除源数据表中编号为03的数据,故该操作记录表中只有主键值没有操作记录,当对源数据表执行该目标操作后,源数据表所对应的操作记录表如(d)所示,此时该操作记录表中记录了主键值以及对源数据表中编号为03的数据进行目标操作的操作记录,该操作记录中包括指示源数据表进行目的操作的操作标识和对目标数据执行目标操作对应的时间戳,该操作标识为删除标识,该目标数据对应的时间戳为20210614163023。83.因此,当客户端发送的第一数据库操作语句为删除指令时,对源数据表执行目标操作后,源数据表中的目标数据删除,操作记录表中没有删除该目标数据所对应的主键值,而是在该主键值后面添加了删除标识和对目标数据执行删除操作的时间戳。84.图4为本技术另一个实施例提供的操作记录表增加目标数据的操作记录的示意图,其中,(a)表示一个源数据表,该源数据表中包括表名、列名以及存储的数据,(b)表示对该源数据表中的数据进行目标操作后得到的更新后的源数据表,(c)表示对该源数据表进行目标操作之前,该源数据表所对应的操作记录表,(d)对该源数据表中的数据进行目标操作后得到的更新后的操作记录表。85.如图4所示,假设该源数据表的表名为“表c”,该源数据表的列包括编号、姓名和分数,其中编号为该源数据表的主键,编号对应的数据为该源数据表的主键值,该源数据表的主键值分别为01、02和03。86.假如客户端发送的第一数据库操作语句为updatetablecsetscore=‘88’whereid=‘02’,该第一数据库操作语句指示将表名为“表c”的源数据表中编号02的分数更新为88,此时目标数据为“编号02的分数”,目标操作为“更新为88”,对该源数据表执行该目标操作后,源数据表由(a)更新为(b),此时源数据表中编号02的分数已更新为88。87.对源数据表执行该目标操作之前,源数据表所对应的操作记录表如(c)所示,此时操作记录表中只有主键值没有操作记录,当对源数据表执行该目标操作后,源数据表所对应的操作记录表如(d)所示,此时该操作记录表中记录了主键值以及对源数据表中编号为02的分数进行目标操作的操作记录,该操作记录中包括指示源数据表进行目的操作的操作标识和对目标数据执行目标操作对应的时间戳,该操作标识为分数更新为88,该目标数据对应的时间戳为20210614163024。88.因此,当客户端发送的第一数据库操作语句为更新指令时,对源数据表执行目标操作后,源数据表中的目标数据更新,操作记录表中添加了对目标数据执行目标操作的操作标识和对目标数据执行目标操作的时间戳。89.本实施例中,当客户端发送的第一数据库操作语句为添加指令或代替指令时,操作记录表中添加的目标数据的操作记录与更新指令类似,故不再赘述。90.本实施例中,当对源数据表中的目标数据执行目标操作且在操作记录表中增加该目标数据的操作记录均成功的情况下,向客户端发送响应消息,该响应消息用于指示对该目标数据进行目标操作成功。91.可以理解的是,本技术给出的实施例是对源数据表中的目标数据进行一次目标操作时,操作记录表增加目标数据的操作记录的情况,而实际上客户端可能对该源数据表中的多个目标数据进行操作,此时该源数据表所对应的操作记录表中增加这多个目标数据的操作记录,该操作记录表添加操作记录时可以按时间戳的顺序添加,也可以按照源数据表中主键的排列顺序进行添加。操作记录表中增加目标数据的操作记录的个数与对源数据表中的目标数据执行目标操作的次数一致。92.需要说明的是,本技术中操作记录表主要适用于根据源数据表的主键信息来更新源数据表的目标数据的情况,而实际上根据源数据表的非主键信息来更新源数据表的目标数据的使用范围较小,故本技术对实际使用无太大影响。93.本实施例中,运用多个操作记录表添加源端数据库中的数据的操作记录,此时每个源数据表都对应一个操作记录表。可选地,还可以运用一个操作记录表来添加该源端数据库中每个数据的操作记录,不同的是操作记录表中还需要添加源数据表的信息。94.步骤204,从操作记录表中获取时间戳位于源端数据库上一次同步时间至源端数据库本次同步时间之间的至少一个操作记录。95.从操作记录表中获取时间戳位于源端数据库上一次同步时间至源端数据库本次同步时间之间的至少一个操作记录的一种实现方式为:96.增加同步时间戳,该同步时间戳用于记录源端数据库每次进行增量数据同步的时间,当前对源端数据库进行增量数据同步的时间为本次同步时间,上一次对源端数据库进行增量数据同步的时间为上一次同步时间。将操作记录表中记录的执行目标操作的时间戳与源端数据库的本次同步时间、上次同步时间进行对比,如果操作记录表中有位于源端数据库上一次同步时间至本次同步时间之间的时间戳,则获取该时间戳所对应的操作记录。97.可以理解的是,操作记录表中位于源端数据库上一次同步时间至本次同步时间之间的时间戳可能有一个,可能有多个,也可能没有。当操作记录表中没有位于源端数据库上一次同步时间至本次同步时间之间的时间戳时,说明源端数据库在上一次同步时间至本次同步时间之间的时间段内没有更改过,即没有对源端数据库中数据进行操作的操作记录。98.步骤205,将对至少一个操作记录指示的数据进行目标操作之后所得的数据确定为源端数据库的增量数据。99.当操作记录表按时间戳顺序添加操作记录时,直接将对获取的这至少一个操作记录指示的数据进行目标操作之后所得的数据确定为源端数据库的增量数据。100.当操作记录表按源数据表的主键顺序添加操作记录时,确定源端数据库的增量数据的有以下两种可能的实现方式。101.在一种可能的实现方式中,将获取的至少一个操作记录按时间顺序进行排序,对排序后的至少一个操作记录中每个操作记录所指示的目标数据进行相应的目标操作,进行目标操作后所得的这部分数据确定为源端数据库的增量数据。102.在另一种可能的实现方式中,按照操作记录表添加目标数据操作记录的顺序(可以是从上到下的顺序,也可以是从下到上的顺序),将获取的至少一个操作记录中每个操作记录所指示的目标数据进行相应的目标操作,进行目标操作后所得的这部分数据确定为源端数据库的增量数据。103.步骤206,将源端数据库的增量数据同步到目的端数据库。104.将源端数据库的增量数据同步到目的端数据库的实现方式包括:根据操作记录表中增加的至少一个操作记录,将增加的至少一个操作记录转换为各自对应的第二数据库操作语句,该第二数据库操作语句用于指示对应的操作记录所指示的数据进行的操作;根据第二数据操作语句对所述目的端数据库进行操作。105.可以理解的是,该第二数据库操作语句是用于指示目的端数据库进行操作的语句。106.操作记录表中添加的操作记录包括两种类型:一种是带删除标记的操作记录,另一种是不带删除标记的操作记录。107.当操作记录带删除标记时,将该操作记录转换为删除指令的第二数据库操作语句。假设目的端数据库中的目的数据表为“tablec_dest”,该目的数据表用于保存源端数据库中表名为“tablec”的源数据表的数据,操作记录表中添加的操作记录为删除编号03的数据,则此时转换的第二数据库操作语句为:deletefromtablec_destwhereid=‘03’。108.当操作记录不带删除标记时,将该操作记录转换为对应的第二数据库操作语句。假设目的端数据库中的目的数据表为“tablec_dest”,该目的数据表用于保存源端数据库中表名为“tablec”的源数据表的数据,操作记录表中添加的操作记录为将编号02的分数更改为88,则此时转换的第二数据库操作语句为:updatetablec_destsetscore=‘88’whereid=‘02’。109.本实施例中,操作记录表中可以添加的目标数据的操作记录,也可以删除添加的目标数据的操作记录。当源端数据库的源数据表中有数据不断更新时,即源端数据库中一直有增量数据需要同步时,可以对操作记录表进行定期清理,清理时间戳不在本次同步时间内的操作记录;当源端数据库的源数据表中的数据不再更新时,即源端数据库中不再有增量数据需要同步时,删除该操作记录表中的操作记录。110.可以理解的是,本实施例中的源端数据库和目的端数据库均为关系型数据库,对远端数据库和目的端数据库进行操作的数据库操作语言为sql语言,当远端数据库和目的端数据库为非关系型数据库时,对远端数据库和目的端数据库进行操作的数据库操作语言为其他语言。111.本技术的数据同步方法中,运用操作记录表来记录数据的操作记录,当客户端对源端数据库上的源数据表中的目标数据进行目标操作时,操作记录表添加该目标数据的操作记录,该目标数据的操作记录包括该目标数据在源端数据库中的主键信息、目标操作的标识信息和接收所述第一数据库操作语句的时间,接收所述第一数据库操作语句的时间与目标数据进行目标操作的时间基本一致。112.本技术的数据同步方法中,在操作记录表中增加操作记录和时间戳,由于操作数据表与源端数据库中的源数据表不是同一个表,因此不需要改变源数据表的结构,当源数据表中的数据被更改时,只需要对操作记录表中的操作记录和时间戳进行更新即可,这样不仅可以保留源数据表的结构,还可以避免源数据表中因添加的时间戳字段无法删除,导致源端数据库中保存的数据量不断增加,进而消耗源端数据库的内存资源的问题。113.图5为本技术一个实施例提供的数据同步装置示意图,如图5所示,数据同步装置500包括:接收模块501、执行模块502和处理模块503。114.作为一个示例,数据同步装置500可以用于实现图2所示实施例的数据同步方法流程示意图。其中,接收模块501用于接收来自客户端的第一数据库操作语句,该第一数据库操作语句用于指示对源端数据库中的目标数据进行目标操作。执行模块502用于根据第一数据库操作语句对目标数据执行目标操作。处理模块503用于对操作记录表以及增量数据进行处理的步骤,例如,处理模块503用于实现根据第一数据库操作语句,在操作记录表中增加目标数据的操作记录的步骤;处理模块503还用于从操作记录表中获取时间戳位于源端数据库上一次同步时间至源端数据库本次同步时间之间的至少一个操作记录,并基于至的关系。121.可以理解的是,在本技术的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本技术的实施例的范围。122.可以理解的是,在本技术的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术的实施例的实施过程构成任何限定。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本
技术领域
:中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。123.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献