一种数据同步及解析方法、装置及终端设备与流程

文档序号:30757357发布日期:2022-07-13 12:11阅读:61来源:国知局
1.本技术属于数据处理
技术领域
:,尤其涉及数据同步及解析方法、装置及终端设备。
背景技术
::2.cdc是changedatacapture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。目前cdc的种类包括:1.基于查询的cdc,例如:sqoop、kafkajdbcsource等产品,特点是离线调度查询作业、批处理。把一张表同步到其他系统,每次通过查询去获取表中最新的数据,然而无法保障数据一致性,查的过程中有可能数据已经发生了多次变更,不保障实时性,基于离线调度存在天然的延迟,同时会增加数据库压力。2.基于日志的cdc,例如:maxwell、canal、debezium等,特点是实时消费日志,基于流处理,例如mysql的binlog日志完整记录了数据库中的变更,可以binlog文件当作流的数据源。3.对比常见开源cdc方案,在增量同步能力上,基于日志的方式可以很好的做到增量同步,而基于查询的方式是很难做到增量同步的;在全量+增量同步的能力上也是基于日志的方式效果更好。目前主要基于flinkcdc进行数据同步,然而使用flinkcdc进行数据同步时,对于需要同步的数据库表,需要重复进行开发,使得开发量激增的同时数据同步效率也较低。技术实现要素:4.有鉴于此,本技术实施例提供了一种数据同步及解析方法、装置及终端设备,可以解决数据同步效率较低的问题。5.本技术实施例的第一方面提供了一种数据同步及解析方法,包括:6.构建数据同步程序包;7.根据目标数据库构建依赖参数,并监控所述目标数据库的日志信息;8.通过所述数据同步程序包构建数据同步接口,并在所述数据同步接口中引入所述依赖参数,得到数据同步程序;9.利用所述数据同步程序对所述日志信息进行序列化解析,并将解析后的数据同步至预设的数据存储系统。10.详细地,所述数据同步程序包基于flinkcdc构建。11.详细地,所述构建数据同步程序包,包括:12.获取所述flinkcdc的源文件,在所述源文件中添加封装语句及输入语句;13.利用所述输入语句引入预设的相关依赖至所述源文件中;14.通过所述封装语句对引入完相关依赖的源文件进行封装,得到所述数据同步程序包。15.详细地,所述根据目标数据库构建依赖参数,包括:16.构建与所述目标数据库映射的映射参数;17.在所述映射参数中添加数据库参数;18.将所述映射参数与所述数据库参数作为所述依赖参数。19.详细地,所述监控所述目标数据库的日志信息,包括:20.在所述目标数据库的配置文件中添加日志监控语句;21.重启添加完日志监控语句的目标数据库,通过所述日志监控语句实时监控所述目标数据库的日志信息。22.详细地,所述在所述数据同步接口中引入所述依赖参数,得到数据同步程序,包括:23.在所述数据同步接口中引入所述依赖参数;24.在引入完依赖参数的数据同步接口中调用预设的自定义序列化类,得到所述数据同步程序。25.详细地,所述利用所述数据同步程序对所述日志信息进行序列化解析,包括:26.利用所述数据同步程序获取所述目标数据库的日志信息;27.利用所述自定义序列化类创建json对象,并基于所述自定义序列化类将所述日志信息转化为预设类型的数据;28.将所述预设类型的数据封装在所述json对象中。29.本技术实施例的第二方面提供了一种数据同步及解析装置,包括:30.程序包构建模块,用于构建数据同步程序包;31.数据库监控模块,用于根据目标数据库构建依赖参数,并监控所述目标数据库的日志信息;32.参数引用模块,用于通过所述数据同步程序包构建数据同步接口,并在所述数据同步接口中引入所述依赖参数,得到数据同步程序;33.数据同步模块,用于利用所述数据同步程序对所述日志信息进行序列化解析,并将解析后的数据同步至预设的数据存储系统。34.本技术实施例的第三方面提供了一种终端设备,所述终端设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面中任一项所述数据同步及解析方法的步骤。35.本技术实施例的第四方面提供了一种计算机可读存储介质,包括:存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上述第一方面中任一项所述数据同步及解析方法的步骤。36.本技术实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述数据同步及解析方法。37.本技术实施例与现有技术相比存在的有益效果是:38.本发明通过构建数据同步程序包,并监控目标数据库的日志信息,根据目标数据库构建依赖参数,通过数据同步程序包构建数据同步接口,只需在数据同步接口中引入目标数据库的依赖参数,便可利用数据同步程序对日志信息进行序列化解析,并对解析后的数据进行同步。同时通过构建一个通用的数据同步程序包,在同步不同的数据库或表时,只需传入相应的依赖参数,节省了数据库及数据库表重复开发的工作量,大大提高了数据同步的效率。因此本发明提出的数据同步及解析方法、装置及终端设备,可以解决数据同步效率较低的问题。附图说明39.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。40.图1是本技术实施例提供的数据同步及解析方法的实现流程示意图;41.图2是本技术实施例提供的数据同步及解析方法的实现流程示意图;42.图3是本技术实施例提供的数据同步及解析方法的实现流程示意图;43.图4是本技术实施例提供的数据同步及解析方法的实现流程示意图;44.图5是本技术实施例提供的数据同步及解析方法的实现流程示意图;45.图6是本技术实施例提供的数据同步及解析装置的结构示意图;46.图7是本技术实施例提供的终端设备的示意图。具体实施方式47.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。48.为了说明本技术所述的技术方案,下面通过具体实施例来进行说明。49.图1示出了本技术实施例一提供的数据同步及解析方法的实现流程图,详述如下:50.s1、构建数据同步程序包。51.本发明一可选实施例中,所述数据同步程序包基于flinkcdc构建。所述数据同步程序包是一种通用的同步与解析日志信息的程序包,用于将日志信息等数据发送到下游进一步处理或者直接入库。52.可选的,所述flinkcdc是一种变换数据获取(cdc,changedatacapture)工具,用于监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。53.具体的,所述构建数据同步程序包,包括:54.获取所述flinkcdc的源文件,在所述源文件中添加封装语句及输入语句;55.利用所述输入语句引入预设的相关依赖至所述源文件中;56.通过所述封装语句对引入完相关依赖的源文件进行封装,得到所述数据同步程序包。57.详细地,所述封装语句可以为package语句,所述输入语句可以为import语句,所述预设的相关依赖包括依赖版本、依赖环境等。通过将flinkcdc封装成一可通用的程序包,在同步不同的库或表时,只需要传入一些相应的参数即可将数据发送到下游进一步处理或者直接入库,节省了每张表重复开发的工作量,提高了数据处理效率。58.本发明实施例中,相较于其他常见开源cdc方法,从架构角度,flinkcdc在数据入湖或者入仓的时候,能够更好地接入分布式的系统,如hive、hdfs、iceberg、hudi等,提高数据同步能力;从数据转换/数据清洗能力上,flinkcdc上可以通过flinksql去操作这些数据,相较于datax、debezium等需要通过脚本或者模板的工具,降低了用户的使用门槛;从生态方面,flinkcdc下游有丰富的connector,例如写入到tidb、mysql、pg、hbase、kafka、clickhouse等常见的一些系统,也支持各种自定义connector,提高数据处理的灵活性。59.s2、根据目标数据库构建依赖参数,并监控所述目标数据库的日志信息。60.本发明实施例中,所述目标数据库为mysql数据库。所述依赖参数包括“host”、“port”、“name”、“password”、“database”及“table”等。61.详细地,参照图2所示,所述根据目标数据库构建依赖参数,包括:62.s200、构建与所述目标数据库映射的映射参数;63.s201、在所述映射参数中添加数据库参数;64.s202、将所述映射参数与所述数据库参数作为所述依赖参数。65.本发明一可选实施例中,所述映射参数为“host”,用于将主机域名和目标数据库的ip地址进行映射,所述数据库参数包括:“port”(端口)、“name”(账号)、“password”(密钥)、“database”(同步的数据库)及“table”(同步的数据库表)等。66.具体地,参照图3所示,所述监控所述目标数据库的日志信息,包括:67.s210、在所述目标数据库的配置文件中添加日志监控语句;68.s211、重启添加完日志监控语句的目标数据库,通过所述日志监控语句实时监控所述目标数据库的日志信息。69.本发明实施例中,在mysql数据库中,可以通过locatemy.cnf查找配置文件位置,同时在mysql的配置文件下的[mysql]区块下添加日志监控语句log-bin=mysql-bin,通过重启mysql数据库,在每次调用mysql服务时都会按照顺序生成新的日志文件存储日志信息。同时,可以选择配置格式binlog_format=row,会记录每次操作后每行日志信息的变动。[0070]进一步地,通过监控所述目标数据库的日志信息,对于目标数据库中实时变动的日志信息都可以进行监控,提高了变更日志信息获取的及时性及准确性。[0071]s3、通过所述数据同步程序包构建数据同步接口,并在所述数据同步接口中引入所述依赖参数,得到数据同步程序。[0072]本发明实施例中,所述数据同步接口可以为sourcefunction接口,通过在数据同步接口中引入mysql数据库的依赖参数,可以与mysql数据库进行同步,得到数据同步程序,所述数据同步程序用于将mysql数据库中变动的日志信息进行数据同步。[0073]详细地,参照图4所示,所述在所述数据同步接口中引入所述依赖参数,得到数据同步程序,包括:[0074]s30、在所述数据同步接口中引入所述依赖参数;[0075]s31、在引入完依赖参数的数据同步接口中调用预设的自定义序列化类,得到所述数据同步程序。[0076]本发明实施例中,可以通过参数获取工具通过parametertool.fromargs(args)获取传入的依赖参数,再通过flinkcdc构建sourcefunction并传入启动时传入的相关依赖参数,并调用预构建的自定义序列化类huadundeserializationschema,所述自定义序列化类用于把可读性差的日志信息,转换为固定格式的json串,这样下游在接到数据时,直接解析固定格式就可以得到数据,提高数据解析的效率。[0077]s4、利用所述数据同步程序对所述日志信息进行序列化解析,并将解析后的数据同步至预设的数据存储系统。[0078]本发明实施例中,所述数据存储系统可以为数据仓库或消息队列,例如,tidb、mysql、pg、hbase、kafka、clickhouse等。所述序列化解析是指把可读性差的日志信息,转换为固定格式的json串。[0079]详细地,参照图5所示,所述利用所述数据同步程序对所述日志信息进行序列化解析,包括:[0080]s40、利用所述数据同步程序获取所述目标数据库的日志信息;[0081]s41、利用所述自定义序列化类创建json对象,并基于所述自定义序列化类将所述日志信息转化为预设类型的数据;[0082]s42、将所述预设类型的数据封装在所述json对象中。[0083]本发明实施例中,通过自定义序列化类huadundeserializationschema获取日志信息,并将日志信息转换为struct类型的数据,同时自定义序列化类huadundeserializationschema会创建json对象,并将struct类型的数据封装在所述json对象中完成序列化解析。[0084]本发明实施例中,通过构建数据同步程序包对mysql数据库进行数据同步,可以实现对mysql数据库免开发进行实时数据同步及解析,大大提高了数据同步效率。[0085]本发明通过构建数据同步程序包,并监控目标数据库的日志信息,根据目标数据库构建依赖参数,通过数据同步程序包构建数据同步接口,只需在数据同步接口中引入目标数据库的依赖参数,便可利用数据同步程序对日志信息进行序列化解析,并对解析后的数据进行同步。同时通过构建一个通用的数据同步程序包,在同步不同的数据库或表时,只需传入相应的依赖参数,节省了数据库及数据库表重复开发的工作量,大大提高了数据同步的效率。因此本发明提出的数据同步及解析方法,可以解决数据同步效率较低的问题。[0086]对应于上文实施例的方法,图6示出了本技术实施例提供的数据同步及解析装置的结构框图,为了便于说明,仅示出了与本技术实施例相关的部分。图6示例的数据同步及解析装置可以是前述实施例一提供的数据同步及解析方法的执行主体。[0087]参照图6,该数据同步及解析装置包括:[0088]所述程序包构建模块61,用于构建数据同步程序包;[0089]所述数据库监控模块62,用于根据目标数据库构建依赖参数,并监控所述目标数据库的日志信息;[0090]所述参数引用模块63,用于通过所述数据同步程序包构建数据同步接口,并在所述数据同步接口中引入所述依赖参数,得到数据同步程序;[0091]所述数据同步模块64,用于利用所述数据同步程序对所述日志信息进行序列化解析,并将解析后的数据同步至预设的数据存储系统。[0092]本技术实施例提供的数据同步及解析装置中各模块实现各自功能的过程,具体可参考前述图1所示实施例一的描述,此处不再赘述。[0093]应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。[0094]应当理解,当在本技术说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。[0095]还应当理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。[0096]如在本技术说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。[0097]另外,在本技术说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。还应理解的是,虽然术语“第一”、“第二”等在文本中在一些本技术实施例中用来描述各种元素,但是这些元素不应该受到这些术语的限制。这些术语只是用来将一个元素与另一元素区分开。例如,第一表格可以被命名为第二表格,并且类似地,第二表格可以被命名为第一表格,而不背离各种所描述的实施例的范围。第一表格和第二表格都是表格,但是它们不是同一表格。[0098]在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。[0099]本技术实施例提供的数据同步及解析方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmentedreality,ar)/虚拟现实(virtualreality,vr)设备、笔记本电脑、超级移动个人计算机(ultra-mobilepersonalcomputer,umpc)、上网本、个人数字助理(personaldigitalassistant,pda)等终端设备上,本技术实施例对终端设备的具体类型不作任何限制。[0100]例如,所述终端设备可以是wlan中的站点(staion,st),可以是蜂窝电话、无绳电话、会话启动协议(sessioninitiationprotocol,sip)电话、无线本地环路(wirelesslocalloop,wll)站、个人数字处理(personaldigitalassistant,pda)设备、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、车联网终端、电脑、膝上型计算机、手持式通信设备、手持式计算设备、卫星无线设备、无线调制解调器卡、电视机顶盒(settopbox,stb)、用户驻地设备(customerpremiseequipment,cpe)和/或用于在无线系统上进行通信的其它设备以及下一代通信系统,例如,5g网络中的移动终端或者未来演进的公共陆地移动网络(publiclandmobilenetwork,plmn)网络中的移动终端等。[0101]作为示例而非限定,当所述终端设备为可穿戴设备时,该可穿戴设备还可以是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如眼镜、手套、手表、服饰及鞋等。可穿戴设备即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能。广义穿戴式智能设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,如智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能首饰等。[0102]图7是本技术一实施例提供的终端设备的结构示意图。如图7所示,该实施例的终端设备7包括:至少一个处理器70(图7中仅示出一个)、存储器71,所述存储器71中存储有可在所述处理器70上运行的计算机程序72。所述处理器70执行所述计算机程序72时实现上述各个数据同步及解析方法实施例中的步骤,例如图1所示的步骤101至106。或者,所述处理器70执行所述计算机程序72时实现上述各装置实施例中各模块/单元的功能,例如图6所示模块61至64的功能。[0103]所述终端设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是终端设备7的示例,并不构成对终端设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入发送设备、网络接入设备、总线等。[0104]所称处理器70可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。[0105]所述存储器71在一些实施例中可以是所述终端设备7的内部存储单元,例如终端设备7的硬盘或内存。所述存储器71也可以是所述终端设备7的外部存储设备,例如所述终端设备7上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器71还可以既包括所述终端设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储操作系统、应用程序、引导装载程序(bootloader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器71还可以用于暂时地存储已经发送或者将要发送的数据。[0106]另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。[0107]本技术实施例还提供了一种终端设备,所述终端设备包括至少一个存储器、至少一个处理器以及存储在所述至少一个存储器中并可在所述至少一个处理器上运行的计算机程序,所述处理器执行所述计算机程序时,使所述终端设备实现上述任意各个方法实施例中的步骤。[0108]本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。[0109]本技术实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述各个方法实施例中的步骤。[0110]所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、电载波信号、电信信号以及软件分发介质等。[0111]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。[0112]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。[0113]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0114]以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使对应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1