数据同步方法、装置及计算机存储介质转让专利

申请号 : CN202110626893.0

文献号 : CN113254534B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 苏鑫孙磊蔡斌

申请人 : 四川省明厚天信息技术股份有限公司

摘要 :

本申请公开了一种数据同步方法、装置及计算机可读存储介质。其中,方法包括根据待同步关系型数据和待同步文件数据之间的对应关系、源端信息和目的端信息生成ETL配置文件;基于ETL配置文件从源端读取待同步关系型数据,并根据关系型数据和文件数据间的数据关联信息,将读取的待同步文件数据写入至目的端的文件存储区域;基于数据关联信息,在待同步关系型数据中增加标识待同步文件数据的关键信息;当检测到待同步文件数据完成写入操作,将待同步关系型数据写入至目的端的关系型数据存储区域,从而实现一次性同步关系型数据和文件数据,且使用者在访问数据时也无需了解原始业务系统中关系型数据和文件数据之间的关联关系。

权利要求 :

1.一种数据同步方法,其特征在于,包括:

根据待同步关系型数据和待同步文件数据之间的对应关系、源端信息和目的端信息生成ETL配置文件;

基于所述ETL配置文件,从源端读取所述待同步关系型数据,并根据预构建的关系型数据和文件数据间的数据关联信息,将读取的所述待同步文件数据写入至目的端的文件存储区域;

基于所述数据关联信息,在所述待同步关系型数据中增加标识所述待同步文件数据的关键信息;

在检测到所述待同步文件数据完成写入操作的同时,将所述待同步关系型数据写入至所述目的端的关系型数据存储区域;在查找得到所述待同步关系型数据之后,通过其携带的关键信息很快定位相应的文件数据。

2.根据权利要求1所述的数据同步方法,其特征在于,所述在检测到所述待同步文件数据完成写入操作的同时,将所述待同步关系型数据写入至所述目的端的关系型数据存储区域之后,还包括:预先授予用户接口访问权限;

当接收到通过关系型数据接口发送的数据访问指令,在验证用户具有接口访问权限之后,从所述关系型数据存储区域读取待访问关系型数据,并将所述待访问关系型数据及相对应文件数据的目标关键信息反馈给用户端;

通过文件接口发送携带所述目标关键信息的文件获取指令,根据所述目标关键信息从所述文件存储区域中读取待访问文件数据;

将所述待访问文件数据反馈给所述用户端。

3.根据权利要求1所述的数据同步方法,其特征在于,所述根据预构建的关系型数据和文件数据间的数据关联信息,将读取的所述待同步文件数据写入至目的端的文件存储区域,包括:根据所述源端的业务类型生成待访问关系型数据对应的所述待同步文件数据的文件路径;

生成所述待同步文件数据的对象id;

根据所述文件路径读取所述待同步文件数据,并获取所述待同步文件数据的占用容量值和文件输入流;

使用所述对象id将所述文件输入流写入至所述文件存储区域中,所述文件存储区域为对象存储。

4.根据权利要求3所述的数据同步方法,其特征在于,所述待同步关系型数据和所述待同步文件数据之间的对应关系为一对一或一对多,所述将所述待同步关系型数据写入至所述目的端的关系型数据存储区域,包括:所述待同步文件数据完成写入操作,输出对象存储数据桶和所述对象id;

获取所述ETL配置文件中的数据同步时间;

基于所述ETL配置文件的字段映射关系,将所述数据同步时间、所述对象存储数据桶、所述对象id和所述待同步关系型数据转换为输出表的格式,同时写入所述关系型数据存储区域。

5.根据权利要求4所述的数据同步方法,其特征在于,所述待同步关系型数据和所述待同步文件数据之间的对应关系为多对一或多对多,所述在检测到所述待同步文件数据完成写入操作的同时,将所述待同步关系型数据写入至所述目的端的关系型数据存储区域,包括:利用预先构建的记录集连接组件检测所述待同步文件数据是否完成写入操作;

若所述待同步文件数据完成写入操作,将所述待同步文件数据和所述待同步关系型数据同时输入至所述记录集连接组件中;

所述记录集连接组件对所述待同步文件数据和所述待同步关系型数据进行连接处理,以将所述对象存储数据桶和所述对象id与所述待同步关系型数据一起输出;

获取所述ETL配置文件中的数据同步时间;

基于所述ETL配置文件的字段映射关系,将所述数据同步时间、所述对象存储数据桶、所述对象id和所述待同步关系型数据转换为输出表的格式,同时写入所述关系型数据存储区域。

6.根据权利要求1至5任意一项所述的数据同步方法,其特征在于,所述ETL配置文件还包括组件参数信息配置信息,所述根据待同步关系型数据和待同步文件数据之间的对应关系、源端信息和目的端信息生成ETL配置文件包括:根据所述源端信息和所述目的端信息为所述待同步关系型数据生成所述ETL配置文件中的源库和目标库的数据源;

基于所述源端信息中的业务类型计算所述待同步关系型数据对应的待同步文件数据的绝对路径,并将所述绝对路径添加在所述待同步关系型数据中;

根据当前文件传输协议、所述待同步关系型数据和所述待同步文件数据之间的对应关系选择ETL过程中所需组件,同时配置各组件参数;所述组件包括文件同步组件、记录集连接组件和记录合并组件;

根据同步时间配置请求生成所述ETL配置文件的数据同步时间;

根据所述待同步关系型数据和所述待同步文件数据之间的对应关系生成所述ETL配置文件中数据输出格式。

7.根据权利要求6所述的数据同步方法,其特征在于,所述根据待同步关系型数据和待同步文件数据之间的对应关系、源端信息和目的端信息生成ETL配置文件之前,还包括:预先基于当前文件传输协议类型,构建用于从源端读取文件数据至目的端的文件同步组件;

若用于对所述目的端的数据进行数据共享的资源共享平台不支持文件访问,则为所述资源共享平台设置文件访问功能;

若用于对所述待同步文件数据和所述待同步关系型数据执行ETL的数据集成平台配置调用所述文件同步组件的功能。

8.一种数据同步装置,其特征在于,包括:

配置模块,用于根据待同步关系型数据和待同步文件数据之间的对应关系、源端信息和目的端信息生成ETL配置文件;

文件同步模块,用于基于所述ETL配置文件,从源端读取所述待同步关系型数据,并根据预构建的关系型数据和文件数据间的数据关联信息,将读取的所述待同步文件数据写入至目的端的文件存储区域;

字段标识模块,用于基于所述数据关联信息,在所述待同步关系型数据中增加标识所述待同步文件数据的关键信息;

同步模块,用于在检测到所述待同步文件数据完成写入操作的同时,将所述待同步关系型数据写入至所述目的端的关系型数据存储区域;在查找得到所述待同步关系型数据之后,通过其携带的关键信息很快定位相应的文件数据。

9.一种数据同步装置,其特征在于,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1至7任一项所述数据同步方法的步骤。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据同步程序,所述数据同步程序被处理器执行时实现如权利要求1至7任一项所述数据同步方法的步骤。

说明书 :

数据同步方法、装置及计算机存储介质

技术领域

[0001] 本申请涉及数据治理技术领域,特别是涉及一种数据同步方法、装置及计算机可读存储介质。

背景技术

