一种数据同步方法、系统、装置及可读存储介质与流程

专利2023-02-24  117

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.若所述判定结果表明所述待判定数据满足所述同步条件,则将所述待判定数据同步至目标端数据库。27.第三方面,本发明实施例还提供了一种数据同步装置,包括:28.读取单元,用于读取用户预设的同步条件;29.生成单元,用于对所述同步条件进行语法解析,生成抽象语法树;30.判定单元,用于提取所述抽象语法树中的条件部分作为判定模板,对待判定数据进行判定,获得判定结果,其中,所述待判定数据为通过解析所述源端数据库的日志文件所获得的增量数据;31.同步单元,用于若所述判定结果表明所述待判定数据满足所述同步条件,则将所述待判定数据同步至目标端数据库。32.在其中一种可能的实现方式中,所述判定单元用于:33.识别出所述判定模板中所包括的字段名和字面常量;34.判断所述待判定数据的字段名是否与所述判定模板中所包括的字段名相同;35.若相同,则用所述待判定数据的字段名对应的字面常量替换所述判定模板中相应的字段名;36.若所述判定模板中的所有字段名均被替换,则生成一颗条件树,并将所述条件树转化为仅包括字面常量的表达式;37.获得所述表达式的求值结果,并将所述求值结果作为判定结果。38.在其中一种可能的实现方式中,在所述判定单元用所述待判定数据的字段名对应的字面常量替换所述判定模板中相应的字段名之后,还用于:39.若所述判定模板中至少一个字段名未被替换,则所述判定结果表明所述待判定数据不满足所述同步条件。40.在其中一种可能的实现方式中,所述判定单元用于:41.用包括多个结构体的数组表示所述待判定数据,其中,各个所述结构体包括相应的字段名和字面常量;42.遍历所述数组,判断所述数组中所包括的各个字段名是否与所述判定模板中所包括的字段名相同。43.第四方面,本发明实施例还提供了一种数据同步装置,所述数据同步装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前面任一项所述的数据同步方法的步骤。44.第五方面,本发明实施例还提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前面任一项所述的数据同步方法的步骤。45.本发明的有益效果如下:46.本发明提供了一种数据同步方法、系统、装置及可读存储介质;首先,读取用户预设的同步条件;然后,对该同步条件进行语法解析,生成抽象语法树;然后,提取抽象语法树中的条件部分作为判定模板,对待判定数据进行判定,获得判定结果,其中,待判定数据为通过解析源端数据库的日志文件所获得的增量数据;这样的话,可以根据从抽象语法树中所提取的判定模板,对直接解析日志文件所获得的待判定的增量数据是否需要进行同步进行判定,整个判定过程不需要反查数据库,也不需要调用数据库引擎;在判定结果表明满足同步条件时,将待判定的增量数据同步至目标端数据库。如此一来,提高了基于日志解析的增量数据按条件同步的效率,避免了某些历史数据在当前数据库已经不存在,无法反查的问题。附图说明47.图1为本发明实施例提供的一种数据同步方法所适用的数据同步系统的其中一种结构示意图;48.图2为本发明实施例提供的一种数据同步方法的方法流程图;49.图3为图1中步骤s103的其中一种方法流程图;50.图4为图3中步骤s202的其中一种方法流程图;51.图5为本发明实施例提供的一种数据同步方法中抽象语法树的其中一种结构示意图;52.图6为本发明实施例提供的一种数据同步方法中判定模板的其中一种结构示意图;53.图7为本发明实施例提供的一种数据同步方法中条件树的其中一种结构示意图;54.图8为本发明实施例提供的一种数据同步系统的其中一种结构示意图;55.图9为本发明实施例提供的一种数据同步装置的其中一种结构示意图。具体实施方式56.本发明的说明书和权利要求书及上述附图中的“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。57.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。58.为了更好的理解上述技术方案,下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。59.在相关技术中,当下主流的数据库增量同步技术要么基于对源端日志的解析,要么由数据库自身提供的数据变更追踪应用程序接口(applicationprogramminginterface,api)来实现。在实现按条件同步功能方面配置繁琐,无法实现灵活的条件组合。60.鉴于此,本发明实施例提供了一种数据同步方法、系统、装置及可读存储介质,用于实现增量数据按条件同步的效率。61.在介绍本发明实施例提供的数据同步方法之前,对该数据同步方法所适用的数据同步系统进行简要的说明。如图1所示为数据同步系统的其中一种结构示意图。结合图1所示,该数据同步系统包括源端数据库、目标端数据库、管理节点集群、同步节点集群和协调器集群。其中,源端数据库支持分布式关系型数据库、分布式文件系统和非结构化数据库等。目标端数据库支持分布式关系型数据库、分布式文件系统和非结构化数据库等。同步节点集群包括至少一个同步节点,每个同步节点包括至少一个任务(task)节点。管理节点集群用于数据核对配置,推送数据核对配置到核对节点;同时接收核对节点反馈回来的数据同步状态、进度等信息;同步节点集群为执行具体数据核对过程的模块;协调器集群用于协调数据核对的模块。本发明实施例中所提及的“同步工作节点”可以是同步节点集群中的其中一个模块。通过该数据同步系统可以读取用户在其上设定的同步条件,可以对该同步条件进行语法解析,生成抽象语法树,并提取抽象语法树中的条件部分作为判定模板,从而基于该判定模板对源端数据库中的待判定的增量数据进行判定,进而根据判定结果确定该增量数据是否满足同步条件,在满足时,将该增量数据同步至目标端数据库,从而实现了对增量数据按条件进行同步的技术效果。对于图1中数据同步系统中数据同步的具体实现过程可以参照下文相关部分的描述,在此不做详述。62.如图2所示,本发明实施例提供了一种数据同步方法,包括:63.s101:读取用户预设的同步条件;64.在具体实施过程中,可以读取用户在数据同步系统上设定的同步条件。该同步条件需要满足基本的结构化查询语言(structuredquerylanguage,sql)语法,而且不支持特定数据库类型具有的函数,比如,postgresql数据库的cast函数,oracle数据库的to_date函数等。65.s102:对所述同步条件进行语法解析,生成抽象语法树;66.在具体实施过程中,可以调用开源sql语法离线解析工具对同步条件进行语法解析,生成抽象语法树。比如,使用antlr、druid等开源sql解析引擎解析同步条件,生成抽象语法树,还可以识别出库名、表名、字段名、字段别名、where、条件(conditions)等元信息。如此一来,本发明实施例所提供的数据同步方法可以兼容通用的sql语法。67.s103:提取所述抽象语法树中的条件部分作为判定模板,对待判定数据进行判定,获得判定结果,其中,所述待判定数据为通过解析所述源端数据库的日志文件所获得的增量数据。68.在具体实施过程中,可以提取抽象语法树中的条件部分对应的语法树作为判定模板。然后,根据该判定模板对待判定数据进行判定,从而获得判定结果。待判定数据可以为通过解析源端数据库的日志文件所获得的增量数据。增量数据可以是在当前时刻以后写入的数据,其中,当前时刻可以是源端数据库实时传输待判定数据的时刻。由于从抽象语法树中所提取的判定模板,可以对直接解析日志文件所获得的待判定的增量数据是否需要进行同步进行判定,这样的话,整个判定过程不需要反查数据库,也不需要调用数据库引擎,从而提高了基于日志解析的增量数据按条件同步的效率,避免了某些历史数据在当前数据库已经不存在,无法反查的问题。69.s104:若所述判定结果表明所述待判定数据满足所述同步条件,则将所述待判定数据同步至目标端数据库。70.在具体实施过程中,在获得判定结果之后,可以根据该判定结果判定待判定数据是否满足同步条件。若判定结果表明待判定数据满足同步条件,则将该待判定数据同步至目标端数据库,从而实现了对增量数据按条件进行同步的技术效果,而且整个同步过程无额外网络交互开销,提高了同步效率。而且,还可以实现对历史数据按条件过滤,不需要反查数据库,极大地提升了基于日志解析的增量按条件同步的效率。71.在本发明实施例中,如图3所示,步骤s103:提取所述抽象语法树中的条件部分作为判定模板,对待判定数据进行判定,获得判定结果,包括:72.s201:识别出所述判定模板中所包括的字段名和字面常量;73.s202:判断所述待判定数据的字段名是否与所述判定模板中所包括的字段名相同;74.s203:若相同,则用所述待判定数据的字段名对应的字面常量替换所述判定模板中相应的字段名;75.s204:若所述判定模板中的所有字段名均被替换,则生成一颗条件树,并将所述条件树转化为仅包括字面常量的表达式;76.s205:获得所述表达式的求值结果,并将所述求值结果作为判定结果。77.在具体实施过程中,步骤s201至步骤s205的具体实现过程如下:78.首先,识别出判定模板中所包括的字段名和字面常量。判断待判定数据的字段名是否与判定模板中所包括的字段名相同。可以是解析日志文件生成的每条具体的数据,将相应的数据的字段名与判定模板中所包括的字段名进行匹配。若相同,则用待判定数据的字段名对应的字面常量替换判定模板中相应的字段名。这样的话,若判定模板中所有的字段均被替换,则可以生成一颗条件树,还可以将该条件树转化成仅包括字面常量的表达式。这样的话,在运行时对字段进行替换,可以将复杂的带有字段名的条件在sql语法树层面进行匹配替换,新生成的条件树可以转化为只包含字面常量的表达式,避免了直接查询数据库引发的效率问题,解决了历史数据在当前数据库中不存在导致的无法判定问题。79.然后,可以调用表达式求值模块对该表达式进行求值,从而获得求值结果,并将该求值结果作为判定结果。在其中一种示例性实施例中,可以使用aviator、druid等开源表达式求值工具对仅包括字面常量的表达式进行求值,输出true或者false,其中,true表示当前待判定数据满足用户设定的同步条件;false表示当前待判定数据不满足用户设定的同步条件。需要说明的是,本发明实施例中的条件树仅包括字面常量,具有结构简单、谓词明确、数据清晰的特点,而且易于对接开源的表达式判定工具,解析速度快且具有很强的通用性。80.在本发明实施例中,在步骤s203中:用所述待判定数据的字段名对应的字面常量替换所述判定模板中相应的字段名之后,所述方法还包括:81.若所述判定模板中至少一个字段名未被替换,则所述判定结果表明所述待判定数据不满足所述同步条件。82.在具体实施过程中,若对判定模板中所有与待判定数据的字段名相同的字段名被替换之后,判定模板中仍有至少一个字段名未被替换,可以直接输出false,表明该待判定数据不满足同步条件。其中,至少一个字段可以是一个,还可以是多个,主要取决于用户所设定的同步条件以及待判定数据,在此不做限定。83.在本发明实施例中,如图4所示,步骤s202:判断所述待判定数据的字段名是否与所述判定模板中所包括的字段名相同,包括:84.s301:用包括多个结构体的数组表示所述待判定数据,其中,各个所述结构体包括相应的字段名和字面常量;85.s302:遍历所述数组,判断所述数组中所包括的各个字段名是否与所述判定模板中所包括的字段名相同。86.在具体实施过程中,步骤s301至步骤s302的具体实现过程如下:87.首先,可以解析日志文件所生成的每条待判定数据,可以用包括多个结构体的数组表示待判定数据,其中,每个结构体包括字段名和与之对应的字面常量,在运行数据同步系统时,可以遍历数组,判断数组中所包括的各个字段名是否与判定模板中所包括的字段名相同,如果相同,则可以用数组中所包括的各个字段名对应的字面常量替换判定模板中相应的字段名,具体替换过程可以参照前述相关部分的描述,在此不做赘述。88.下面以源端数据库为mysql数据库,目标端数据库为postgresql类型数据库为例,对本发明实施例提供的数据同步方法的具体实现过程进行解释说明。89.首先,可以采用以下语句对demo库创建test.table表:90.createtable`test_table`(91.`id`int(11)notnull,92.`name`varchar(255)collateutf8mb4_unicode_cidefaultnull,93.`type`varchar(255)collateutf8mb4_unicode_cidefaultnull,94.`city`varchar(255)collateutf8mb4_unicode_cidefaultnull,95.primarykey(`id`)96.)engine=innodbdefaultcharset=utf8mb497.collate=utf8mb4_unicode_ci;98.然后,在增量同步时进行数据过滤,可以将该test.table表中id》10或满足name字段为’kitty’且city字段以’bei’开头的数据放行进行同步,其余数据不同步。99.然后,可以在本发明实施例提供的数据同步系统上进行表数据同步,填入相对应的源库信息和目标服务器信息,可以一键自动化生成同步映射关系;100.然后,可以在可视化界面上配置同步条件,输入相应的sql语法:select*fromdemo.test_tablewhereid》10orname='kitty'andcitylike'bei%'101.然后,读取同步条件后进行语法树解析,生成如图5所示的抽象语法树,提取该抽象语法树中的条件部分生成判定模板:102.[id》10orname='kitty'andcitylike'bei%'][0103]该判定模板可以是如图6所示。[0104]以待判定数据:[id=12,name=’tom’,type=’dummy’,city=’hk’]为例,该数据在数据同步系统内部的传输结构如下:[0105][eventcolumn[index=1,columntype=12,columnname=id,[0106]columnvalue=12,isnull=false,iskey=false,isupdate=true][0107]eventcolumn[index=2,columntype=-5,columnname=name,[0108]columnvalue=tom,isnull=false,iskey=false,isupdate=true][0109]eventcolumn[index=3,columntype=-5,columnname=type,[0110]columnvalue=dummy,isnull=false,iskey=false,isupdate=true][0111]eventcolumn[index=4,columntype=-5,columnname=city,[0112]columnvalue=hk,isnull=false,iskey=false,isupdate=true]][0113]然后,执行运行时字段替换步骤,该数据所有判定模板中的字段均被成功替换,得到只包括字面常量的条件树,该条件树可以是如图7所示。还可以转化为常量表达式:[0114][12》10or'tom'='kitty'and'hk'like'bei%'][0115]然后,对常量表达式求值:[0116]eval(12》10or'tom'='kitty'and'hk'like'bei%')=true,因此可以判定该数据满足同步条件,需要放行。[0117]当然,在具体实施过程中,除了可以是前述提到的同步条件以及待判定数据之外,还可以根据实际应用需要设置其它的同步条件,相应地对数据同步系统运行过程中产生的其它的判定数据进行同步判定,在此不做限定。[0118]本发明实施例提供的一种数据同步方法,提供了通用的条件判定框架,执行效率高,模块之间松耦合。可以将该数据同步方法应用于异构数据库之间的增量按条件同步,可以在不直接查询数据库的场景下快速进行条件判定,实现数据按需同步;还可以实现数据离线存储,将数据库数据归类备份到其它介质;还可以进行数据分析及数据挖掘,相应地,对增量同步的数据进行有条件的过滤,提取具有某个特征的数据对接数据分析平台或者数据挖掘系统。相应地,除了可以将该数据同步方法应用于数据同步系统之外,还可以根据实际应用需要应用于大数据分析系统、容灾备份系统,具体实现过程不再赘述。[0119]基于同一发明构思,如图8所示,本发明实施例还提供了一种数据同步系统,包括:[0120]源端数据库10、目标端数据库20、以及分别与所述源端数据库10和所述目标端数据库20交互的同步工作节点30;其中:所述同步工作节点30被配置为:[0121]读取用户预设的同步条件;[0122]对所述同步条件进行语法解析,生成抽象语法树;[0123]提取所述抽象语法树中的条件部分作为判定模板,对待判定数据进行判定,获得判定结果,其中,所述待判定数据为通过解析所述源端数据库的日志文件所获得的增量数据;[0124]若所述判定结果表明所述待判定数据满足所述同步条件,则将所述待判定数据同步至目标端数据库。[0125]在本发明实施例中,同步工作节点30被配置为:[0126]识别出所述判定模板中所包括的字段名和字面常量;[0127]判断所述待判定数据的字段名是否与所述判定模板中所包括的字段名相同;[0128]若相同,则用所述待判定数据的字段名对应的字面常量替换所述判定模板中相应的字段名;[0129]若所述判定模板中的所有字段名均被替换,则生成一颗条件树,并将所述条件树转化为仅包括字面常量的表达式;[0130]获得所述表达式的求值结果,并将所述求值结果作为判定结果。[0131]在本发明实施例中,在所述用所述待判定数据的字段名对应的字面常量替换所述判定模板中相应的字段名之后,所述同步工作节点还被配置为:[0132]若所述判定模板中至少一个字段名未被替换,则所述判定结果表明所述待判定数据不满足所述同步条件。[0133]在本发明实施例中,所述同步工作节点被配置为:[0134]用包括多个结构体的数组表示所述待判定数据,其中,各个所述结构体包括相应的字段名和字面常量;[0135]遍历所述数组,判断所述数组中所包括的各个字段名是否与所述判定模板中所包括的字段名相同。[0136]在具体实施过程中,由于本发明实施例所提供的数据同步系统所要解决的技术问题同前述数据同步方法,对于数据同步系统的具体实现过程可以参照前述相关部分的描述,在此不再赘述。[0137]基于同一发明构思,如图9所示,本发明实施例还提供了一种数据同步装置,包括:[0138]读取单元100,用于读取用户预设的同步条件;[0139]生成单元200,用于对所述同步条件进行语法解析,生成抽象语法树;[0140]判定单元300,用于提取所述抽象语法树中的条件部分作为判定模板,对待判定数据进行判定,获得判定结果,其中,所述待判定数据为通过解析所述源端数据库的日志文件所获得的增量数据;[0141]同步单元400,用于若所述判定结果表明所述待判定数据满足所述同步条件,则将所述待判定数据同步至目标端数据库。[0142]在本发明实施例中,所述判定单元300用于:[0143]识别出所述判定模板中所包括的字段名和字面常量;[0144]判断所述待判定数据的字段名是否与所述判定模板中所包括的字段名相同;[0145]若相同,则用所述待判定数据的字段名对应的字面常量替换所述判定模板中相应的字段名;[0146]若所述判定模板中的所有字段名均被替换,则生成一颗条件树,并将所述条件树转化为仅包括字面常量的表达式;[0147]获得所述表达式的求值结果,并将所述求值结果作为判定结果。[0148]在本发明实施例中,在用所述待判定数据的字段名对应的字面常量替换所述判定模板中相应的字段名之后,所述判定单元300还用于:[0149]若所述判定模板中至少一个字段名未被替换,则所述判定结果表明所述待判定数据不满足所述同步条件。[0150]在本发明实施例中,所述判定单元300用于:[0151]用包括多个结构体的数组表示所述待判定数据,其中,各个所述结构体包括相应的字段名和字面常量;[0152]遍历所述数组,判断所述数组中所包括的各个字段名是否与所述判定模板中所包括的字段名相同。[0153]基于同一发明构思,本发明实施例还提供了一种数据同步装置,所述数据同步装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如上面任一项所述的数据同步方法的步骤。[0154]基于同一发明构思,本发明实施例还提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上面任一项所述的数据同步方法的步骤。[0155]本发明提供了一种数据同步方法、系统、装置及可读存储介质;首先,读取用户预设的同步条件;然后,对该同步条件进行语法解析,生成抽象语法树;然后,提取抽象语法树中的条件部分作为判定模板,对待判定数据进行判定,获得判定结果,其中,待判定数据为通过解析源端数据库的日志文件所获得的增量数据;这样的话,可以根据从抽象语法树中所提取的判定模板,对直接解析日志文件所获得的待判定的增量数据是否需要进行同步进行判定,整个判定过程不需要反查数据库,也不需要调用数据库引擎;在判定结果表明满足同步条件时,将待判定的增量数据同步至目标端数据库。如此一来,提高了基于日志解析的增量数据按条件同步的效率,避免了某些历史数据在当前数据库已经不存在,无法反查的问题。[0156]本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。[0157]本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0158]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0159]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0160]显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。当前第1页12当前第1页12
技术特征:
1.一种数据同步方法,其特征在于,包括:读取用户预设的同步条件;对所述同步条件进行语法解析,生成抽象语法树;提取所述抽象语法树中的条件部分作为判定模板,对待判定数据进行判定,获得判定结果,其中,所述待判定数据为通过解析所述源端数据库的日志文件所获得的增量数据;若所述判定结果表明所述待判定数据满足所述同步条件,则将所述待判定数据同步至目标端数据库。2.如权利要求1所述的方法,其特征在于,所述提取所述抽象语法树中的条件部分作为判定模板,对待判定数据进行判定,获得判定结果,包括:识别出所述判定模板中所包括的字段名和字面常量;判断所述待判定数据的字段名是否与所述判定模板中所包括的字段名相同;若相同,则用所述待判定数据的字段名对应的字面常量替换所述判定模板中相应的字段名;若所述判定模板中的所有字段名均被替换,则生成一颗条件树,并将所述条件树转化为仅包括字面常量的表达式;获得所述表达式的求值结果,并将所述求值结果作为判定结果。3.如权利要求2所述的方法,其特征在于,在所述用所述待判定数据的字段名对应的字面常量替换所述判定模板中相应的字段名之后,所述方法还包括:若所述判定模板中至少一个字段名未被替换,则所述判定结果表明所述待判定数据不满足所述同步条件。4.如权利要求2所述的方法,其特征在于,所述判断所述待判定数据的字段名是否与所述判定模板中所包括的字段名相同,包括:用包括多个结构体的数组表示所述待判定数据,其中,各个所述结构体包括相应的字段名和字面常量;遍历所述数组,判断所述数组中所包括的各个字段名是否与所述判定模板中所包括的字段名相同。5.一种数据同步系统,其特征在于,包括:源端数据库、目标端数据库、以及分别与所述源端数据库和所述目标端数据库交互的同步工作节点;其中:所述同步工作节点被配置为:读取用户预设的同步条件;对所述同步条件进行语法解析,生成抽象语法树;提取所述抽象语法树中的条件部分作为判定模板,对待判定数据进行判定,获得判定结果,其中,所述待判定数据为通过解析所述源端数据库的日志文件所获得的增量数据;若所述判定结果表明所述待判定数据满足所述同步条件,则将所述待判定数据同步至目标端数据库。6.一种数据同步装置,其特征在于,包括:读取单元,用于读取用户预设的同步条件;生成单元,用于对所述同步条件进行语法解析,生成抽象语法树;判定单元,用于提取所述抽象语法树中的条件部分作为判定模板,对待判定数据进行
判定,获得判定结果,其中,所述待判定数据为通过解析所述源端数据库的日志文件所获得的增量数据;同步单元,用于若所述判定结果表明所述待判定数据满足所述同步条件,则将所述待判定数据同步至目标端数据库。7.如权利要求6所述的装置,其特征在于,所述判定单元用于:识别出所述判定模板中所包括的字段名和字面常量;判断所述待判定数据的字段名是否与所述判定模板中所包括的字段名相同;若相同,则用所述待判定数据的字段名对应的字面常量替换所述判定模板中相应的字段名;若所述判定模板中的所有字段名均被替换,则生成一颗条件树,并将所述条件树转化为仅包括字面常量的表达式;获得所述表达式的求值结果,并将所述求值结果作为判定结果。8.如权利要求7所述的装置,其特征在于,所述判定单元用于:用包括多个结构体的数组表示所述待判定数据,其中,各个所述结构体包括相应的字段名和字面常量;遍历所述数组,判断所述数组中所包括的各个字段名是否与所述判定模板中所包括的字段名相同。9.一种数据同步装置,其特征在于,所述数据同步装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-4任一项所述的数据同步方法的步骤。10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4任一项所述的数据同步方法的步骤。

技术总结
本发明提供了一种数据同步方法、系统、装置及可读存储介质,其中,所述数据同步方法包括:读取用户预设的同步条件;对所述同步条件进行语法解析,生成抽象语法树;提取所述抽象语法树中的条件部分作为判定模板,对待判定数据进行判定,获得判定结果,其中,所述待判定数据为通过解析所述源端数据库的日志文件所获得的增量数据;若所述判定结果表明所述待判定数据满足所述同步条件,则将所述待判定数据同步至目标端数据库。用于实现增量数据按条件同步的效率。步的效率。步的效率。


技术研发人员:林佩航 方子扬 杨济嘉 陈晓帆 关雨晗
受保护的技术使用者:天翼云科技有限公司
技术研发日:2022.07.14
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-1310.html

最新回复(0)