数据的同步方法、装置、终端设备及介质与流程

文档序号:23951756发布日期:2021-02-18 15:48阅读:60来源:国知局
[0001]本发明涉及金融科技(fintech)
技术领域
:,尤其涉及一种数据的同步方法、装置、终端设备及计算机存储介质。
背景技术
::[0002]随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(fintech)转变,但由于金融行业的安全性、实时性要求,也对数据同步技术提出了更高的要求。[0003]时下,众多企业针对自有的每个业务通常都会采用关系型数据库来记录相关的业务数据,但是,由于关系型数据库容量毕竟有限,所以企业针对每个业务也都需要把该关系型数据库表中的数据同步到其它数据库中,因此,企业需要针对关系型数据库中的每一张表创建对应的表数据结构和编写数据同步脚本。[0004]现有技术中针对关系型数据库中的每一张表都是由人工来创建对应的表数据结构和编写相关的数据同步脚本,从而实现将关系型数据库表中待同步的数据导入至其他数据库进行同步存储。如此,在企业所拥有业务量庞大的背景下,人工创建表数据结构和编写脚本的工作量就非常庞大且容易出错,导致数据同步的效率非常低下。技术实现要素:[0005]本发明的主要目的在于提供一种数据的同步方法、装置、终端设备及计算机存储介质,旨在解决通过人工创建表数据结构和编写数据同步脚本实现数据同步映射的方式,工作量大且出错率高,导致数据同步效率低下的技术问题。[0006]为实现上述目的,本发明提供一种数据的同步方法,所述数据的同步方法包括:[0007]确定待同步数据源的元数据结构;[0008]检测目标数据库并将所述元数据结构转化为所述目标数据库的目标数据结构;[0009]根据所述目标数据库对应的模板文件生成同步数据的执行脚本;[0010]基于数据同步指令运行所述执行脚本以从所述待同步数据源抽取元数据,并将所述元数据按照所述目标数据结构导入至所述目标数据库中。[0011]可选地,所述确定待同步数据源的元数据结构的步骤,包括:[0012]获取所述待同步数据源中的各数据表,并获取各所述数据表的各字段数据;[0013]根据各所述字段数据和各所述数据表生成所述待同步数据源的元数据结构。[0014]可选地,在所述确定待同步数据源的元数据结构的步骤之后,还包括:[0015]获取扩展元数据的配置文件,并根据所述配置文件动态扩展所述元数据结构。[0016]可选地,所述检测目标数据库的步骤,包括:[0017]检测针对所述待同步数据源所属业务场景下数据库的选择配置;[0018]将所述选择配置指向的数据库确定为导入元数据的目标数据库。[0019]可选地,在所述根据所述目标数据库对应的模板文件生成同步数据的执行脚本的步骤之前,还包括:[0020]将所述元数据结构转化成模型数据对象;[0021]所述模板文件包括:抽数模板文件和同步数据模板文件,所述执行脚本包括:抽数脚本和同步数据脚本,[0022]所述根据所述目标数据库对应的模板文件生成同步数据的执行脚本的步骤包括:[0023]将所述模型数据对象封装成自定义模板数据对象;[0024]遍历预先定制的各模板文件以读取所述目标数据库对应的抽数模板文件和同步数据模板文件;[0025]基于所述抽数模板文件和所述自定义模板数据对象生成抽数脚本,并基于所述同步数据模板文件和所述自定义模板数据对象生成同步数据脚本。[0026]可选地,所述数据的同步方法,还包括:[0027]获取模板配置文件以根据所述模板配置文件针对所述目标数据库对应的模板文件进行调整或者定制生成新的模板文件。[0028]可选地,所述基于数据同步指令运行所述执行脚本以从所述待同步数据源抽取元数据,并将所述元数据按照所述目标数据结构导入至所述目标数据库中的步骤,包括:[0029]在检测到数据同步指令时,运行所述抽数脚本以从所述待同步数据源中抽取元数据;[0030]运行所述同步数据脚本以按照所述目标数据库的所述目标数据结构将所述元数据导入至所述目标数据库中。[0031]此外,为实现上述目的,本发明还提供一种数据的同步装置,所述数据的同步装置包括:[0032]确定模块,用于确定待同步数据源的元数据结构;[0033]脚本生成模块,用于检测目标数据库并根据所述目标数据库对应的模板文件生成同步数据的执行脚本;[0034]数据转化模块,用于将所述元数据结构转化为所述目标数据库的目标数据结构;[0035]数据同步模块,用于基于数据同步指令运行所述执行脚本以从所述待同步数据源抽取元数据,并将所述元数据按照所述目标数据结构导入至所述目标数据库中。[0036]此外,为实现上述目的,本发明还提供一种终端设备,所述终端设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据的同步程序,所述数据的同步程序被所述处理器执行时实现如上所述的数据的同步方法的步骤。[0037]此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有数据的同步程序,所述数据的同步程序被处理器执行时实现如上所述的数据的同步方法的步骤。[0038]本发明提供一种数据的同步方法、装置、终端设备及计算机存储介质,基于确定待同步数据源的元数据结构;检测目标数据库并将所述元数据结构转化为所述目标数据库的目标数据结构;根据所述目标数据库对应的模板文件生成同步数据的执行脚本;基于数据同步指令运行所述执行脚本以从所述待同步数据源抽取元数据,并将所述元数据按照所述目标数据结构导入至所述目标数据库中。[0039]本发明在进行数据库之间数据同步的过程中,先分析确定待同步数据源的元数据结构,然后检测目标数据库(需要导入待同步的元数据以对该元数据进行存储的数据库),并从预先配置生成的适用不同业务场景的模板文件中,提取与该目标数据库对应的模板文件,以自动生成用于将待同步的元数据导入至目标数据库中进行同步存储的执行脚本,再然后,将分析确定出的待同步数据源的元数据结构转化成为目标数据的目标数据结构,最后基于接收到的数据同步指令运行生成的执行脚本,从而自动的从待同步数据源中抽取待同步的元数据,并将该元数据按照目标数据结构导入到目标数据库当中进行存储。[0040]本发明与现有人工创建表数据结构和表写数据同步脚本的方式相比,在极大程度上减少了人工操作的工作量、降低了出错率,从而提高了数据同步的效率。此外,由于本发明是通过导入元数据进行存储的目标数据库的模板文件来自动生成执行脚本,且,该模板文件已经预先定制生成,从而,在针对不同的业务进行数据同步时,只需选取对应的模板文件,以及,在存在数据同步的特殊需求时,只需针对该模板文件进行简单自定义调整,不仅确保了不同业务进行数据同步的通用性,更提高了业务数据同步的灵活性。附图说明[0041]图1为本发明实施例方案涉及的硬件运行环境的设备结构示意图;[0042]图2为本发明数据的同步方法第一实施例的流程示意图;[0043]图3为本发明数据的同步方法一实施例所涉及现有技术中执行数据同步的应用流程示意图;[0044]图4为本发明数据的同步方法一实施例所涉及数据同步的应用流程示意图;[0045]图5为本发明数据的同步方法一实施例所涉及元数据分析自定义扩展的应用流程示意图;[0046]图6为本发明数据的同步方法一实施例所涉及基于模板文件生成执行脚本的应用流程示意图;[0047]图7为本发明数据的同步装置一实施例的功能模块示意图。[0048]本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式[0049]应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。[0050]参照图1,图1为本发明实施例方案涉及的硬件运行环境的设备结构示意图。[0051]本发明实施例终端设备可以是智能手机,也可以是pc(personalcomputer,个人计算机)、平板电脑、便携计算机等终端设备。[0052]如图1所示,该终端设备可以包括:处理器1001,例如cpu,通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。[0053]本领域技术人员可以理解,图1中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。[0054]如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据的同步程序。[0055]在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端,与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的数据的同步程序,并执行以下操作:[0056]确定待同步数据源的元数据结构;[0057]检测目标数据库,并根据所述目标数据库对应的模板文件生成同步数据的执行脚本;[0058]将所述元数据结构转化为所述目标数据库的目标数据结构;[0059]基于数据同步指令运行所述执行脚本以从所述待同步数据源抽取元数据,并将所述元数据按照所述目标数据结构导入至所述目标数据库中。[0060]进一步地,处理器1001可以调用存储器1005中存储的数据的同步程序,还执行以下操作:[0061]获取所述待同步数据源中的各数据表,并获取各所述数据表的各字段数据;[0062]根据各所述字段数据和各所述数据表生成所述待同步数据源的元数据结构。[0063]进一步地,处理器1001可以调用存储器1005中存储的数据的同步程序,在执行确定待同步数据源的元数据结构之后,还执行以下操作:[0064]获取扩展元数据的配置文件,并根据所述配置文件动态扩展所述元数据结构。[0065]进一步地,处理器1001可以调用存储器1005中存储的数据的同步程序,还执行以下操作:[0066]检测针对所述待同步数据源所属业务场景下数据库的选择配置;[0067]将所述选择配置指向的数据库确定为导入元数据的目标数据库。[0068]进一步地,处理器1001可以调用存储器1005中存储的数据的同步程序,在执行根据所述目标数据库对应的模板文件生成同步数据的执行脚本之前,还执行以下操作:[0069]将所述元数据结构转化成模型数据对象;[0070]所述模板文件包括:抽数模板文件和同步数据模板文件,所述执行脚本包括:抽数脚本和同步数据脚本,处理器1001可以调用存储器1005中存储的数据的同步程序,还执行以下操作:[0071]将所述模型数据对象封装成自定义模板数据对象;[0072]遍历预先定制的各模板文件以读取所述目标数据库对应的抽数模板文件和同步数据模板文件;[0073]基于所述抽数模板文件和所述自定义模板数据对象生成抽数脚本,并基于所述同步数据模板文件和所述自定义模板数据对象生成同步数据脚本。[0074]进一步地,处理器1001可以调用存储器1005中存储的数据的同步程序,还执行以下操作:[0075]获取模板配置文件以根据所述模板配置文件针对所述目标数据库对应的模板文件进行调整或者定制生成新的模板文件。[0076]进一步地,处理器1001可以调用存储器1005中存储的数据的同步程序,还执行以下操作:[0077]在检测到数据同步指令时,运行所述抽数脚本以从所述待同步数据源中抽取元数据;[0078]运行所述同步数据脚本以按照所述目标数据库的所述目标数据结构将所述元数据导入至所述目标数据库中。[0079]基于上述硬件结构,提出本发明数据的同步方法的各实施例。[0080]需要说明的是,请参照附图3,附图3所示为本发明数据的同步方法所涉及现有技术中执行数据同步的应用流程。现有技术中,众多企业针对自有的每个业务通常都会采用关系型数据库来记录相关的业务数据,但是,由于关系型数据库容量毕竟有限,所以企业针对该每个业务也都需要把该关系型数据库表中的数据同步到其它数据库中进行同步存储,例如,企业通常将关系型数据库中的数据同步导入至大数据平台(如bdp平台(一款集企业友好性、流计算、高可用、容灾和sqlonhadoop为一体的大数据平台))中进行同步存储,因此,企业就需要针对关系型数据库中的每一张表创建与大数据平台相对应的表数据结构和编写相应的数据同步脚本。[0081]然而,现有技术中针对关系型数据库中的每一张表都是由人工来创建与大数据平台相对应的表数据结构和编写相关的数据同步脚本,从而实现将关系型数据库表中待同步的元数据映射导入至大数据平台进行同步存储。如此,在企业所拥有业务量庞大的背景下,由人工创建表数据结构和编写脚本的工作量就非常庞大且容易出错,导致数据同步的效率非常低下。[0082]针对上述现象,本发明提供一种数据的同步方法。请参照图2,图2为本发明数据的同步方法第一实施例的流程示意图。[0083]在本实施例中,该数据的同步方法包括:[0084]步骤s10,确定待同步数据源的元数据结构;[0085]终端设备在执行数据同步的过程中,首先针对当前业务下需要同步的元数据所属的待同步数据源进行元数据分析以确定该待同步数据源的元数据结构。[0086]需要说明的是,在本实施例中,当前业务为企业当前需要进行数据同步的业务;待同步数据源为存储有当前业务的业务数据的源数据库,终端设备通过当前业务,确定存储有该业务的业务数据的源数据库。[0087]应当理解的是,终端设备可连接多个源数据库,且多个源数据库中的一个或者多个可被配置用于存储一个业务场景的业务数据,而该业务场景也可以为多个,此外,终端设备基于当前业务确定源数据库的方式可以有多种,具体地,例如,终端设备通过当前业务的业务名,在已经建立连接的多个源数据库中,适配存储有以该业务名进行标识的源数据库,或者,终端设备还可以基于工作人员自主配置来确定存储有该业务的业务数据的源数据库。[0088]进一步地,在一种可行的实施例中,上述步骤s10,可以包括:[0089]步骤s101,获取所述待同步数据源中的各数据表,并获取各所述数据表的各字段数据;[0090]终端设备通过当前业务检测要同步的元数据所属的待同步数据源,然后,获取该待同步数据源中的全部数据表,并针对该全部数据表逐一获取各数据表的全部字段数据。[0091]需要说明的是,在本实施例中,字段数据包括但不限于:字段名称、字段类型以及字段长度。[0092]步骤s102,根据各所述字段数据和各所述数据表生成所述待同步数据源的元数据结构。[0093]终端设备在获取得到全部数据表以及该全部数据表各自的字段名称、字段类型以及字段长度等字段数据之后,终端设备先针对每一个数据表生成一个基于字段名称、字段类型以及字段长度等字段数据的列数据集,然后,终端设备整合该全部数据表各自的列数据集形成数据集合来作为该待同步数据源的元数据结构。[0094]具体地,例如,请参照附图4所示的数据同步的应用流程,终端设备向当前执行数据同步任务的工作人员输出用户图形界面—wpf(微软推出的基于windows的用户界面框架),以供该工作人员基于用户图形界面—wpf的datasourceprovider类(wpf中提供支持复杂数据获取逻辑的类型)输入当前需要进行数据同步的业务以及自定义配置存储有该业务的业务数据,从而需要导出原数据的待同步数据源(mysql、oracle或者其他类型的数据源)。然后,终端设备通过jdbc(javadatabaseconnectivity,java数据库连接,是java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法)中的databasemetadata(java.sql包中的类,利用它可以获取连接到的数据库的列表、列等信息),来获取得到该待同步数据源中所有的数据表,并通过resultset(数据库结果集的数据表,通常通过执行查询数据库的语句生成)的metadataholder(一般原数据持有方)类逐一的从该数据表中获取resultsetmetadata表列元数据生成主键表—column,再根据主键表—column的主外键关联关系,递归生成主键表、外键表元信息—foreignkey,从而,将该主键表、外键表元信息—foreignkey中所有的列生成一个列数据集—columnset,最后根据每张数据表的列数据集—columnset生成所有数据表的数据集合—tableset作为该待同步数据源的元数据结构。[0095]需要说明的是,在本实施例中,终端设备除了针对工作人员所输入的数据库类型的待同步数据源进行元数据分析来确定元数据结构,终端设备还可以通过sql语句查询数据库获得具体的数据表和字段数据来分析出动态的数据表结构,然后再根据动态表的元数据分析获得所有的列数据集,或者,还可以通过工作人员定义好bean(描述java的软件组件模型),再通过反射的机制获取到所有字段从而获取所需要的列数据集,进而基于该列数据集生成数据集合作为元数据结构。[0096]步骤s20,检测目标数据库,并根据所述目标数据库对应的模板文件生成同步数据的执行脚本;[0097]需要说明的是,在本实施例中,目标数据库是用于导入需要进行数据同步的业务的业务数据(也称作元数据),从而针对该业务数据进行存储的数据库。应当理解的是,该目标数据库可以基于实际应用的设计需要而选择一个或者多个,在不同可行的实施方式当中,该目标数据库当然可以配置为不同类型以及不同数量,本发明数据的同步方法,并不针对该目标数据库的类型以及数量等进行具体限定。[0098]终端设备在分析确定出待同步数据源的元数据结构之后,终端设备先检测确定出需要导入该待同步数据源中的元数据,已针对该元数据进行存储目标数据库,然后,终端设备从预先已经定制好的模板文件当中,提取出该目标数据库所对应的模板文件,并根据该模板文件自动生成用于执行数据同步的执行脚本。[0099]进一步地,在一种可行的实施例中,上述步骤s20中,“检测目标数据库”的步骤,可以包括:[0100]步骤s201,检测针对所述待同步数据源所属业务场景下数据库的选择配置;[0101]步骤s202,将所述选择配置指向的数据库确定为导入元数据的目标数据库。[0102]需要说明的是,在本实施例中,终端设备还可以通过用户图形界面,向执行数据同步任务的工作人员输出自定义选择目标数据库的选项,从而,由该工作人员自主选择来定义用以确定目标数据库的变量,终端设备基于工作人员自主选择的该变量即可确定目标数据库。[0103]终端设备通过检测工作人员基于用户图形界面所触发的针对待同步数据源所述业务场景下,用户导入元数据进行同步存储的数据库的选择配置,然后,终端设备将该选择配置所对应的数据库确定为,用于导入该业务场景下的元数据并针对该元数据进行同步存储的目标数据库。[0104]具体地,例如,当前执行数据同步的工作人员在基于终端设备输出的用户图形界面—wpf的datasourceprovider类输入当前需要进行数据同步的业务以及自定义配置存储有该业务的业务数据,从而需要导出原数据的待同步数据源之后,该工作人员进一步在终端设备最新输出的用户图形界面上,自主勾选“输出文件路径1”、“输出文件路径2”...“输出文件路径n”当中的“输出文件路径1”,从而,终端设备在接收到工作人员所自主勾选的“输出文件路径1”之后,即可确定与该“输出文件路径1”相映射的数据库即为针对当前业务,将从待同步数据源中抽取的元数据进行导入并存储的目标数据库。[0105]进一步地,在一种可行的实施例中,在上述步骤s20中,“根据所述目标数据库对应的模板文件生成同步数据的执行脚本”的步骤之前,本发明数据的同步方法,还可以包括:[0106]步骤a,将所述元数据结构转化成模型数据对象;[0107]需要说明的是,在本实施例中,终端设备可以预先基于工作人员的自主配置,定制生成多个适用不同业务场景下进行数据同步的多个模板文件,然后,终端设备针对该多个模板文件生成一个模板引擎以用于自动基于元数据结构适配模板文件,并基于该模板文件生成进行同步数据的执行脚本,从而,终端设备在针对待同步数据源进行元数据分析以确定出该待同步数据源的元数据结构之后,终端设备即可针对该元数据结构进行数据结构上的转化,从而将该元数据结构转化成为该模板引擎所需要的模型数据对象。[0108]此外,应当理解的是,在本实施例中,终端设备针对元数据结构进行转化仅仅是针对数据结构(或者格式)上的转化,可以采用现有任意成熟的转化方式实现,本发明数据的同步方法,并不针对终端设备对元数据结构进行转化的方式进行具体地限定。[0109]具体地,例如,终端设备在生成待同步数据源中所有数据表的数据集合—tableset作为该待同步数据源的元数据结构之后,终端设备随即利用现有成熟的数据结构转化技术,将该待同步数据源的字段类型映射转化成为java数据类型,从而将该数据集合—tableset转化成预先生成的模板引擎所需要的模型数据对象—modeldata。[0110]进一步地,所述模板文件包括:抽数模板文件和同步数据模板文件,所述执行脚本包括:抽数脚本和同步数据脚本,上述步骤s20中,“根据所述目标数据库对应的模板文件生成同步数据的执行脚本”的步骤,可以包括:[0111]步骤s203,将所述模型数据对象封装成自定义模板数据对象;[0112]步骤s204,遍历预先定制的各模板文件以读取所述目标数据库对应的抽数模板文件和同步数据模板文件;[0113]步骤s205,基于所述抽数模板文件和所述自定义模板数据对象生成抽数脚本,并基于所述同步数据模板文件和所述自定义模板数据对象生成同步数据脚本。[0114]需要说明的是,在本实施例中,终端设备在通过用户图形界面,向执行数据同步任务的工作人员输出自定义选择目标数据库的选项的同时,还可以同步输出用于自定义选择模板文件的选项,如此,终端设备可基于该工作人员自主选择来定义用以调用的模板文件的变量,从而基于该变量选择对应模板文件生成用于数据同步的执行脚本。此外,自定义模板数据对象即为基于工作人员自主基于用户图形界面所选择的模板引用变量和输出文件路径引用变量,定义生成的模板数据对象,该自定义模板数据对象的数据格式具体可以为:[0115][0116]具体地,例如,请参照附图4和图6所示的数据同步的应用流程,终端设备的模板引擎通过templateprocessor模板处理器(集成freemaker模板技术,功能强大,并可扩展支持velocity模板技术)对模型数据对象—modeldata进行解析,从而将该模型数据对象—modeldata封装成定义有工作人员自主基于用户图形界面所选择的模板引用变量和输出文件路径引用变量的自定义模板数据对象—generatormodel,然后,终端设备通过遍历存储有预先定制好全部模板文件的模板定义文件夹—templaterootdir,以根据自定义模板数据对象—generatormodel中封装的“模板引用变量”,从该模板定义文件夹—templaterootdir中提取出当前使用的抽数模板文件,进而,基于该当前使用的抽数模板文件和自定义模板数据对象—generatormodel中的数据生成在数据同步过程中,针对当前业务的待同步数据源进行元数据抽取的抽数脚本:[0117][0118][0119]此外,终端设备还通过遍历存储有预先定制好全部模板文件的模板定义文件夹—templaterootdir,以根据自定义模板数据对象—generatormodel中封装的“输出文件路径应用变量”,从该模板定义文件夹—templaterootdir中提取出当前使用的同步数据模板文件,进而,基于该当前使用的同步数据模板文件和自定义模板数据对象—generatormodel中的数据生成在数据同步过程中,将基于抽数脚本从待同步数据源中抽取得到的元数据,导入至存储该元数据的目标数据库的同步数据脚本:[0120][0121]需要说明的是,在本实施例中,自定义模板数据对象—generatormodel中默认定义了tables对象和table对象等标准变量以供引用,其中,tables对象:可以输出所有的表元数据,table对象:可以输出单个表元数据信息。此外,该自定义模板数据对象—generatormodel同时支持将转化后所有的数据表映射到模板引擎对应的变量中(即,自动注入分析确定的待同步数据源的元数据结构),从而,抽数模板文件和同步数据模板文件可以动态获取到元数据内容来进行具体业务场景的模板开发。[0122]步骤s300,将所述元数据结构转化为所述目标数据库的目标数据结构;[0123]终端设备在生成执行脚本的同时或者之后,将针对待同步数据源进行元数据分析确定的元数据结构转化成为目标数据的目标数据结构。[0124]需要说明的是,在本实施例中,终端设备针对元数据结构进行转化仅仅是针对数据结构(或者格式)上的转化,因此,可以采用现有任意成熟的转化方式实现,本发明数据的同步方法,并不针对终端设备对元数据结构进行转化的方式进行具体地限定。[0125]具体地,例如,终端设备检测确定当前针对元数据进行同步存储的目标数据库为hive(hive是基于hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表),从而,终端设备在生成待同步数据源中所有数据表的数据集合—tableset作为该待同步数据源的元数据结构之后,终端设备随即利用现有成熟的数据结构转化技术,将该待同步数据源的字段类型映射转化成为java数据类型,从而将该数据集合—tableset转化成用于hive表结构。[0126]步骤s400,基于数据同步指令运行所述执行脚本以从所述待同步数据源抽取元数据,并将所述元数据按照所述目标数据结构导入至所述目标数据库中。[0127]终端设备在检测到数据同步指令之后,开始执行预先自动生成的执行脚本,从而自动的从待同步数据源中抽取当前业务需要同步的元数据,然后,终端设备按照按照检测确定的目标数据库的目标数据结构,同步将该元数据导入至该目标数据库当中进行映射存储。[0128]需要说明的是,在本实施例中,终端设备可以预先基于工作人员所输入的配置,定制一个循环生成的数据同步指令的时间周期,从而,终端设备即可只要在检测到系统当前时间达到该时间周期时,即自动触发该数据同步指令,或者,终端设备还可以基于工作人员自主的触发操作来实时的生成一个数据同步指令。[0129]进一步地,在一种可行的实施例中,上述步骤s400,还可以包括:[0130]步骤s401,在检测到数据同步指令时,运行所述抽数脚本以从所述待同步数据源中抽取元数据;[0131]步骤s402,运行所述同步数据脚本以按照所述目标数据库的所述目标数据结构将所述元数据导入至所述目标数据库中。[0132]终端设备在检测到数据同步指令之后,先运行预先自动生成的执行脚本中的抽数脚本,以自动的从待同步数据源中抽取得到当前业务需要同步的元数据,然后,终端设备按照目标数据结构将该元数据导入到目标数据库当中。[0133]具体地,例如,请参照附图4所示的数据同步的应用流程,终端设备预先基于工作人员配置生成一个定时作业,从而在系统时间达到该定时作业指向的时间节点时,终端设备即自动触发数据同步指令,进而,终端设备自动运行抽数脚本以从待同步数据源当中提取出当前业务需要执行数据同步的元数据。终端设备在运行抽取脚本以自动从待同步数据源中抽取得到当前业务需要同步的元数据之后,终端设备进一步运行预先自动生成的执行脚本中的同步数据脚本,从而自动的将抽取得到的元数据,按照检测确定的目标数据结构导入到目标数据库当中,以供该目标数据库针对该元数据进行映射存储,进而完成针对该待同步数据源与目标数据库之间的数据同步。[0134]本实施例提供一种数据的同步方法,通过终端设备在执行数据同步的过程中,首先针对当前业务下需要同步的元数据所属的待同步数据源进行元数据分析以确定该待同步数据源的元数据结构;终端设备在分析确定出待同步数据源的元数据结构之后,终端设备先检测确定出需要导入该待同步数据源中的元数据,已针对该元数据进行存储目标数据库,然后,终端设备从预先已经定制好的模板文件当中,提取出该目标数据库所对应的模板文件,并根据该模板文件自动生成用于执行数据同步的执行脚本;终端设备在生成执行脚本的同时或者之后,将针对待同步数据源进行元数据分析确定的元数据结构转化成为目标数据的目标数据结构;终端设备在检测到数据同步指令之后,开始执行预先自动生成的执行脚本,从而自动的从待同步数据源中抽取当前业务需要同步的元数据,然后,终端设备按照按照检测确定的目标数据库的目标数据结构,同步将该元数据导入至该目标数据库当中进行映射存储。[0135]本实施例与现有人工创建表数据结构和表写数据同步脚本的方式相比,在极大程度上减少了人工操作的工作量、降低了出错率,从而提高了数据同步的效率。此外,由于本实施例是通过导入元数据进行存储的目标数据库的模板文件来自动生成执行脚本,且,该模板文件已经预先定制生成,从而,在针对不同的业务进行数据同步时,只需选取对应的模板文件,以及,在存在数据同步的特殊需求时,只需针对该模板文件进行简单自定义调整,不仅确保了不同业务进行数据同步的通用性,更提高了业务数据同步的灵活性。[0136]进一步的,基于上述第一实施例,提出本发明数据的同步方法的第二实施例,在本实施例中,在上述步骤s10,确定待同步数据源的元数据结构的步骤之后,本方法数据的同步方法,还可以包括:[0137]步骤s50,获取扩展元数据的配置文件,并根据所述配置文件动态扩展所述元数据结构。[0138]需要说明的是,在本实施例中,终端设备除了仅获取待同步数据源中的全部数据表和各数据表各自的全部字段数据,进而仅基于该同步数据源所拥有的元数据来分析确定元数据结构之外,终端设备还可以基于业务需求动态扩展该待同步数据源的元数据结构,从而,进一步提高了针对业务进行数据同步时业务定制的灵活性。[0139]终端设备通过获取工作人员基于业务定制需求输入的扩展元数据的配置文件,从而,基于该配置文件来动态的扩展对待同步数据源的分析以实现扩展该待同步数据源的元数据结构。[0140]具体地,例如,请参照如图5所示的应用流程,终端设备在获取到工作人员基于业务定制需要所输入的用于扩展元数据的元数据配置文件—table.xml之后,终端设备首先创建一个扩展元数据解析器—metaextracolumnparser来封装解析算法,然后通过获取到的该元数据扩展文件—table.xml获取到document对象,再然后,通过现有成熟的树形递归解析算法—treework(elementelement)来解析该元数据扩展文件—table.xml得到元数据节点,并将该元数据节点的所有属性值封装到nodedata对象中,最后,终端设备将nodedata对象中包含的所有需要扩展的源数据列表:表元数据列表—attrributes和列元数据列表—childs,通过反射机制动态匹配到数据表,并将该数据表中的列数据动态扩展到数据表的数据集合—tableset中得到扩展后的元数据结构:[0141][0142][0143]需要说明的是,在本实施例中,终端设备通过树形递归解析算法—treework解析元数据节点,以将节点的所有属性值获取封装到nodedata对象中,具体可以采用如下算法:[0144][0145]即,首先,终端设备通过element对象获取根节点属性值,然后获取子节点对象childelement对象,再根据子节点对象递归调用treewalk函数进行解析,从而可解析n级别深度数据节点。[0146]此外,nodedata数据结构具体可以如下所示:[0147][0148][0149]在本实施例中,终端设备通过获取工作人员基于业务定制需求输入的扩展元数据的配置文件,从而,基于该配置文件来动态的扩展对待同步数据源的分析以实现扩展该待同步数据源的元数据结构。[0150]从而,除了仅获取待同步数据源中的全部数据表和各数据表各自的全部字段数据,进而仅基于该同步数据源所拥有的元数据来分析确定元数据结构之外,终端设备还可以基于业务需求动态扩展该待同步数据源的元数据结构,从而,进一步提高了针对业务进行数据同步时业务定制的灵活性。[0151]进一步的,基于上述第一实施例,提出本发明数据的同步方法的第三实施例,在本实施例中,本方法数据的同步方法,还可以包括:[0152]步骤s60,获取模板配置文件以根据所述模板配置文件针对所述目标数据库对应的模板文件进行调整或者定制生成新的模板文件。[0153]终端设备通过获取工作人员基于业务定制需求输入的模板配置文件,从而基于该模板配置文件针对已经定制好的与目标数据库相对应的模板文件进行调整,或者,基于该模板配置文件重新创建一个与目标数据库相对应的新的模板文件。[0154]具体地,例如,工作人员可基于终端设备输出的用户图像界面,针对业务定制需要输入模板配置文件,终端设备在接收到该模板配置文件之后,首先检测该模板配置文件是否为针对已有模板文件进行修改的模板配置文件,若是,则,终端设备从模板定义文件夹—templaterootdir中提取出需要进行修改的抽数模板文件或者同步数据模板文件,然后,终端设备即基于该模板配置文件针对需要进行修改的抽数模板文件或者同步数据模板文件进行适应调整,从而得到修改后的抽数模板文件或者同步数据模板文件。或者,终端设备在检测到接收到模板配置文件,是用于创建新的抽数模板文件或者同步数据模板文件时,终端设备即依据该模板配置文件定制生成一个新的抽数模板文件或者新的同步数据模板文件,并将该新的抽数模板文件或者新的同步数据模板文件,与用于导入待同步数据源的元数据对该元数据进行存储目标数据库之间建立对应关系。[0155]在本实施例中,终端设备通过获取工作人员基于业务定制需求输入的模板配置文件,从而基于该模板配置文件针对已经定制好的与目标数据库相对应的模板文件进行调整,或者,基于该模板配置文件重新创建一个与目标数据库相对应的新的模板文件。从而,实现了基于定制模板文件统一了抽象业务逻辑,该模板文件可以在不同业务执行数据同步时重复使用,极大程度上减少人工的重复劳动,此外,针对特殊的业务定制需求,只需针对模板文件进行适应修改而不用改变元数据抽取核心逻辑,不仅能够更加快速完成相应的业务功能,更提高了业务开发效率。[0156]进一步地,本发明还提供一种数据的同步装置。[0157]请参照图7,图7为本发明数据的同步装置一实施例的功能模块示意图。如图7所示,本发明数据的同步装置包括:[0158]确定模块10,用于确定待同步数据源的元数据结构;[0159]脚本生成模块20,用于检测目标数据库并根据所述目标数据库对应的模板文件生成同步数据的执行脚本;[0160]数据转化模块30,用于将所述元数据结构转化为所述目标数据库的目标数据结构;[0161]数据同步模块40,用于基于数据同步指令运行所述执行脚本以从所述待同步数据源抽取元数据,并将所述元数据按照所述目标数据结构导入至所述目标数据库中。[0162]进一步地,确定模块10,包括:[0163]获取单元,用于获取所述待同步数据源中的各数据表,并获取各所述数据表的各字段数据;[0164]第一确定单元,用于根据各所述字段数据和各所述数据表生成所述待同步数据源的元数据结构。[0165]进一步地,本发明数据的同步装置,还包括:[0166]元数据扩展模块,用于获取扩展元数据的配置文件,并根据所述配置文件动态扩展所述元数据结构。[0167]进一步地,脚本生成模块20,包括:[0168]检测单元,用于检测针对所述待同步数据源所属业务场景下数据库的选择配置;[0169]第二确定单元,用于将所述选择配置指向的数据库确定为导入元数据的目标数据库。[0170]进一步地,本发明数据的同步装置的数据转化模块30,还用于将所述元数据结构转化成模型数据对象;[0171]所述模板文件包括:抽数模板文件和同步数据模板文件,所述执行脚本包括:抽数脚本和同步数据脚本,所述脚本生成模块20,还包括:[0172]封装单元,用于将所述模型数据对象封装成自定义模板数据对象;[0173]读取单元,用于遍历预先定制的各模板文件以读取所述目标数据库对应的抽数模板文件和同步数据模板文件;[0174]生成单元,用于基于所述抽数模板文件和所述自定义模板数据对象生成抽数脚本,并基于所述同步数据模板文件和所述自定义模板数据对象生成同步数据脚本。[0175]进一步地,本发明数据的同步装置,还包括:[0176]模板扩展模块,用于获取模板配置文件以根据所述模板配置文件针对所述目标数据库对应的模板文件进行调整或者定制生成新的模板文件。[0177]进一步地,数据同步模块40,包括:[0178]抽数单元,用于在检测到数据同步指令时,运行所述抽数脚本以从所述待同步数据源中抽取元数据;[0179]同步单元,用于运行所述同步数据脚本以按照所述目标数据库的所述目标数据结构将所述元数据导入至所述目标数据库中。[0180]其中,上述本发明数据的同步装置中各个模块的功能实现与上述数据的同步方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。[0181]本发明还提供一种计算机存储介质,该计算机存储介质上存储有数据的同步程序,所述数据的同步程序被处理器执行时实现如以上任一项实施例所述的数据的同步方法的步骤。[0182]本发明计算机存储介质的具体实施例与上述数据的同步方法各实施例基本相同,在此不作赘述。[0183]需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。[0184]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。[0185]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。[0186]以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
:,均同理包括在本发明的专利保护范围内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1