一种数据同步方法、装置、系统、计算机可读存储介质与流程
未命名
08-14
阅读:125
评论:0
1.本发明涉及大数据处理技术领域,具体涉及一种数据同步方法、装置、系统、计算机可读存储介质。
背景技术:
2.在数据库的实时复制过程中,源端数据库不断产生新的dml数据,每条变更语句都需要投递到目标端执行。如果源端发生大批量数据变更或数据导入,会在短时间内产生大量日志,复制链路将一条条执行语句发送到目标端,性能很慢,会导致链路延时增大。这时可以通过打开攒批来实现批量写入,但攒批意味着要等待积攒的条数达到阈值或时间超过阈值,才触发提交,这对于正常同步(非批量变更)场景下又会导致复制链路的延时被人为加大。
3.业界对于批量数据变更在复制链路中的优化,主要是提供批量提交能力,当源库发生批量数据变更导致链路延时时,需要由用户或产品侧通过后台打开批量提交开关,这是一种滞后的处理方式,打开前,链路延时已经发生,队列待提交语句已经生成无法再合并。打开后当批量语句执行完,对于正常同步(非批量变更)场景下又会导致复制链路的延时因为攒批机制而被人为加大。在逐条提交和批量攒批之间,通过人为设置打开或关闭批量提交,不适合动态的生产数据场景。
技术实现要素:
4.本发明针对现有技术中的缺点,提供了一种数据同步方法、装置、系统、计算机可读存储介质,解决了数据同步过程中,现有批量提交和非批量提交方法中存在延时的问题。
5.为了解决上述技术问题,本发明通过下述技术方案得以解决:
6.一种数据同步方法,包括以下步骤:
7.将相同列表的数据操纵语言语句投递至相同队列,并获取相同队列内,相近的两组数据操作语言语句;
8.判断两组所述数据操纵语言语句是否为插入或删除,若是,则判断两组所述数据操纵语言语句是否为相同操作类型,反之则进行不合并计数处理;
9.基于相同/不同操作类型的判断结果,进行合并/不合并计数处理,并根据计数处理的结果,调节合并提交开关的开闭。
10.可选的,合并/不合并计数处理,包括以下步骤:
11.当两组所述数据操纵语言语句为相同操作类型时,则合并计数加“1”处理;
12.当两组所述数据操纵语言语句为不用操作类型时,则不合并计数加“1”处理,同时合并计数清零。
13.可选的,调节合并提交开关的闭合,包括以下步骤:
14.设定启动合并阈值,判断所述合并计数是否大于启动合并阈值;
15.若是,则打开合并提交开关,同时不合并计数清零设置,反之则不调节合并提交开
关。
16.可选的,调节合并提交开关的闭合,还包括以下步骤:
17.设定关闭合并阈值,判断所述不合并计数是否大于关闭合并阈值;
18.若是,则关闭合并提交开关,同时合并计数清零设置,反之则不调节合并提交开关。
19.可选的,所述数据操纵语言语句包括插入、更新和删除操作。
20.可选的,还包括以下步骤:
21.根据表名判断所有数据操纵语言语句,并将表名相同的数据操纵语言语句根据先后顺序归集到相同列表。
22.可选的,在进行合并计数处理时,将处于同一列表内的多条相邻且相同的数据操纵语言语句进行合并处理。
23.一种数据同步装置,所述数据同步装置用于执行如上述任意一项所述的数据同步方法,包括源端、合并计数器、不合并计数器、合并提交开关以及目标端;
24.所述源端用于发送数据操纵语言语句;
25.所述合并计数器用于根据相近的两组数据操作语言语句的操作类型,进行合并计数处理;
26.所述不合并计数器用于根据相近的两组数据操作语言语句的操作类型,进行不合并计数处理;
27.所述合并提交开关用于根据合并计数器的数值/不合并计数器的数值,调节开闭;
28.所述目标端用于接收源端发送的数据操纵语言语句。
29.一种数据同步系统,包括队列分配单元、类型判断单元和合并调节单元;
30.所述队列分配单元,将相同列表的数据操纵语言语句投递至相同队列,并获取相同队列内,相近的两组数据操作语言语句;
31.所述类型判断单元,判断两组所述数据操纵语言语句是否为插入或删除,若是,则判断两组所述数据操纵语言语句是否为相同操作类型,反之则进行不合并计数处理;
32.所述合并调节单元,基于相同/不同操作类型的判断结果,进行合并/不合并计数处理,并根据计数处理的结果,调节合并提交开关的开闭。
33.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现上述任意一项所述的数据同步方法。
34.采用本发明提供的技术方案,与现有技术相比,具有如下有益效果:
35.通过在复制链路中设计两个计数功能,使得从源端获取日志放入队列后,只需等计数完成后,再放入下一条,这样就可以实现当超过启动合并阈值时,可合并记录插入队列,合并提交开关自动打开,而当后续插入数据超过关闭合并阈值不能合并时,合并提交开关自动关闭,实现自动开关机制;同时,自动开关机制,有效避免了当数据延时后再去紧急打开的滞后问题,也避免了在正常同步过程中因为攒批阈值未触发导致的人为延时增加。
附图说明
36.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
37.图1为本实施例一提出的一种数据同步方法的流程图。
具体实施方式
38.下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
39.实施例一
40.如图1所示,一种数据同步方法,用于判断源端是否是发生批量变更,并在复制链路提交语句之前完成语句合并,从而降低链路与目标库之间的来回网络交互,当批量变更语句执行完,自动切回正常的逐条语句提交模式,其中,一般关系数据同步中最多的是dml(data manipulation language,数据操纵语言)语句,分为插入(insert)、更新(update)、删除(delete)三种,业务可能随机产生这三种操作,也可能在数据导入、批量数据订正、历史数据删除等场景下产生批量数据变更,其中源端发生批量数据导入,或者历史数据批量删除操作,这种周期性的导入或删除数据,是出现批量数据变更的主要场景。
41.进一步地,首先根据表名判断所有数据操纵语言语句,并将表名相同的数据操纵语言语句根据先后顺序轨迹到相同列表,然后将相同列表的数据操纵语言语句投递至相同队列,并获取相同队列内,相近的两组数据操作语言语句,具体地,对于任意的dml,进行复制队列前,先根据库名和表名打散到以“库名.表名”命名的list(列表)里面,这样属于同一张表的dml就都在一起。
42.然后,判断两组数据操纵语言语句是否为插入或删除,若是,则判断两组数据操纵语言语句是否为相同操作类型,即是否都为插入或都为删除,若是,则为相同操作类型,反之则为不同操作类型,进行不合并计数处理,具体地,当两组数据操纵语言语句为相同操作类型时,则合并计数加“1”处理;当两组数据操纵语言语句为不用操作类型时,则不合并计数加“1”处理,同时合并计数清零,更具体地,根据最近两个dml操作,判断是否都是insert/delete,如果都属于插入或都属于删除,则是可以合并的操作,合并计数(canenablemerge)加“1”,否则不合并计数(notenablemerge)加“1”,并将合并计数清零,从而,当遇到一次不能合并的语句时,合并计数器就会重新累计,以较为严格的要求来筛选出现概率少的大批量操作场景。
43.进一步地,需基于相同/不同操作类型的判断结果,进行合并/不合并计数处理,并根据计数处理的结果,调节合并提交开关的开闭,其中,调节合并提交开关的闭合,包括以下步骤:设定启动合并阈值,判断合并计数是否大于启动合并阈值;若是,则打开合并提交开关,同时不合并计数清零设置,反之则不调节合并提交开关;设定关闭合并阈值,判断不合并计数是否大于关闭合并阈值;若是,则关闭合并提交开关,同时合并计数清零设置,反之则不调节合并提交开关。
44.具体地,当合并计数到达一定阈值时,即达到启动合并阈值时,可以启动合并开关,在本实施例中可以将启动合并阈值设置为10,此时,则将10条以上的语句合并为一条操作语句,从而达到明显的写入优化效果;另一方面,当合并计数(canenablemerge)累计超过10时,则表示批量相同投递,需要合并,可以打开合并提交开关。
45.在批量操作完成后,由于需要自动探测并关闭合并开关,因此设定关闭合并阈值,当不合并计数的累计值超过关闭合并阈值时,表示非批量投递,则可以关闭合并开关,例如,累计出现10条不能合并的数据操作语句时,将合并开关关闭,并将合并计数清0,以让下次探测到的可批量合并操作重新计数和启动合并。
46.从而使得每一个放入到队列中的dml操作,马上会进行计数计算,然后放入下一条,进而实现超过启动合并阈值的可合并记录插入队列后,合并提交开关自动打开,而当后续数据操作有超过关闭合并阈值的不能合并时,合并提交开关自动关闭,并最终达到精准控制语句合并的目的。
47.需要说明的是,在进行合并计数处理时,当处于同一列表内存在多条相邻且相同的数据操纵语言语句时,也可需进行合并处理,以提高效率。
48.实施例二
49.一种数据同步装置,数据同步装置用于执行如实施例一任意一项所述的数据同步方法,包括源端、合并计数器、不合并计数器、合并提交开关以及目标端;源端用于发送数据操纵语言语句;合并计数器用于根据相近的两组数据操作语言语句的操作类型,进行合并计数处理;不合并计数器用于根据相近的两组数据操作语言语句的操作类型,进行不合并计数处理;合并提交开关用于根据合并计数器的数值/不合并计数器的数值,调节开闭;目标端用于接收源端发送的数据操纵语言语句。
50.需要说明的是,本实施例为执行实施例一所述的数据同步方法的硬件装置,执行步骤与实施例一相同,因此在本实施例中不做详细赘述。
51.实施例三
52.一种数据同步系统,包括队列分配单元、类型判断单元和合并调节单元;所述队列分配单元,将相同列表的数据操纵语言语句投递至相同队列,并获取相同队列内,相近的两组数据操作语言语句;所述类型判断单元,判断两组所述数据操纵语言语句是否为插入或删除,若是,则判断两组所述数据操纵语言语句是否为相同操作类型,反之则进行不合并计数处理;所述合并调节单元,基于相同/不同操作类型的判断结果,进行合并/不合并计数处理,并根据计数处理的结果,调节合并提交开关的开闭。
53.由于本实施例的数据同步系统执行如实施例一所述的数据同步方法,因此在本实施例中,不再重复赘述执行的过程。
54.一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时,实现实施例一任意一项所述的数据同步方法。
55.计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线段的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
56.在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何
计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线段、电线段、光缆、rf等等,或者上述的任意合适的组合。
57.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块、模组或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元、模组或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。
58.所述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
59.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
60.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(cpu)执行时,执行本技术的方法中限定的上述功能。需要说明的是,本技术上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。
61.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
62.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种数据同步方法,其特征在于,包括以下步骤:将相同列表的数据操纵语言语句投递至相同队列,并获取相同队列内,相近的两组数据操作语言语句;判断两组所述数据操纵语言语句是否为插入或删除,若是,则判断两组所述数据操纵语言语句是否为相同操作类型,反之则进行不合并计数处理;基于相同/不同操作类型的判断结果,进行合并/不合并计数处理,并根据计数处理的结果,调节合并提交开关的开闭。2.根据权利要求1所述的一种数据同步方法,其特征在于,合并/不合并计数处理,包括以下步骤:当两组所述数据操纵语言语句为相同操作类型时,则合并计数加“1”处理;当两组所述数据操纵语言语句为不用操作类型时,则不合并计数加“1”处理,同时合并计数清零。3.根据权利要求2所述的一种数据同步方法,其特征在于,调节合并提交开关的闭合,包括以下步骤:设定启动合并阈值,判断所述合并计数是否大于启动合并阈值;若是,则打开合并提交开关,同时不合并计数清零设置,反之则不调节合并提交开关。4.根据权利要求2所述的一种数据同步方法,其特征在于,调节合并提交开关的闭合,还包括以下步骤:设定关闭合并阈值,判断所述不合并计数是否大于关闭合并阈值;若是,则关闭合并提交开关,同时合并计数清零设置,反之则不调节合并提交开关。5.根据权利要求1所述的一种数据同步方法,其特征在于,所述数据操纵语言语句包括插入、更新和删除操作。6.根据权利要求1所述的一种数据同步方法,其特征在于,还包括以下步骤:根据表名判断所有数据操纵语言语句,并将表名相同的数据操纵语言语句根据先后顺序归集到相同列表。7.根据权利要求6所述的一种数据同步方法,其特征在于,在进行合并计数处理时,将处于同一列表内的多条相邻且相同的数据操纵语言语句进行合并处理。8.一种数据同步装置,其特征在于,所述数据同步装置用于执行如权利要求1-7任意一项所述的数据同步方法,包括源端、合并计数器、不合并计数器、合并提交开关以及目标端;所述源端用于发送数据操纵语言语句;所述合并计数器用于根据相近的两组数据操作语言语句的操作类型,进行合并计数处理;所述不合并计数器用于根据相近的两组数据操作语言语句的操作类型,进行不合并计数处理;所述合并提交开关用于根据合并计数器的数值/不合并计数器的数值,调节开闭;所述目标端用于接收源端发送的数据操纵语言语句。9.一种数据同步系统,其特征在于,包括队列分配单元、类型判断单元和合并调节单元;所述队列分配单元,将相同列表的数据操纵语言语句投递至相同队列,并获取相同队
列内,相近的两组数据操作语言语句;所述类型判断单元,判断两组所述数据操纵语言语句是否为插入或删除,若是,则判断两组所述数据操纵语言语句是否为相同操作类型,反之则进行不合并计数处理;所述合并调节单元,基于相同/不同操作类型的判断结果,进行合并/不合并计数处理,并根据计数处理的结果,调节合并提交开关的开闭。10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1-7任意一项所述的数据同步方法。
技术总结
本发明涉及大数据处理技术领域中的一种数据同步方法、装置、系统、计算机可读存储介质,包括以下步骤:将相同列表的数据操纵语言语句投递至相同队列,并获取相同队列内,相近的两组数据操作语言语句;判断两组数据操纵语言语句是否为插入或删除,若是,则判断两组数据操纵语言语句是否为相同操作类型;基于相同/不同操作类型的判断结果,进行合并/不合并计数处理,并根据计数处理的结果,调节合并提交开关的开闭,解决了数据同步过程中,现有批量提交和非批量提交方法中存在延时的问题。量提交和非批量提交方法中存在延时的问题。量提交和非批量提交方法中存在延时的问题。
技术研发人员:叶正盛 陈长城
受保护的技术使用者:玖章算术(浙江)科技有限公司
技术研发日:2023.05.29
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