[0002] 随着大数据、云技术的快速发展,互联网数据呈现爆炸性增长,相应的,数据治理便成为信息化的基础工作。数据治理是技术与管理相结合的一套持续改善管理机制,贯穿在数据管理的整个过程中,通常包括了组织架构、政策制度、技术工具、数据标准、流程规范、监督及考核等方方面面,将其他几个数据管理职能贯穿、协同在一起,让企业的数据工作成为一个有机整体而不是各自为政。数据治理涉及的IT技术主题众多,包括元数据管理、主数据管理、数据质量、数据集成、数据共享、监控与报告等。
[0003] 可以理解的是,不同业务系统之间的数据迁移,或者是将不同业务系统的数据迁移至数据中心或数据仓库,这都是不可避免的。而对于具体的某个业务来说,其同时具有文件数据和关系型数据,也即文件数据和关系型数据是相关联的。举例来说,对于图书馆借阅系统,用户信息如登录用户名和密码会存储在数据库中,用户头像是存储在文件系统中,用户名、密码、用户头像是相关联的一组登录图书馆借阅系统的数据。也就是说,对于这种业务系统,其在数据迁移过程中,是需要同时同步文件数据和关系型数据。
[0004] 目前广泛应用在ETL(Extract‑Transform‑Load)过程中的工具Kettle(KDE Extraction Transportation Transformation and Loading Environment),其自带的文件同步功能只能同步文件数据,不能同时同步关系型数据。只能将文件数据同步到作业运行的本地,不能将文件同步到远程服务器,更不能同步到远程对象存储中。此外,现有的数据集成厂商如华为、H3C只做平台不做业务,他们生产的数据集成工具只能单独同步关系型数据和文件数据。也不会解析业务建立关系型数据与文件数据关系。基于目前现状,在对数据进行同步过程中,相关技术通常是将关系型数据和文件数据进行单独同步,两个任务对应两个进程,即利用两个进程分别执行关系型数据和文件数据的同步任务。而可以理解的是,文件的数据量有时会远远的大于关系型数据,故二者同步使用时间相差较大,关系型数据同步完成时文件数据还未完成,极易造成新的关系式数据已经可以获取而相应文件数据却无法获取的现象,用户使用体验不好。而且在将数据同步到目的端之后,使用者还需要了解原业务系统的相关知识,才可以通过关系型数据找到相应的文件数据,不利于文件的高效共享。

发明内容

[0005] 本申请提供了一种数据同步方法、装置及计算机可读存储介质,关系型数据和文件数据在同一时间段内完成,实现关系型数据和文件数据的同步,且使用者在访问数据时也无需了解原始业务系统中关系型数据和文件数据之间的关联关系。
[0006] 为解决上述技术问题,本发明实施例提供以下技术方案:
[0007] 本发明实施例一方面提供了一种数据同步方法,包括:
[0008] 根据待同步关系型数据和待同步文件数据之间的对应关系、源端信息和目的端信息生成ETL配置文件;
[0009] 基于所述ETL配置文件,从源端读取所述待同步关系型数据,并根据预构建的关系型数据和文件数据间的数据关联信息,将读取的所述待同步文件数据写入至目的端的文件存储区域;
[0010] 基于所述数据关联信息,在所述待同步关系型数据中增加标识所述待同步文件数据的关键信息;
[0011] 在检测到所述待同步文件数据完成写入操作的同时,将所述待同步关系型数据写入至所述目的端的关系型数据存储区域。
[0012] 可选的,所述输出所述待同步关系型数据和所述待同步文件数据之间的关联信息之后,还包括:
[0013] 预先授予用户接口访问权限;
[0014] 当接收到通过关系型数据接口发送的数据访问指令,在验证用户具有接口访问权限之后,从所述关系型数据存储区域读取待访问关系型数据,并将所述待访问关系型数据及相对应文件数据的目标关键信息反馈给用户端;
[0015] 通过文件接口发送携带所述目标关键信息的文件获取指令,根据所述目标关键信息从所述文件存储区域中读取待访问文件数据;
[0016] 将所述待访问文件数据反馈给所述用户端。
[0017] 可选的,所述根据预构建的关系型数据和文件数据间的数据关联信息,将读取的所述待同步文件数据写入至目的端的文件存储区域,包括:
[0018] 根据所述源端的业务类型生成所述待访问关系型数据对应的所述待同步文件数据的文件路径;
[0019] 生成所述待同步文件数据的对象id;
[0020] 根据所述文件路径读取所述待同步文件数据,并获取所述待同步文件数据的占用容量值和文件输入流;
[0021] 使用所述对象id将所述文件输入流写入至所述文件存储区域中,所述文件存储区域为对象存储。
[0022] 可选的,所述待同步关系型数据和所述待同步文件数据之间的对应关系为一对一或一对多,所述将所述待同步关系型数据写入至所述目的端的关系型数据存储区域,包括:
[0023] 所述待同步文件数据完成写入操作,输出对象存储数据桶和所述对象id;
[0024] 获取所述ETL配置文件中的数据同步时间;
[0025] 基于所述ETL配置文件的字段映射关系,将所述数据同步时间、所述对象存储数据桶、所述对象id和所述待同步关系型数据转换为输出表的格式,同时写入所述关系型数据存储区域。
[0026] 可选的,所述待同步关系型数据和所述待同步文件数据之间的对应关系为多对一或多对多,所述在检测到所述待同步文件数据完成写入操作的同时,将所述待同步关系型数据写入至所述目的端的关系型数据存储区域,包括:
[0027] 利用预先构建的记录集连接组件检测所述待同步文件数据是否完成写入操作;
[0028] 若所述待同步文件数据完成写入操作,将所述待同步文件数据和所述待同步关系型数据同时输入至所述记录集连接组件中;
[0029] 所述记录集连接组件对所述待同步文件数据和所述待同步关系型数据进行连接处理,以将所述对象存储数据桶和所述对象id与所述待同步关系型数据一起输出;
[0030] 获取所述ETL配置文件中的数据同步时间;
[0031] 基于所述ETL配置文件的字段映射关系,将所述数据同步时间、所述对象存储数据桶、所述对象id和所述待同步关系型数据转换为输出表的格式,同时写入所述关系型数据存储区域。
[0032] 可选的,所述ETL配置文件还包括组件参数信息配置信息,所述根据待同步关系型数据和待同步文件数据之间的对应关系、源端信息和目的端信息生成ETL配置文件包括:
[0033] 根据所述源端信息和所述目的端信息为所述待同步关系型数据生成所述ETL配置文件中的源库和目标库的数据源;
[0034] 基于所述源端信息中的业务类型计算所述待同步关系型数据对应的待同步文件数据的绝对路径,并将所述绝对路径添加在所述待同步关系型数据中;
[0035] 根据当前文件传输协议、所述待同步关系型数据和所述待同步文件数据之间的对应关系选择ETL过程中所需组件,同时配置各组件参数;所述组件包括文件同步组件、记录集连接组件和记录合并组件;
[0036] 根据同步时间配置请求生成所述ETL配置文件的数据同步时间;
[0037] 根据所述待同步关系型数据和所述待同步文件数据之间的对应关系生成所述ETL配置文件中数据输出格式。
[0038] 可选的,所述根据待同步关系型数据和待同步文件数据之间的对应关系、源端信息和目的端信息生成ETL配置文件之前,还包括:
[0039] 预先基于当前文件传输协议类型,构建用于从源端读取文件数据至目的端的文件同步组件;
[0040] 若用于对所述目的端的数据进行数据共享的资源共享平台不支持文件访问,则为所述资源共享平台设置文件访问功能;
[0041] 若用于对所述待同步文件数据和所述待同步关系型数据执行ETL的数据集成平台配置调用所述文件同步组件的功能。
[0042] 本发明实施例另一方面提供了一种数据同步装置,包括:
[0043] 配置模块,用于根据待同步关系型数据和待同步文件数据之间的对应关系、源端信息和目的端信息生成ETL配置文件;
[0044] 文件同步模块,用于基于所述ETL配置文件,从源端读取所述待同步关系型数据,并根据预构建的关系型数据和文件数据间的数据关联信息,将读取的所述待同步文件数据写入至目的端的文件存储区域;
[0045] 字段标识模块,用于基于所述数据关联信息,在所述待同步关系型数据中增加标识所述待同步文件数据的关键信息;
[0046] 同步模块,用于在检测到所述待同步文件数据完成写入操作的同时,将所述待同步关系型数据写入至所述目的端的关系型数据存储区域。
[0047] 本发明实施例还提供了一种数据同步装置,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前任一项所述数据同步方法的步骤。
[0048] 本发明实施例最后还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有数据同步程序,所述数据同步程序被处理器执行时实现如前任一项所述数据同步方法的步骤。
[0049] 本申请提供的技术方案的优点在于,将待同步的关系型数据和文件数据在从源端提取、数据转换和加载至目的端整个过程中所需的数据信息生成ETL过程的配置文件,基于该配置文件对关系型数据和文件数据进行数据同步处理;在将文件数据导入至文件存储区域的同时将关系型数据同步至关系型数据存储区域,从而可一次性也即通过一个任务或一个作业将关系型数据和文件数据在同一时间段内完成数据同步,实现关系型数据和文件数据的同时同步;通过关系型数据和文件数据之间建立统一关联关系规则,同时将可标识文件数据的关键信息作为附加信息添加至关系型数据,这样使用者在查询到关系型数据后可立刻获悉相应文件数据,不需要熟悉原业务系统中关系型数据和文件数据业务规则,更有利于进行高效数据共享,提升用户体验。
[0050] 此外,本发明实施例还针对数据同步方法提供了相应的实现装置及计算机可读存储介质,进一步使得所述方法更具有实用性,所述装置及计算机可读存储介质具有相应的优点。
[0051] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。

附图说明

[0052] 为了更清楚的说明本发明实施例或相关技术的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0053] 图1为本发明实施例提供的一种数据同步方法的流程示意图;
[0054] 图2本发明实施例提供的关系型数据和文件数据的对应关系为一对一时的ETL过程的流程示意图;
[0055] 图3本发明实施例提供的关系型数据和文件数据的对应关系为多对一时的ETL过程的流程示意图;
[0056] 图4本发明实施例提供的关系型数据中一张表中有多个文件字段时的ETL过程的流程示意图;
[0057] 图5本发明实施例提供的另一种数据同步方法的流程示意图;
[0058] 图6本发明实施例提供的再一种数据同步方法的流程示意图;
[0059] 图7为本发明实施例提供的一种数据共享方法的流程示意图;
[0060] 图8本发明实施例提供的另一种数据共享方法的流程示意图;
[0061] 图9为本发明实施例提供的数据同步装置的一种具体实施方式结构图;
[0062] 图10为本发明实施例提供的数据同步装置的另一种具体实施方式结构图。

具体实施方式

[0063] 为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0064] 本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
[0065] 在介绍了本发明实施例的技术方案后,下面详细的说明本申请的各种非限制性实施方式。
[0066] 首先参见图1,图1为本发明实施例提供的一种数据同步方法的流程示意图,本发明实施例可包括以下内容:
[0067] S101:根据待同步关系型数据和待同步文件数据之间的对应关系、源端信息和目的端信息生成ETL配置文件。
[0068] 在本实施例中,文件数据为计算机系统中使用的最常见类型的文件之一。本质上,它可以是存储一个数据的任何文件,可以采取纯文本文件的形式、通过加密或编码后的文件或二进制文件格式。关系型数据是以关系数学模型来表述的数据,关系数学模型中以二维表的形式来描述数据。关系型数据的格式可为关系型数据库、excel、csv等,通常来说,关系型数据库中存储的为关系型数据,当然也有非关系型数据。对于非关系型数据,比如mongodb、hbase、kudu,可以先将非关系型数据转换为关系型数据,然后在其转换为关系型数据的情况下,采用本申请技术方案即任意一个实施例所述数据同步方法来实现与文件数据的数据同步。待同步关系型数据和待同步文件数据是指本实施例中需要从源端同步至目的端的数据。源端可以是任何一种业务系统,源端可以同时有多个,目的端可以为数据中心或者数据仓库,也即本申请可将多个业务系统的关系型数据和文件数据一次性地同步至数据中心。数据中心是多个数据库共同组成的包含关系型数据库、非关系型数据库、分布式文件系统等。源端信息可包括待同步关系型数据和待同步文件数据的原始存储位置、业务系统执行的业务类型、文件传输协议等,目的端信息可包括待同步关系型数据和待同步文件数据最终同步的目标存储位置等。文件同步组件可用于同步文件输出文件关键信息,本实施例的待同步文件数据从源端迁移至目的端的工具为文件同步组件,待同步关系型数据可采用表输入、表输出格式进行数据同步。参数信息例如包括但并不限制于数据存储路径、文件数据名称、线程数等。关系型数据与文件数据之间的对应关系是指一条或几条关系型数据对应几个文件数据,可包括一对一、多对一、一对多、多对多、关系型数据的一个表中有多个文件字段。举例来说,关系型数据库ER模型中一对一即一个业务对象对应一条关系型数据对应一个文件、一对多即一个业务对象对应一条关系型数据对应多个文件、多对一即多个业务对象对应多条关系型数据对应一个文件、多对多即多个业务对象对应多条关系型数据对应多个文件。ETL配置文件即为配置ETL(即Extract‑Transform‑Load)过程所需的所有数据信息,ETL用于描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端。
[0069] S102:基于ETL配置文件,从源端读取待同步关系型数据,并根据预构建的关系型数据和文件数据间的数据关联信息,将读取的待同步文件数据写入至目的端的文件存储区域。
[0070] 在本步骤中,数据关联信息是指关系型数据和文件数据所建立的统一关系规则,用于通过关系型数据便可以找到相对应的文件数据,或者是通过文件数据便可找到相对应的关系型数据。本实施例先从存储待同步关系型数据的源端如原业务系统中进行数据读取,然后基于待同步关系型数据和待同步文件数据间的数据关联信息对相对应的文件数据进行数据读取,在读取得到文件数据之后,由于文件数据的占用空间容量值相比关系型数据来说,往往很大,需要耗费较长时间,故本实施例在读取到待同步文件数据之后就直接先将其加载至目的端,本实施例将待同步文件数据从源端加载至目的端的文件存储区域,文件存储区域用于存储文件数据,文件存储区域包括但并不限制于为文件系统或对象存储设备,文件系统例如可为分布式文件系统,对象存储设备例如可为minio,minio为基于Apache License v2.0开源协议的对象存储服务。
[0071] S103:基于数据关联信息,在待同步关系型数据中增加标识待同步文件数据的关键信息。
[0072] 本步骤中的关键信息是指可找到待同步文件数据的数据,关键信息的数据类型可与文件数据检索过程所采用的方法保持一致,这样在查找得到待同步关系型数据之后,通过其携带的关键信息便可很快定位相应的文件数据了。举例来说,若将待同步文件数据同步至对象存储中,且数据关联信息是通过对象id和对象存储数据桶来确定的,那么关键信息即为待同步文件数据的对象存储数据桶名和对象id。
[0073] S104:在检测到待同步文件数据完成写入操作的同时,将待同步关系型数据写入至目的端的关系型数据存储区域。
[0074] 关系型数据存储区域例如可为任何一种数据库,包括但并不限制于为oracle、mysql、sql server等。相比于文件数据而言,由于关系型数据的大小均很小,在待同步文件数据写入操作完成同时将待同步关系型数据写入至关系型数据存储区域,可近似认为待同步关系型数据和待同步文件数据是在同一时间段完成数据同步的。
[0075] 在本发明实施例提供的技术方案中,将待同步的关系型数据和文件数据在从源端提取、数据转换和加载至目的端整个过程中所需的数据信息生成ETL过程的配置文件,基于该配置文件对关系型数据和文件数据进行数据同步处理;在将文件数据导入至文件存储区域的同时将关系型数据同步至关系型数据存储区域,从而可一次性也即通过一个任务或一个作业将关系型数据和文件数据在同一时间段内完成数据同步,实现关系型数据和文件数据的同时同步;通过关系型数据和文件数据之间建立统一关联关系规则,同时将可标识文件数据的关键信息作为附加信息添加至关系型数据,这样使用者在查询到关系型数据后可立刻获悉相应文件数据,不需要熟悉原业务系统中关系型数据和文件数据业务规则,更有利于进行高效数据共享,提升用户体验。
[0076] 在上述实施例中,对于如何执行步骤S101并不做限定,本实施例中给出ETL配置文件生成的一种实施方式,可包括如下步骤:
[0077] A1:根据源端信息和目的端信息为待同步关系型数据生成ETL配置文件中的源库和目标库的数据源。
[0078] 源库即为待同步关系型数据进行数据同步之前的存储位置,源库例如可为源业务库,目标库为待同步关系型数据进行数据同步要存储的位置,例如关系型数据库。
[0079] A2:基于源端信息中的业务类型计算待同步关系型数据对应的待同步文件数据的绝对路径,并将绝对路径添加在待同步关系型数据中。
[0080] 其中,通过关系型数据中某些字段,再经过映射计算得出绝对路径,绝对路径就是全路径从系统根目录开始的,比如:D:\stsws1\mht_lark_bdip\lark‑bdip‑server\target。
[0081] A3:根据当前文件传输协议、待同步关系型数据和待同步文件数据之间的对应关系选择ETL过程中所需组件,同时配置各组件参数。
[0082] 本步骤中的组件包括文件同步组件、记录集连接组件和记录合并组件。文件同步组件可包括多种类型、且均用于实现文件同步功能的工具,例如可基于不同的文件传输协议构建多个不同类型的组件。若文件同步组件是基于不同文件传输协议构建的,则ETL过程中所需的文件同步组件是由当前文件传输协议来决定的,与待同步关系型数据和待同步文件数据之间的对应关系无关。对于待同步关系型数据和待同步文件数据之间的对应关系为一对一或一对多时,不需要记录集连接组件和记录合并组件。而对于待同步关系型数据和待同步文件数据之间的对应关系为多对一或多对多时,由于数据连接操作必须等待两个数据集都全部到达才能进行集合运算,所以需要记录集连接组件,记录集连接组件用于将文件关键信息连接到关系型数据。对于待同步关系型数据和待同步文件数据之间的对应关系为同一条关系型数据表中有多个文件字段时,需要记录集连接组件和记录合并组件,对于该实施例,记录集连接组件用于连接多个文件字段的关键信息,比如有两个文件字段file1、file2,连接之后就有file1的对象id和桶名,和file2的对象id和桶名。记录合并组件用于将合并多个文件字段的异常数据。
[0083] A4:根据同步时间配置请求生成ETL配置文件的数据同步时间。
[0084] A5:根据待同步关系型数据和待同步文件数据之间的对应关系生成ETL配置文件中数据输出格式。
[0085] 数据输出格式包括输出哪些数据,以及以哪种格式如表格进行数据输出,所属领域技术人员可根据实际应用场景进行灵活选择。数据同步时间用于表示数据什么时候进行同步,若数据同步时间为系统时间,则在文件同步输出关联信息后立刻添加一个当前时间。
[0086] 作为本实施例的一种可选的实施方式,在进行配置文件生成之前,还需要做一些准备工作,可包括:预先基于当前文件传输协议类型,构建用于从源端读取文件数据至目的端的文件同步组件。举例来说,文件同步组件例如可包括SCP读取文件到minio、SFTP(Secret File Transfer Protocol,安全文件传送协议)读取文件到minio、读取本地文件到minio、删除minio文件等,其中SCP为Linux的远程拷贝命令,用于远程复制Linux中文件和目录。若用于对目的端的数据进行数据共享的资源共享平台不支持文件访问,则为资源共享平台设置文件访问功能;若用于对待同步文件数据和待同步关系型数据执行ETL的数据集成平台配置调用文件同步组件的功能。数据集成平台可为基于开源kettle二次开发的ETL在线运行、管理、监控系统。资源共享平台用于将数据库中数据、文件数据以接口方式提供给第三方厂商使用的系统,可包含数据门户、资源共享服务。
[0087] 为了使所属领域技术人员更加清楚明白上述实施例所述的ETL过程,本实施例还以具体的示意性例子来阐述关系型数据与文件数据的ETL配置过程,在本实施例中,待同步关系型数据和待同步文件数据均是业务系统中的数据,目的端为数据中心,可包括下述内容:
[0088] 对于待同步关系型数据和待同步文件数据之间的对应关系为一对一的情况,新建ETL过程配置包括:
[0089] B1:配置业务系统关系型数据的数据源。如果数据源已存在则跳过该步骤。若存储关系型数据的是关系型数据库且其采用SQL(Structured Query Language,结构化查询语言)语句,则数据源一般通过JDBC(Java Data Base Connectivity,java数据库连接)方式从关系型数据库中访问待同步关系型数据。数据源是数据存储库的定义,比如:IP为192.168.3.100,端口为3306,账号为root,密码为123456,数据库名为test的mysql数据库就是一个数据源。
[0090] B2:配置数据输入,选择业务系统关系型数据的数据源,设置SQL查询语句,一般查询业务表中所有字段。若为第一次输入,则可进行全量数据查询,为了提高数据输入效率,之后可根据关系型数据是否有增量字段处理,也即通过查询增量数据的方式进行配置数据的输入。
[0091] B3:实施人员在现场根据业务类型和关系型数据计算出关系型数据对应文件数据的绝对路径,添加到关系型数据中。该步骤具体实现并不固定,实施人员在现场根据业务类型自行处理。比如关系型数据中已包含文件绝对路径,则不需要额外处理。比如关系型数据中记录了相对路径,则基于相对路径添加目录前缀获取绝对路径。举例来说,业务系统是根据专业和学号存储证件照的,则先从关系型数据中获取专业和学号,再通过专业和学号定位文件绝对路径。
[0092] B4:实施人员在现场根据业务类型和关系型数据计算对应待同步文件数据的文件原名。在本步骤中,文件数据在上传到web服务后,文件名一般都会重命名为数字和字母的组合,因为不同的操作系统、不同的分布式文件系统、不同的web容器对路径名规则不一样,甚至是同一个业务对应的文件名都相同,如两个用户都传各自的头像都叫“头像.jpg”,服务器用一个目录存头像就没法存了,一个目录下不允许相同文件名,为了保存信息系统会随机修改文件名。所以,文件数据的文件名能不能还原,与整个源业务系统的设计直接相关。如果业务系统自身没有保存文件原名,也没有业务规则还原则无解,那么这种情况便无法还原文件名,比如业务系统中文件按年月日加随机数重命名文件,且业务系统也不保存文件原名。如果无法根据业务还原文件原名,则跳过该步骤。实施人员在现场根据业务自行处理。
[0093] B5:根据访问文件的协议选择相应的文件同步组件。如果ETL作业运行的服务器与文件所在服务器相同,则选择可读取本地文件的文件存储区域的组件,如组件“读取本地文件到minio”。如果ETL作业运行的服务器与文件所在服务器不同,且文件所在服务器为LINUX系统,则选择远程拷贝文件至文件存储区域的组件,如组件“SCP读取文件到minio”,一般LINUX系统已自带SCP,如果没有可以安装。如果ETL作业运行的服务器与文件所在服务器不同,且文件所在服务器为WINDOWS系统,则选择SFTP读取文件到文件存储区域的组件,一般还需要额外安装SFTP服务。
[0094] B6:配置相应文件同步组件参数。文件同步组件参数除了文件路径字段如绝对路径字段,文件存储区域的地址、账户和密码和线程数之外,其他的参数可根据所选择的文件同步组件类型来决定,不同的分布式文件系统、对象存储要求参数可能会不一样。比如若文件存储区域为使用minio,则需要配置对象存储minio的地址、账号、密码和对象存储数据桶名或简称为存储桶名。若利用fastdfs替换minio,则只需要配置fastdfs的地址、账号、密码。若上述文件同步组件选择的是“SCP读取文件到minio”、“SFTP读取文件到minio”需要配置远程服务器的IP、端口、账号、密码。账号必须有读取绝对路径文件的权限。若选择的组件为“读取本地文件到minio”,作业启动用户必须有读取绝对路径文件的权限。此外,若上个步骤计算得到文件的名称,则文件同步组件的参数需要配置文件的原始名字段。若用户并未根据数据量配置线程数,则采用默认的线程数。
[0095] B7:文件同步组件正确输出,即无异常后,可配置添加同步时间。为方便使用,同步时间可为系统当前时间。
[0096] B8:配置关系型数据的目标库如共享库、中心库、贴源库的数据源。若数据源已存在则跳过该步骤。本步骤是定义一个数据源表示目标库。
[0097] B9:配置关系型数据输出,选择目标库的数据源,设置输出表的表名,表名例如可与业务表名相同。如果输出表不存在,则创建表结构。同时还可指定字段映射关系,一般不改变字段名,所有字段都输出。
[0098] B10:文件同步组件错误输出,即文件同步组件异常,则还可给关系型数据添加异常信息字段和异常编码字段。
[0099] B11:若文件同步组件错误输出后,还可添加同步时间,一般为系统当前时间。
[0100] B12:配置关系型数据异常输出,选择目标库的数据源,设置输出表名,一般为业务表名加后缀_error。并指定字段映射关系,一般不改变字段名,所有字段都输出。如果输出表或者是目标表不存在,则创建表结构。
[0101] 相应的,基于上述ETL过程的配置,针对于待同步关系型数据和待同步文件数据之间的对应关系为一对一的ETL过程请参阅图2,图2以将文件数据同步至mino,将关系型数据同步至关系型数据数据库为例,首先通过表输入格式将待同步关系型数据进行输入,基于java代码生成待同步文件数据的绝对路径,并基于源业务系统类型计算得到待同步文件的文件原名,调用SCP读取文件至mino这个文件同步组件将待同步文件数据同步至mino中,获取当前系统时间,并将当前系统时间作为同步时间,连同待同步关系型数据、待同步文件的对象id和桶名以输出表形式进行输出。若同步某个文件数据失败后,文件同步组件输出待同步关系型数据和异常信息。然后获取失败时间。最后保存异常数据。
[0102] 对于待同步关系型数据和待同步文件数据之间的对应关系为一对多的情况,分别对每个待同步关系型数据,依次按照上述一对一的步骤执行一次,即完成待同步关系型数据和待同步文件数据之间的对应关系为一对多的整个ETL过程配置。
[0103] 对于待同步关系型数据和待同步文件数据之间的对应关系为多对一的情况,新建ETL过程配置包括:
[0104] C1:需要预先查询源端业务系统所有的文件信息,例如可使用SQL中DISTINCT来查询,该步骤具体实现并不固定,实施人员在现场根据业务自行处理。
[0105] C2:对上个步骤查询得到的文件信息,按照与上述B3‑B6步骤相同的方法进行文件信息配置。
[0106] C3:按照与上述B1‑B2步骤相同的方法对关系型数据的表输入进行相应配置。
[0107] C4:若文件同步组件正确输出,即文件同步组件输出无异常,配置记录集连接组件,记录集连接组件用于连接两个数据集,一个来自文件同步组件正确输出,另一个来自关系型数据表输入的输出,进行左连接,左边为关系型数据表输入的输出(保证关系型数据全部存在),连接条件为文件信息相关字段。
[0108] C5:按照与上述B7‑B12步骤相同的方法进行相应配置。
[0109] 相应的,基于上述ETL过程的配置,针对于待同步关系型数据和待同步文件数据之间的对应关系为多对一的ETL过程请参阅图3,图3以将文件数据同步至mino,将关系型数据同步至关系型数据数据库为例,首先通过表输入格式将待同步关系型数据和待同步文件数据进行输入,并将待同步关系型数据加载至记录集连接组件中。基于java代码生成待同步文件数据的绝对路径,并基于源业务系统类型计算得到待同步文件的文件原名,调用SCP读取文件至mino这个文件同步组件将待同步文件数据加载至记录集连接组件中,记录集连接组件在检测到待同步文件数据和待同步关系型数据的所有数据均已成功加载,将待同步文件数据和待同步关系型数据进行连接。获取当前系统时间,并将当前系统时间作为同步时间,连同经记录集连接组件连接得到的数据以输出表形式进行输出。若同步某个文件数据失败后,文件同步组件输出待同步关系型数据和异常信息。然后获取失败时间,最后保存异常数据。
[0110] 对于待同步关系型数据和待同步文件数据之间的对应关系为多对多的情况,分别对每个待同步文件数据,依次按照上述多对一的步骤执行一次,即完成待同步关系型数据和待同步文件数据之间的对应关系为多对多的整个ETL过程配置。
[0111] 对于待同步关系型数据和待同步文件数据之间的对应关系为关系型数据中一个表中有多个文件字段,如表5所示,比如用户表中身份证复印件有正反两张图片,使用两个字段记录。以表结构举例,表1表示待同步关系型数据和待同步文件数据之间的对应关系为一对一,表2表示待同步关系型数据和待同步文件数据之间的对应关系为一对多,表3表示待同步关系型数据和待同步文件数据之间的对应关系为多对一,表4表示待同步关系型数据和待同步文件数据之间的对应关系为多对多,表5表示待同步关系型数据和待同步文件数据之间的对应关系为一个表中多个文件字段。对于表5所示情况,新建ETL过程配置包括:
[0112] 表1 一对一
[0113]
[0114] 表2 一对多
[0115]
[0116]
[0117] 表3 单独的关系表的多对一
[0118]
[0119] 表4 单独的关系表的多对多
[0120]
[0121] 表5 一个表中多个文件字段
[0122]
[0123] D1:按照与上述B1‑B2步骤相同的方法先配置相应关系型数据的表输入。
[0124] D2:将数据输出复制为多份,份数与文件字段个数相同,例如一个表中有2个文件字段,则复制两份数据,分别对每个文件字段按照与上述B3‑B6步骤相同的方法进行相应配置。
[0125] D3:每份数据在文件同步组件正确输出后,对存储桶名、对象id进行重命名,以防止后面连接记录时字段名冲突。
[0126] D4:对重命名之后的多个数据,配置记录集连接组件,并利用该组件进行内连接,连接条件为关系型数据主键,结果包含多个文件的存储桶名、对象id。
[0127] D5:按照与上述B7‑B9步骤相同的方法进行相应配置,以将正确的数据写入相应数据库。
[0128] D6:调用合并组件对读取的多个待同步文件的文件同步异常的数据进行合并。举例来说,待同步文件字段为file1和file2,则本步骤会读取file1同步异常数据有哪些,file2同步异常数据的有哪些,然后将file1和file2的同步异常数据进行合并。。
[0129] D7:对合并后的输出数据,按照与上述B10‑B12步骤相同的方法进行相应异常处理配置。
[0130] 相应的,基于上述ETL过程的配置,针对于待同步关系型数据和待同步文件数据之间的对应关系为一个表中有多个文件字段的ETL过程请参阅图4,图4以将文件数据同步至mino,将关系型数据同步至关系型数据数据库为例,首先通过表输入格式将待同步关系型数据进行输入。基于java代码生成待同步关系型数据对应的每个待同步文件数据的绝对路径,并基于源业务系统类型计算得到各待同步文件的文件原名,调用SCP读取文件至mino这个文件同步组件将各待同步文件数据加载至记录集连接组件中,记录集连接组件在检测到各待同步文件数据和待同步关系型数据的所有数据均已成功加载,将待同步文件数据和待同步关系型数据进行连接。获取当前系统时间,并将当前系统时间作为数据同步时间,连同经记录集连接组件连接得到的数据以输出表形式进行输出。在调用SCP读取文件至mino这个文件同步组件读取各待同步文件数据之后,还利用合并组件对各待同步文件的同步异常数据进行合并处理。若同步某个文件数据失败后,文件同步组件输出待同步关系型数据和异常信息。然后获取失败时间,最后保存异常数据。
[0131] 上述实施例针对文件数据和关系型数据不同的对应关系下的ETL过程进行了示意性说明,所属领域技术人员可根据实际情况灵活调整配置过程,有利于实现高效数据同步。
[0132] 在上述实施例中,对于如何执行步骤S102并不做限定,本实施例中给出该步骤一种可选的实施方式,本实施例以将待同步文件数据存储至mino为例,请参阅图5,可包括如下步骤:
[0133] 根据源端的业务类型生成待访问关系型数据对应的待同步文件数据的文件路径;然后例如可利用唯一id生成算法生成待同步文件数据的对象id;根据文件路径读取待同步文件数据,并获取待同步文件数据的占用容量值和文件输入流;使用对象id将文件输入流写入至文件存储区域中,文件存储区域为对象存储。
[0134] 作为本实施例的一种可选的实施方式,若待同步关系型数据和待同步文件数据之间的对应关系为一对一或一对多,将待同步关系型数据写入至目的端的关系型数据存储区域的过程,请参阅图6,可包括:
[0135] 待同步文件数据完成写入操作,输出对象存储数据桶和对象id;获取ETL配置文件中的数据同步时间;于ETL配置文件的字段映射关系,将数据同步时间、对象存储数据桶、对象id和待同步关系型数据转换为输出表的格式,同时写入关系型数据存储区域。
[0136] 作为本实施例的一种可选的实施方式,若待同步关系型数据和待同步文件数据之间的对应关系为多对一或多对多,在检测到待同步文件数据完成写入操作的同时,将待同步关系型数据写入至目的端的关系型数据存储区域的过程,请参阅图6,可包括:
[0137] 利用预先构建的记录集连接组件检测待同步文件数据是否完成写入操作;若待同步文件数据完成写入操作,将待同步文件数据和待同步关系型数据同时输入至记录集连接组件中;记录集连接组件对待同步文件数据和待同步关系型数据进行连接处理,以将对象存储数据桶和对象id与待同步关系型数据一起输出;获取ETL配置文件中的数据同步时间;基于ETL配置文件的字段映射关系,将数据同步时间、对象存储数据桶、对象id和待同步关系型数据转换为输出表的格式,同时写入关系型数据存储区域。
[0138] 为了使所属领域技术人员更加清楚明白上述实施例数据同步过程,本实施例还以具体的示意性例子来阐述关系型数据与文件数据的数据同步过程,如图5和图6两幅图为数据同步的完整流程,图5的步骤生成文件的对象id之后,执行图6的步骤根据文件绝对路径读取文件步骤。在本实施例中,待同步关系型数据和待同步文件数据均是业务系统中的数据,目的端为数据中心,具体是将业务系统中的关系型数据和文件数据分别同步至数据中心的关系型数据库和mino,若将文件数据同步至其他文件存储区域,整个数据执行过程相同,需要根据所采用的存储区域的类型调整相应的参数,例如如果minio换成其他fastdfs过程是一样,只是minio和fastdfs连接参数不一样,文件原名附带方式不一样。如果minio换成ftp、sftp则无法附带文件原名。整个数据同步过程分别以关系型数据与文件数据一对一和多对一为例分别说明,下面先阐述一对一的数据同步过程,可包括:
[0139] E1:启动ETL作业。
[0140] E2:根据关系型数据输入配置获取数据源信息,根据数据源信息创建JDBC连接。通过JDBC连接执行SQL查询语句从关系型数据库读取数据并进行输出。
[0141] E3:根据实施现场设计的计算逻辑计算关系型数据对应文件的绝对路径。数据输入来自步骤E2的输出。输出中增加了绝对路径字段。
[0142] E4:如果配置了文件原名计算逻辑则计算文件原名,数据输入来自步骤E3的输出。输出中增加了文件原名字段。
[0143] E5:数据进入文件同步组件前,需要对文件同步组件进行初始化处理:验证配置参数是否合法,必填项是否为空,minio存储桶名是否符合Amazon S3规范。建立与minio的连接如使用地址、账号、密码,判断配置的存储桶是否存在,如果不存在则新建存储桶。如果组件为“SCP读取文件到minio”、“SFTP读取文件到minio”还会使用IP、端口、账号、密码来建立与文件所在服务器的连接。获取配置的绝对路径字段和文件原名字段。如果线程数大于1则会创建多个组件实例并行执行,一个实例为一个线程。数据输入通过轮询方式分配到多个实例。
[0144] E6:数据进入文件同步组件后,获取数据中的绝对路径值和文件原名,如果未指定文件原名字段,则文件原名为null。
[0145] E7:可使用uuid(Universally Unique Identifier,通用唯一识别码)生成文件的对象id。
[0146] E8:根据文件绝对路径获取文件大小,并以输入流的形式读取文件二进制数据。
[0147] E9:将输入流写入minio对象存储,对象id使用E7所生成的信息。如果文件原名不为null,则同时以tags(键值对结构)形式将文件原名附带给对象,文件原名键original File Name。
[0148] E10:文件数据流写入minio成功后,文件同步组件输出数据中增加字段bucket_name_(存储桶名)、file_id_(文件的对象id)、file_size_(文件大小)名字固定。
[0149] E11:在步骤E5‑E10的过程中出现异常,则判断是否配置异常处理,即相应的ETL配置过程中的步骤B10‑B12是否配置。如果未配置异常处理,则出现一次异常后就停止整个ETL的运行,并输出错误日志。如果配置了异常处理,则将当次的错误信息和错误编码作为字段增加到错误输出中,然后继续执行下一条数据。
[0150] E12:文件同步组件正确处理后的数据进入步骤B7配置的获取系统时间,数据输入为步骤E10的输出,输出数据中增加字段同步时间。
[0151] E13:将步骤E12的数据输出作为输入到步骤B9配置的关系型数据输出,根据配置获取数据源信息,根据数据源信息创建JDBC连接,根据字段映射将输入的数据转为输出表的格式,批量写入关系型数据库。
[0152] E14:如果配置了步骤B11和B12,则执行类似步骤E12和E13的过程将异常数据写入关系型数据库。
[0153] 对于待同步关系型数据和待同步文件数据之间的对应关系为一对多的情况,分别对每个待同步关系型数据,依次按照上述一对一的步骤执行一次,即完成待同步关系型数据和待同步文件数据之间的对应关系为一对多的整个数据同步过程。
[0154] 对应关系为多对一的待同步关系型数据和待同步文件数据执行数据同步过程可包括:
[0155] F1:启动ETL作业。
[0156] F2:根据关系型数据输入配置获取数据源信息,根据数据源信息创建JDBC连接。通过JDBC连接执行SQL查询语句即配置C1中查询所有文件信息的语句,从关系型数据库读取数据并进行输出。
[0157] F3:根据实施现场设计的计算逻辑计算关系型数据对应文件的绝对路径。数据输入来自步骤F2的输出。输出中增加了绝对路径字段。
[0158] F4:如果配置了文件原名计算逻辑则计算文件原名,数据输入来自步骤F3的输出。输出中增加了文件原名字段,若没有设置文件原名,计算逻辑则不会增加该字段。
[0159] F5:数据进入文件同步组件前,对该组件初始化,初始化过程与上述步骤的E5相同。
[0160] F6‑F9:按照与上述实施例的步骤E6‑E9相同的方法进行处理。
[0161] F10:文件数据流写入minio成功后,文件同步组件输出数据中增加字段bucket_name_(存储桶名)、file_id_(文件的对象id)、file_size_(文件大小)名字固定。
[0162] F11:在步骤F6‑F10的过程中出现异常,则判断是否配置异常处理,即C5步骤中的异常处理相关项没有配置,则出现一次异常后就停止整个ETL的运行,并输出错误日志。如果配置了异常处理,则将当次的错误信息和错误编码作为字段增加到错误输出中,然后继续执行下一条数据。
[0163] F12:根据关系型数据输入配置获取数据源信息,根据数据源信息创建JDBC连接。通过JDBC连接执行SQL查询语句从关系型数据库读取数据并进行输出。对应ETL配置过程中的步骤C3,即图4中的记录集连接上方的“表输入‑关系型数据”。
[0164] F13:记录集连接组件等待两路数据全部输入完成,ETL启动时两路数据同时执行,分别将数据输入到记录集连接组件。图四“记录集连接”的左边和上面为两路数据。
[0165] F14:记录集连接组件对两个数据集合进行左连接,左边为步骤F12的输出(保证关系型数据全部存在),右边为步骤F10的正确输出,作用为给F11的输出集合增加字段bucket_name_(存储桶名)、file_id_(文件的对象id)、file_size_(文件大小)。将连接后的数据集合输出到下一步。
[0166] F15:记录集连接组件处理后的数据进入配置的获取系统时间,数据输入为步骤F13的输出,输出数据中增加字段同步时间。
[0167] F16:将步骤F15的数据输出作为输入到配置的关系型数据输出,根据配置获取数据源信息,根据数据源信息创建JDBC连接,根据字段映射将输入的数据转为输出表的格式,批量写入关系型数据库。
[0168] 对于待同步关系型数据和待同步文件数据之间的对应关系为多对多的情况,分别对每个待同步文件数据,依次按照上述多对一的步骤执行一次,即完成待同步关系型数据和待同步文件数据之间的对应关系为多对多的整个数据同步过程。
[0169] 上述实施例针对文件数据和关系型数据不同的对应关系下的数据同步过程进行了示意性说明,所属领域技术人员可根据实际情况灵活调整数据同步过程,从而实现同步文件数据和关系型数据。
[0170] 作为一种可选的实施方式,本申请还提供文件数据删除服务和文件数据修改服务,为了提供数据删除和/或文件修改服务,可预先构建用于删除文件数据的组件,例如文件数据同步至mino,则可预先构建“删除minio文件组件”,比如业务系统中文件删除、或修改之后再次进行同步时可以删除对象存储中的文件,非必须步骤。如果想要记录文件历史数据则可以不使用“删除minio文件”。
[0171] 在本实施例中,若使用该组件,在ETL配置过程中,还需要对文件删除组件进行相应的参数配置和初始化过程,参数配置可包括文件存储位置的地址、账号、密码、线程数等。组件初始化与参数配置相吻合。以“删除minio文件组件”为例,配置组件信息包括:配置对象存储minio的地址、账号、密码和存储桶名。配置输入数据的桶名字段。配置输入数据的对象id字段。根据数据量配置线程数。“删除minio文件”使用,初始化过程为:使用地址、账号、密码建立与minio的连接;获取配置的桶名字段和对象id字段;如果线程数大于1则会创建多个组件实例并行执行,一个实例为一个线程。数据输入通过轮询方式分配到多个实例。
“删除minio文件组件”的执行过程为:删除minio文件组件获取输入数据中的桶名、对象id;
判断桶名、对象id是否为空,如果有一个空或者两个都为空则抛出异常,进入异常数据处理。如果两个都不为空则使用桶名、对象id作为参数,调用minio接口删除文件。
[0172] 在上述实施例实现了一次性将源端的关系型数据和文件数据同步到目的端之后,例如可将多个业务系统中关于同时拥有文件数据和关系型数据的业务可以同步到同一的数据中心,然后可对外提供接口开放以实现数据共享,例如可将数据共享开放给第三方厂商。数据共享过程可包括下述内容:
[0173] 预先授予用户接口访问权限。
[0174] 当接收到通过关系型数据接口发送的数据访问指令,在验证用户具有接口访问权限之后,从关系型数据存储区域读取待访问关系型数据,并将待访问关系型数据及相对应文件数据的目标关键信息反馈给用户端;
[0175] 通过文件接口发送携带目标关键信息的文件获取指令,根据目标关键信息从文件存储区域中读取待访问文件数据;
[0176] 将待访问文件数据反馈给用户端。
[0177] 在数据共享过程中,数据共享的实现过程和上述数据同步过程保持一致,也即数据共享过程中涉及到的数据查询过程要与预先构建的关系型数据和文件数据之间的数据关联关系保持一致。本实施例以关系型数据和文件数据之间的数据关联关系是通过对象id和存储桶名来建立,相应的文件查找为通过桶名和对象id进行精确查找,基于此,本实施例以待同步文件数据和待同步关系型数据分别同步至数据中心的mino和关系型数据库中,数据集成平台为基于开源kettle二次开发的ETL在线运行、管理、监控系统,数据共享平台将数据库中数据、文件数据以接口方式提供给第三方厂商使用的系统。其包含数据门户、资源共享服务。用户端与资源拥有者和HTTP服务商之间采用OAuth2.0协议。用户端通过token形式登录数据共享平台通为例,阐述数据共享过程,数据共享过程中各参与方的数据交互请参阅图7和图8,由于附图较大,为了满足附图要求,将一幅图拆分为两张图片,所属领域技术人员可根据本实施例所记载的内容将图与内容进行匹配,上述数据访问过程可包括下述内容:
[0178] 由于本实施例是通过开放接口提供数据共享,在用户查找数据之前,需要预先授予用户接口访问权限。用户接口访问权限授予过程包括:数据管理员向数据门户申请接口设置请求,数据门户调用接口自动生成功能在资源共享服务中生成接口信息,并将生成的接口信息反馈给数据门户,数据门户将目录与接口进行关联。数据用户通过客户端向数据门户申请接口,数据门户会向数据管理员下发审批接口申请,数据管理员对符合要求的数据用户的申请接口请求进行审批通过,同时将审批通过指令发送给数据门户,数据门户向资源共享服务发送接口授权请求,资源共享服务生成数据用户访问数据共享平台的密码和账号,并将密码和账号存储至OAuth2.0服务中,同时将接口访问权限授予该账号,并反馈数据门户接口授权成功的信息,以使数据门户向数据用户反馈接口申请成功信息。
[0179] 资源共享服务生成携带授权接口权限对应的账号和密码的接口文档,数据用户从资源共享服务获取接口文档,使用接口文档中用于数据访问的账号和密码登录OAuth2.0服务获取token。
[0180] 使用接口文档中获取关系型数据接口地址,访问关系型数据接口地址携带数据用户的token。
[0181] 资源共享服务接收到关系型数据接口访问请求,先验证数据用户权限。具体的,验证用户是否登录,验证用户是否拥有该接口的访问权限。验证用户对该接口的访问时间是否过期。验证用户对该接口的访问次数是否超限。验证用户在规定时间内如每月、每周、每天、每时访问频率是否超限。
[0182] 数据用户验证通过后,资源共享服务根据接口定义从数据库中查询关系型数据,如果关系型数据有对应的文件数据则返回中包含桶名、对象id。
[0183] 数据用户收到关系型数据返回后,使用接口文档中获取文件数据接口地址,请求文件数据接口地址,参数携带桶名、对象id(必填项),参数携带是否按文件原名返回(非必填项)。
[0184] 资源共享服务接收到文件数据接口访问请求。判断是否需要返回原名,如果需要则通过桶名、对象id从对象存储minio中获取文件对象的所有tags,从tags中获取键为original File Name对应的值。如果文件原名值为空则表示数据同步时无文件原名,此时使用对象id作为文件名。不为空使用文件原名作为返回的文件名。
[0185] 获取文件名后,再通过桶名、对象id从对象存储minio中获取文件数据输入流。
[0186] 可使用j2ee中的Http Servlet Response将文件名和文件数据流输出到数据用户端。
[0187] 需要说明的是,本申请中各步骤之间没有严格的先后执行顺序,只要符合逻辑上的顺序,则这些步骤可以同时执行,也可按照某种预设顺序执行,图1‑图8只是一种示意方式,并不代表只能是这样的执行顺序。
[0188] 本发明实施例还针对数据同步方法提供了相应的装置,进一步使得方法更具有实用性。其中,装置可从功能模块的角度和硬件的角度分别说明。下面对本发明实施例提供的数据同步装置进行介绍,下文描述的数据同步装置与上文描述的数据同步方法可相互对应参照。
[0189] 基于功能模块的角度,参见图9,图9为本发明实施例提供的数据同步装置在一种具体实施方式下的结构图,该装置可包括:
[0190] 配置模块901,用于根据待同步关系型数据和待同步文件数据之间的对应关系、源端信息和目的端信息生成ETL配置文件。
[0191] 文件同步模块902,用于基于ETL配置文件,从源端读取待同步关系型数据,并根据预构建的关系型数据和文件数据间的数据关联信息,将读取的待同步文件数据写入至目的端的文件存储区域。
[0192] 字段标识模块903,用于基于数据关联信息,在待同步关系型数据中增加标识待同步文件数据的关键信息。
[0193] 同步模块904,用于在检测到待同步文件数据完成写入操作的同时,将待同步关系型数据写入至目的端的关系型数据存储区域。
[0194] 可选的,在本实施例的一些实施方式中,上述文件同步模块902可进一步用于:根据源端的业务类型生成待访问关系型数据对应的待同步文件数据的文件路径;生成待同步文件数据的对象id;根据文件路径读取待同步文件数据,并获取待同步文件数据的占用容量值和文件输入流;使用对象id将文件输入流写入至文件存储区域中,文件存储区域为对象存储。
[0195] 作为本实施例的一种可选的实施方式,上述文件同步模块902可包括一对一执行单元,该单元用于待同步关系型数据和待同步文件数据之间的对应关系为一对一或一对多,待同步文件数据完成写入操作,输出对象存储数据桶和对象id;获取ETL配置文件中的数据同步时间;基于ETL配置文件的字段映射关系,将数据同步时间、对象存储数据桶、对象id和待同步关系型数据转换为输出表的格式,同时写入关系型数据存储区域。
[0196] 作为本实施例的另一种可选的实施方式,上述文件同步模块902可包括多对一执行单元,该单元用于待同步关系型数据和待同步文件数据之间的对应关系为多对一或多对多,利用预先构建的记录集连接组件检测待同步文件数据是否完成写入操作;若待同步文件数据完成写入操作,将待同步文件数据和待同步关系型数据同时输入至记录集连接组件中;记录集连接组件对待同步文件数据和待同步关系型数据进行连接处理,以将对象存储数据桶和对象id与待同步关系型数据一起输出;获取ETL配置文件中的数据同步时间;基于ETL配置文件的字段映射关系,将数据同步时间、对象存储数据桶、对象id和待同步关系型数据转换为输出表的格式,同时写入关系型数据存储区域。
[0197] 可选的,在本实施例的另一些实施方式中,上述配置模块901可包括:
[0198] 数据源配置单元,用于根据源端信息和目的端信息为待同步关系型数据生成ETL配置文件中的源库和目标库的数据源;
[0199] 字段增加单元,用于基于源端信息中的业务类型计算待同步关系型数据对应的待同步文件数据的绝对路径,并将绝对路径添加在待同步关系型数据中;
[0200] 组件选择单元,用于根据当前文件传输协议、待同步关系型数据和待同步文件数据之间的对应关系选择ETL过程中所需组件,同时配置各组件参数;组件包括文件同步组件、记录集连接组件和记录合并组件;
[0201] 同步时间配置单元,用于根据同步时间配置请求生成ETL配置文件的数据同步时间;
[0202] 输出配置单元,用于根据待同步关系型数据和待同步文件数据之间的对应关系生成ETL配置文件中数据输出格式。
[0203] 作为本实施例的一种可选的实施方式,上述配置模块901还可包括:
[0204] 组件预构建单元,用于预先基于当前文件传输协议类型,构建用于从源端读取文件数据至目的端的文件同步组件;
[0205] 平台功能配置单元,用于若用于对目的端的数据进行数据共享的资源共享平台不支持文件访问,则为资源共享平台设置文件访问功能;若用于对待同步文件数据和待同步关系型数据执行ETL的数据集成平台配置调用文件同步组件的功能。
[0206] 可选的,在本实施例的再一些实施方式中,上述装置还可以包括数据共享模块,该模块用于:预先授予用户接口访问权限;当接收到通过关系型数据接口发送的数据访问指令,在验证用户具有接口访问权限之后,从关系型数据存储区域读取待访问关系型数据,并将待访问关系型数据及相对应文件数据的目标关键信息反馈给用户端;通过文件接口发送携带目标关键信息的文件获取指令,根据目标关键信息从文件存储区域中读取待访问文件数据;将待访问文件数据反馈给用户端。
[0207] 上文中提到的数据同步装置是从功能模块的角度描述,进一步的,本申请还提供一种数据同步装置,是从硬件角度描述。图10为本申请实施例提供的另一种数据同步装置的结构图。如图10所示,该装置包括存储器10,用于存储计算机程序;处理器11,用于执行计算机程序时实现如上述任一实施例提到的数据同步方法的步骤。
[0208] 其中,处理器11可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器11可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器11也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器11可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器11还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
[0209] 存储器10可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器10还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器10至少用于存储以下计算机程序101,其中,该计算机程序被处理器11加载并执行之后,能够实现前述任一实施例公开的数据同步方法的相关步骤。另外,存储器10所存储的资源还可以包括操作系统102和数据103等,存储方式可以是短暂存储或者永久存储。其中,操作系统102可以包括Windows、Unix、Linux等。数据103可以包括但不限于数据同步结果对应的数据等。
[0210] 在一些实施例中,数据同步装置还可包括有显示屏12、输入输出接口13、通信接口14或者称为网络接口、电源15以及通信总线16。其中,显示屏12、输入输出接口13比如键盘(Keyboard)属于用户接口,可选的用户接口还可以包括标准的有线接口、无线接口等。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light‑Emitting Diode,有机发光二极管)触摸器等。显示器也可以适当的称为显示屏或显示单元,用于显示在数据同步装置中处理的信息以及用于显示可视化的用户界面。通信接口14可选的可以包括有线接口和/或无线接口,如WI‑FI接口、蓝牙接口等,通常用于在该数据同步装置与其他电子设备之间建立通信连接。通信总线16可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0211] 本领域技术人员可以理解,图10中示出的结构并不构成对数据同步装置的限定,可以包括比图示更多或更少的组件,例如还可包括实现各类功能的传感器17。
[0212] 本发明实施例所述数据同步装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
[0213] 由上可知,本发明实施例关系型数据和文件数据在同一时间段内完成,实现关系型数据和文件数据的同步,且使用者在访问数据时也无需了解原始业务系统中关系型数据和文件数据之间的关联关系。
[0214] 可以理解的是,如果上述实施例中的数据同步方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read‑Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、磁碟或者光盘等各种可以存储程序代码的介质。
[0215] 基于此,本发明实施例还提供了一种计算机可读存储介质,存储有数据同步程序,所述数据同步程序被处理器执行时如上任意一实施例所述数据同步方法的步骤。
[0216] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0217] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0218] 以上对本申请所提供的一种数据同步方法、装置及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。