装载数据到分布式数据仓库的方法、节点和系统与流程

文档序号:18301632发布日期:2019-07-31 10:13阅读:182来源:国知局
装载数据到分布式数据仓库的方法、节点和系统与流程

本申请涉及数据库领域,尤其涉及一种装载数据到分布式数据仓库的方法、节点和系统。



背景技术:

在分布式数据仓库中,数据通常以表为单位组织。一张表会按照一定规则把数据均匀的分布到所有数据节点。例如,按照哈希分布规则,将表中每行数据的分布列计算哈希值,将哈希值按照集群节点数取模,按照取模的结果发送给对应的数据节点,从而实现数据的均匀分布。数据仓库的数据分布规则导致数据仓库要装载的数据文件中的数据往往会被无序的打散到多个数据节点上。一个数据文件中的数据需要解析并应用数据分布规则,发送到对应的数据节点。

而在云上,大量的数据存放在如oss等对象存储服务中,oss等对象存储服务并不具有很强的计算能力,无法做数据分析和分发。



技术实现要素:

本申请实施例提供了一种装载数据到分布式数据仓库的方法、节点和系统,能够实现数据到分布式数据仓库的高速装载。

第一方面,提供了一种装载数据到分布式数据仓库的方法,该方法包括:第一数据节点接收管理节点分发的数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在分布式数据仓库中的目标数据表的标识,以及该管理节点为该待装载数据生成的分布式事务的标识;该第一数据节点生成该分布式事务的本地事务;该第一数据节点根据该待装载数据的读取参数读取待装载数据;该第一数据节点根据数据分布规则将读取的待装载数据中属于该第一数据节点的数据预写入到该目标数据表中。

第二方面,提供了一种装载数据到分布式数据仓库的方法,该方法包括:获取待装载数据的读取参数和该待装载数据在分布式数据仓库中的目标数据表的标识;生成用于装载待装载数据到该分布式数据仓库的分布式事务,并生成数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该分布式事务的标识;向该分布式数据仓库的数据节点发送数据装载请求,该数据装载请求用于该数据节点根据该数据装载请求和数据分布规则将读取的待装载数据中属于该数据节点的数据预写入到该数据节点的该目标数据表中。

第三方面,提供了一种分布式数据仓库的数据节点,该方法包括:接收单元,接收管理节点分发的数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该管理节点为该待装载数据生成的分布式事务的标识;生成单元,生成该分布式事务的本地事务;读取单元,根据该待装载数据的读取参数读取待装载数据;写入单元,根据数据分布规则将读取的待装载数据中属于该第一数据节点的数据预写入到该目标数据表中。

第四方面,提供了一种分布式数据仓库的管理节点,该方法包括:获取单元,获取待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识;生成单元,生成用于装载待装载数据到该分布式数据仓库的分布式事务,并生成数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该分布式事务的标识;发送单元,向该分布式数据仓库的数据节点发送数据装载请求,该数据装载请求用于该数据节点根据该数据装载请求和数据分布规则将读取的待装载数据中属于该数据节点的数据预写入到该数据节点的该目标数据表中。

第五方面,提出了一种电子设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,该可执行指令在被执行时使该处理器执行以下操作:

接收管理节点分发的数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该管理节点为该待装载数据生成的分布式事务的标识;

生成该分布式事务的本地事务;

根据该待装载数据的读取参数读取待装载数据;

根据数据分布规则将读取的待装载数据中属于该电子设备所在的第一数据节点的数据预写入到该目标数据表中。

第六方面,提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序当被包括多个应用程序的电子设备执行时,使得该电子设备执行以下操作:

接收管理节点分发的数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该管理节点为该待装载数据生成的分布式事务的标识;

生成该分布式事务的本地事务;

根据该待装载数据的读取参数读取待装载数据;

根据数据分布规则将读取的待装载数据中属于该电子设备所在的第一数据节点的数据预写入到该目标数据表中。

第七方面,提出了一种电子设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,该可执行指令在被执行时使该处理器执行以下操作:

获取待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识;

生成用于装载待装载数据到该分布式数据仓库的分布式事务,并生成数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该分布式事务的标识;

向该分布式数据仓库的数据节点发送数据装载请求,该数据装载请求用于该数据节点根据该数据装载请求和数据分布规则将读取的待装载数据中属于该数据节点的数据预写入到该数据节点的该目标数据表中。

第八方面,提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序当被包括多个应用程序的电子设备执行时,使得该电子设备执行以下操作:

获取待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识;

生成用于装载待装载数据到该分布式数据仓库的分布式事务,并生成数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该分布式事务的标识;

向该分布式数据仓库的数据节点发送数据装载请求,该数据装载请求用于该数据节点根据该数据装载请求和数据分布规则将读取的待装载数据中属于该数据节点的数据预写入到该数据节点的该目标数据表中。

第九方面,提出了一种分布式数据仓库系统,包括第三方面的数据节点和第四方面的管理节点。

由以上本申请实施例提供的技术方案可见,本申请实施例通过分布式数据仓库中的各数据节点获取待装载数据,并按照数据分布规则将属于本数据节点的数据预写入到数据仓库中,从而能够实现数据到分布式数据仓库的高速装载。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请一个实施例装载数据到分布式数据仓库的方法流程图。

图2是本申请的一个实施例装载数据到分布式数据仓库的交互流程图。

图3是本申请的另一个实施例装载数据到分布式数据仓库的交互流程图。

图4是本申请的再一个实施例装载数据到分布式数据仓库的交互流程图。

图5是本申请的再一个实施例装载数据到分布式数据仓库的交互流程图。

图6是本申请的一个实施例电子设备的结构示意图。

图7是本申请的一个实施例的数据装载装置的结构示意图。

图8是本申请的另一个实施例电子设备的结构示意图。

图9是本申请的另一个实施例的数据装载管理装置的结构示意图。

图10是本申请的一个实施例的分布式数据仓库的系统框图。

具体实施方式

为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

图1为本申请一个实施例装载数据到分布式数据仓库的方法流程图。图1的方法由数据装置或分布式数据仓库中的数据节点执行。应理解,本申请实施例中的第一数据节点是指当前数据节点,第二数据节点是指分布式数据仓库中当前数据节点以外的数据节点,二者只是用于区分不同数据节点,并不对数据节点的功能构成限制。图1的方法可包括:

s101,第一数据节点接收管理节点分发的数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在分布式数据仓库中的目标数据表的标识,以及该管理节点为该待装载数据生成的分布式事务的标识。

s102,第一数据节点生成该分布式事务的本地事务。

应理解,在分布式数据仓库中,数据节点需要根据管理节点的分布式事务建立本地事务。

s103,第一数据节点根据该待装载数据的读取参数读取待装载数据。

应理解,该待装载数据的读取参数,可包括该待装载数据的地址信息等。该地址信息,可包括存储待装载数据的服务器地址,以及该待装载数据在该服务器中的路径。此外,如果该服务器还需要进行登录校验,则该待装载数据的读取参数还可包括服务器的登录信息,等等。

以阿里云的对象服务系统(objectservicesystem,oss)为例,该待装载数据的读取参数可包括oss账号密码,以及oss上的文件信息,等等。

s104,第一数据节点根据数据分布规则将读取的待装载数据中属于该第一数据节点的数据预写入到该目标数据表中。

应理解,在本申请实施例中,属于第一数据节点的数据,是指按照数据分布规则应分布到该第一节点上的数据。例如,数据仓库中的数据通常以表为单位组织,一张表会按照一定规则把数据均匀的分布到所有数据节点,常见的数据分布规则是哈希分布,即将表中每行数据的分布列计算哈希值,将哈希值按照集群节点数取模,按照取模的结果发送给对应的数据节点,实现数据的均匀分布。在本申请实施例中,不妨假设第一数据节点读取了10000条数据,通过对该10000条数据中的分布列计算哈希值并将哈希值按照分布式数据仓库中的数据节点数n取模,从而可将该10000条数据分成n个不同的数据集合,其中一个集合的数据为分布到第一数据节点的数据,也就是本申请实施例所说的属于第一节点的数据。

应理解,包含分布式事务信息(如事务id等)的数据写入到目标数据表时,该事务的状态,如提交或回滚等是不确定的。因此,可先将数据预写入目标数据表。具体地,预写入目标数据表,例如,可通过事务日志实现。具体地,数据节点可先将待加载数据写入到日志数据中,并暂时先不持久化到磁盘中。如果分布式事务提交,数据节点再对日志数据进行提交操作,写入磁盘中;或者如果分布式事务回滚,数据节点再对日志数据进行回滚操作。

在本申请实施例中,第一数据节点根据管理节点的数据装载请求,读取待装载数据并将根据数据分布规则确定的属于第一数据节点的数据预写入到目标数据表中,从而能够实现数据到分布式数据库的高速装载。

可选地,作为一个实施例,在该第一数据节点根据该待装载数据的读取参数读取待装载数据之后,该方法还包括:该第一数据节点根据该数据分布规则将读取的待装载数据中属于第二数据节点的数据发送给该第二数据节点。

本申请实施例中,通过将第一数据节点读取的数据中属于其它数据节点的数据发送到对应的数据节点,从而使得各个数据节点不需要读取所有的待装载数据,进而能够进一步地提高数据到分布式数据库的装载速度。

可选地,作为一个实施例,该方法还包括:该第一数据节点接收其它数据节点根据该数据分布规则发送的属于该第一数据节点的数据,并预写入到该目标数据表中。

本申请实施例中,通过接收其它数据节点发送的属于第一数据节点的数据,并写入到第一数据节点的目标数据表中,从而使得第一数据节点不需要读取所有的待装载数据即可获得属于第一数据节点的所有数据,进而能够进一步地提高数据到分布式数据库的装载速度。

可选地,作为一个实施例,步骤s103具体实现为:该第一数据节点根据该待装载数据的读取参数和预定读取规则,读取该待装载数据中的部分数据,该部分数据是根据预定读取规则确定由该第一数据节点读取的数据。

例如,该待装载数据可包括多个数据文件,该第一数据节点可根据预定读取规则,确定其中需要第一数据节点读取的部分数据文件,并对该部分数据文件进行读取操作。

当然,应理解,待装载数据并不一定是以数据文件的形式存在的,例如,也可能是以数据库的形式存在,该待装载数据可以是分布在多个数据库中,或者分布在一个数据库的多个数据表中,或者分布在一个数据库的一个数据表中,等等。

在本申请实施例中,根据预定读取规则确定待装载数据中由第一数据节点负责读取的部分数据,使得第一数据节点不需要读取所有待装载数据以获得属于本数据节点的数据,从而能够进一步地提高数据到分布式数据库的装载速度。

可选地,作为令一个实施例,步骤s103具体实现为:该第一数据节点根据该待装载数据的读取参数,读取该待装载数据中未被其它数据节点读取的部分数据,并标记该部分数据被读取。

在本申请实施例中,通过读取尚未被其他数据节点读取的部分数据,并对读取的数据标记为被读取,从而使得个数据节点不需要读取所有待装载数据以获得属于本数据节点的数据,从而能够进一步地提高数据到分布式数据库的装载速度。

可选地,作为一个实施例,该方法还包括:接收该管理节点发送的该分布式事务的结束标识;根据该结束标识预提交该本地事务;向该管理节点发送反馈信息,该反馈信息用于反馈预提交该本地事务成功或失败的结果。

应理解,分布式事务的结束标识,例如,可以是该分布式事务被提交或回滚的消息,等等。

本申请实施例中,通过根据管理节点的结束标识反馈预提交该本地事务的结果,从而使得管理节点能够根据反馈结果决定是否提交分布式事务,使得分布式数据仓库的数据一致性得到有效的保障。

进一步地,当该反馈信息用于反馈预提交该本地事务成功的结果时,该反馈信息还携带该本地事务成功提交的行数。

本申请实施例中,当该反馈信息用于反馈预提交该本地事务成功的结果时,通过在该反馈信息携带该本地事务成功提交的行数,从而使得管理节点能够汇总分布式事务提交的总行数并显示。

可选地,作为一个实施例,该方法还包括:当该第一数据节点读取待装载数据失败,或者该第一数据节点预写入到该目标数据表失败时,向该管理节点发送反馈信息,该反馈信息用于表示该第一数据节点在装载该待装载数据的过程中出错。

在本申请实施例中,当读取或写入待装载数据失败时,将表示装载失败的反馈信息发送给管理节点,使得管理节点能够根据该反馈信息进行操作,从而为分布式数据仓库在装载数据时保持数据库一致性提供了实现的前提。

可选地,作为一个实施例,该方法还包括:接收管理节点发送的取消任务提示信息;根据该取消任务提示信息,并回滚该本地事务。

本申请实施例中,通过根据管理节点的取消任务提示信息回滚本地事务,从而能够在分布式数据仓库的一个或多个数据节点出错的情况下保持数据库一致性。

下面,将结合具体的实施例,对本申请实施例的方法作进一步的描述。

图2是本申请的一个实施例装载数据到分布式数据仓库的交互流程图。在图2所示的场景中,分布式数据仓库包括管理节点和多个数据节点,不妨假设包括第一数据节点和第二数据节点。图2的方法包括:

201,管理节点获取待装载数据的读取参数和目标数据表的标识。

可选地,在一种具体的实现方式中,管理节点可根据客户端发送的数据装载请求,获取待装载数据的读取参数和目标数据表的标识。其中,客户端可连接管理节点,并发送数据装载请求,该数据装载请求可包括待装载数据的读取参数,以及要导入的数据仓库的目标数据表的信息。具体的,该待装载数据的读取参数,例如可以包括oss账号密码,以及oss上的文件信息等。

可选地,在另一种具体的实现方式中,管理节点可通过读取装载配置文件获取该待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识。其中,该装载配置文件携带有该待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识。

202,管理节点生成待装载数据的分布式事务。

管理节点可生成待装载数据的分布式事务,以准备将待装载数据加载到分布式数据仓库中。

203,管理节点向分布式数据仓库的各数据节点发送数据装载请求,携带有读取参数和目标数据表的标识。

管理节点生成分布式事务后,可向分布式数据仓库的各个数据节点发送数据装载请求,其中,该数据装载请求携带有分布式事务的标识、待装载数据的读取参数和目标数据表的标识。

应理解,数据节点收到管理节点发送的分布式事务后,可基于分布式事务创建本地事务。所有之后产生的数据都用该事务标记。

204,第一数据节点根据数据装载请求建立本地事务,并读取待装载数据。

分布式数据仓库的各个数据节点接收到管理节点发送的数据装载请求后,可根据数据装载请求,建立分布式事务的本地事务,并根据读取参数读取待装载数据。

在本申请实施例中,以第一数据节点为例,对各数据节点执行的方法进行说明。

可选地,在一种具体的实现方式中,该第一数据节点根据该待装载数据的读取参数和预定读取规则,读取该待装载数据中的部分数据。其中,该部分数据是根据该预定读取规则确定由该第一数据节点读取的数据。

以待装载数据oss上的文件信息为例,该第一数据节点根据该待装载数据的读取参数,向oss获取读取数据的文件列表。该第一数据节点可按照文件名排序,对排序的文件按照文件排序序号和数据仓库的数据节点总数取模,序号取模相等的归为一组,由数据仓库的所有数据节点中对应序号的数据节点负责读取。例如,假设32个节点的数据仓库,每个数据节点会被分配一个id,从0到31;假设有1000个数据文件,按序号对32取模,得到32个值,分别0至31;此时,可将取模后的值和数据节点id相等所对应的文件作为该数据节点需要读取和解析的文件,这组文件形成了本地数据节点的任务。在这种方式下,每个数据节点间不需要相互协调,可无差别地读取自己任务列表中的文件。

可选地,在另一种具体的实现方式中,该第一数据节点根据该待装载数据的读取参数,读取该待装载数据中未被其它数据节点读取的部分数据,并标记该部分数据被读取。

还是以待装载数据oss上的文件信息为例,该第一数据节点根据该待装载数据的读取参数,向oss获取读取数据的文件列表。第一数据节点在读取文件之前,可从管理节点的指定数据表中获取该文件的读取状态,如果该文件被读取,则跳过该文件,直至找到未被读取的文件;然后第一数据节点在管理节点中将该文件标记为被读取。当然,应理解,还可以由管理节点获取oss获取读取数据的文件列表,并记录到管理节点的指定数据表中;第一数据节点直接从管理节点的指定数据表中获取未被读取的文件的名称。

可选地,可选地,在另一种具体的实现方式中,第一数据节点可读取待装载数据中的全部数据。

应理解,第一数据节点可通过单独的进程读取文件,可通过单进程读取,也可通过多进程读取,本申请实施例对此不做限制。

205,第一数据节点将属于第二数据节点的数据发送给第二数据节点。

应理解,在数据仓库中,每张表的数据会按照预定规则均匀分布到各个数据节点中。

应理解,步骤205是可选的步骤。

当各个数据节点根据数据读取规则确定各个数据节点需要读取的部分数据并读取对应部分的数据时,第一数据节点还需要将属于其它数据节点的数据发送给对应的节点。具体地,第一数据节点将属于第二数据节点的数据发送给第二数据节点,将属于第三数据节点的数据发送给第三数据节点,等等。

当第一数据节点需要读取全部待装载数据时,则可不执行步骤205。

206,第一数据节点接收第二数据节点发送的属于第一数据节点的数据,并写入到目标数据表。

应理解,步骤206也是可选的步骤。

当各个数据节点根据数据读取规则确定各个数据节点需要读取的部分数据并读取对应部分的数据时,第一数据节点还需要将接收其它数据节点发送的属于第一数据节点的数据。具体地,第一数据节点接收第二数据节点发送的属于第一数据节点的数据,接收第三数据节点发送的属于第一数据节点的数据,等等。

当第一数据节点需要读取全部待装载数据时,则可不执行步骤206。

207,第一数据节点将属于本数据节点的数据写入到目标数据表中。

在本申请实施例中,第一数据节点可根据数据分布规则,确定读取的数据中属于第一数据节点的数据,并将属于第一数据节点的数据写入到第一数据节点的目标数据表。应理解,此时第一数据节点写入目标数据表的操作只是一种预写入操作,并未永久地存储到第一数据节点中。

例如,按照哈希分布规则,可将表中每行数据的分布列计算哈希值,将哈希值按照数据仓库的数据节点总数取模,按照取模的结果确定数据对应的数据节点。第一数据节点根据读取的数据中分布列的哈希值确定数据所属节点后,可将属于第一数据节点的数据写入到第一数据节点的目标数据表。

此外,第一数据节点还可将其它数据节点发送给第一数据节点的属于第一数据节点的数据写入到第一数据节点的目标数据表中。

应理解,在本申请实施例中,虚线框中读取待装载数据的步骤、发送属于其它数据节点的数据的步骤、接收其它节点发送的属于本数据节点的数据的步骤,以及将数据写入目标数据表的步骤,都是持续性的步骤,每个步骤都可以由一个或多个独立的线程实现。当然,也不排除使用一个线程实现虚线框中的一个或多个步骤的方案。

208,管理节点发送结束标识。

当待装载数据的所有数据被装载完毕后,管理节点可发送结束标识,通知各个数据节点结束装载操作。

209,第一数据节点预提交本地事务。

第一数据节点在接收到结束标识后,可预提交本地事务。

210,第一数据节点反馈预提交成功的信息。

如果第一数据节点预提交本地事务成功,则第一数据节点反馈预提交成功的信息。特别地,第一数据节点可在反馈信息中携带本地事务提交成功的行数。

211,管理节点提交分布式事务。

管理节点汇总各个数据节点的反馈信息。如果各个数据节点都反馈预提交成功的信息,则管理节点可提交分布式事务。

特别地,当个数据节点在反馈信息中携带本地事务提交成功的行数时,管理节点还可汇总分布式事务提交的总行数并显示。如果数据装载请求由客户端发起,则管理节点还可向客户端反馈分布式事务提交的总行数。

图3是本申请的另一个实施例装载数据到分布式数据仓库的交互流程图。

301,管理节点获取待装载数据的读取参数和目标数据表的标识。

302,管理节点生成待装载数据的分布式事务。

303,管理节点向分布式数据仓库的各数据节点发送数据装载请求,携带读取参数和目标数据表的标识。

304,第一数据节点根据分布式事务建立本地事务,并读取待装载数据。

305,第一数据节点将属于第二数据节点的数据发送给第二数据节点。

306,第一数据节点接收第二数据节点发送的属于第一数据节点的数据。

307,第一数据节点将属于本数据节点的数据写入到目标数据表中。

308,管理节点发送结束标识。

309,第一数据节点预提交本地事务。

应理解,在本申请实施例中,步骤301-309的具体实现可参考图2的步骤201-209,本申请实施例在此不再赘述。

310,第一数据节点向管理节点反馈预提交失败的信息。

当第一数据节点预提交本地事务失败时,可反馈预提交失败的信息。

311,管理节点向各数据节点发送取消任务提示信息。

管理节点汇总各个数据节点的反馈信息。如果有至少一个数据节点反馈预提交失败的信息,为了保持数据的一致性,管理节点需要发送取消任务提示信息,提醒各数据节点取消任务并回滚事务。

则管理节点可向各数据节点发送取消任务提示信息,用于指示各数据节点停止该装载该待装载数据并回滚事务。

312,第一数据节点/第二数据节点回滚本地事务。

各个数据节点在接收到取消任务提示信息后,可根据该取消任务提示信息回滚该本地事务。

图2、图3所示实施例分别是数据节点在预提交阶段反馈成功和反馈失败的场景。当然,在具体的应用中,还可能存在部分数据节点在超出预定时间后都没有反馈信息的场景。此时,管理节点也可执行步骤311的方法,向各数据节点发送取消任务提示信息。

图4是本申请的再一个实施例装载数据到分布式数据仓库的交互流程图。

401,管理节点获取待装载数据的读取参数和目标数据表的标识。

402,管理节点生成待装载数据的分布式事务。

403,管理节点向分布式数据仓库的各数据节点发送数据装载请求,携带读取参数和目标数据表的标识。

404,第一数据节点根据分布式事务建立本地事务,并读取待装载数据。

405,第一数据节点将属于本数据节点的数据写入到目标数据表中。

406,第一数据节点将属于第二数据节点的数据发送给第二数据节点。

407,第一数据节点接收第二数据节点发送的属于第一数据节点的数据。

应理解,在本申请实施例中,步骤401-407的具体实现可参考图2的步骤201-207,本申请实施例在此不再赘述。

408,管理节点监控各数据节点的运行状态。

管理节点监控个数据节点的运行状态。应理解,步骤408是与虚线框中的步骤404-407并行的步骤。

具体地,管理节点可根据各个数据节点反馈的信息监控各个数据节点的运行状态,或者管理节点可主动向各个数据节点请求获取运行状态信息。

409,管理节点发送取消任务提示信息。

当管理节点监控到某个数据节点发生异常,则该数据节点显然无法继续装载数据,此时管理节点需要发送取消任务提示信息,提醒各数据节点取消任务并回滚事务。

或者,当管理节点接收到某个数据节点反馈的错误提示信息时,此时管理节点也需要发送取消任务提示信息,提醒各数据节点取消任务并回滚事务。其中,该错误提示信息,可以是数据节点在读取数据出错时发出的错误提示信息,也可以是数据节点在写入事务日志出错是发出的错误提示信息,等等。具体地,例如,数据节点与待装载数据的通路发生中断,则数据节点需要发出错误提示信息;或者,例如,数据节点的存储空间溢出,导致数据无法写入,也需要发出错误提示信息。当数据节点向管理节点发出错误提示信息时,该数据节点显然也无法继续装载数据。

在上述列举的场景中,为了保持数据的一致性,管理节点需要发送取消任务提示信息,提醒各数据节点取消任务并回滚事务。

410,第一数据节点/第二数据节点结束装载任务,回滚本地事务。

各个数据节点在接收到取消任务提示信息后,可根据该取消任务提示信息停止装载数据,并回滚该本地事务。

图5是本申请的另一个实施例装载数据到分布式数据仓库的方法流程图。图5的方法由分布式数据仓库中的管理节点执行。图5的方法包括:

501,获取待装载数据的读取参数和该待装载数据在分布式数据仓库中的目标数据表的标识。

502,生成用于装载待装载数据到该分布式数据仓库的分布式事务,并生成数据装载请求。

其中,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该分布式事务的标识;

503,向该分布式数据仓库的数据节点发送数据装载请求。

其中,该数据装载请求用于该数据节点根据该数据装载请求和数据分布规则将读取的待装载数据中属于该数据节点的数据预写入到该数据节点的该目标数据表中。

本申请实施例中,管理节点通过向分布式数据仓库的各个数据节点发送数据装载请求,使得各数据节点读取待装载数据,并根据数据分布规则写入属于本数据节点的数据,从而能够实现数据到分布式数据库的高速装载。

可选地,作为一个实施例,该方法还包括:接收该数据节点在装载该待装载数据发生错误时的反馈信息;向各数据节点发送取消任务提示信息,该取消任务提示信息用于指示停止该装载该待装载数据并回滚事务。

可选地,作为另一个实施例,该方法还包括:监控用于装载该待装载数据的数据节点的工作状态;如果用于装载该待装载数据的数据节点中至少一个数据节点为异常状态,则向各数据节点发送取消任务提示信息,该取消任务提示信息用于指示停止该装载该待装载数据并回滚事务。

可选地,该方法还包括:向该分布式数据仓库的各数据节点发送该分布式事务的结束标识;接收该分布式数据仓库的各数据节点的反馈消息;当所有反馈信息都表示提交成功时,提交该分布式事务。

进一步地,在本实施例中,当该反馈消息携带所属数据节点的本地事务提交的行数时,该方法还包括:汇总提交行数并显示。

可选地,作为一个实施例,步骤501具体实现为:接收客户端发送的数据装载请求,该客户端发送的数据装载请求携带有该待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识。

可选地,作为另一个实施例,步骤501具体实现为:通过读取装载配置文件获取该待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,该装载配置文件携带有该待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识。

图5所示实施例的具体实现可参考图2、图3、图4所示实施例中管理节点执行的方法,本申请实施例在此不再赘述。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

图6是本申请的一个实施例电子设备的结构示意图。请参考图6,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。

处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据装载装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:

接收管理节点分发的数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该管理节点为该待装载数据生成的分布式事务的标识;

生成该分布式事务的本地事务;

根据该待装载数据的读取参数读取待装载数据;

根据数据分布规则将读取的待装载数据中属于该电子设备所属的第一数据节点的数据预写入到该目标数据表中。

上述如本申请图1所示实施例揭示的数据装载装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

该电子设备还可执行图1的方法,并实现数据装载装置或数据节点在图1-图5所示实施例的功能,本申请实施例在此不再赘述。

当然,除了软件实现方式之外,本申请的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行以下操作:

接收管理节点分发的数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该管理节点为该待装载数据生成的分布式事务的标识;

生成该分布式事务的本地事务;

根据该待装载数据的读取参数读取待装载数据;

根据数据分布规则将读取的待装载数据中属于该电子设备所述的第一数据节点的数据预写入到该目标数据表中。

图7是本申请的一个实施例数据装载装置700的结构示意图。该数据装载装置700可以是分布式数据仓库中的第一数据节点,或者,数据装载装置700部署在分布式数据仓库中的第一数据节点上。请参考图7,在一种软件实施方式中,数据装载装置700可包括:

数据装载装置700可包括:接收单元710,生成单元720,读取单元730和写入单元740,其中,

接收单元710,接收管理节点分发的数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该管理节点为该待装载数据生成的分布式事务的标识;

生成单元720,生成该分布式事务的本地事务;

读取单元730,根据该待装载数据的读取参数读取待装载数据;

写入单元740,根据数据分布规则将读取的待装载数据中属于该数据装载装置700所在的第一数据节点的数据预写入到该目标数据表中。

在本申请实施例中,数据装载装置700所在的第一数据节点根据管理节点的数据装载请求,读取待装载数据并将根据数据分布规则确定的属于第一数据节点的数据预写入到目标数据表中,从而能够实现数据到分布式数据库的高速装载。

可选地,作为一个实施例,数据装载装置700还可包括发送单元750,根据该数据分布规则将读取的待装载数据中属于第二数据节点的数据发送给该第二数据节点。

本申请实施例中,通过将数据装载装置或数据装载装置所在的数据节点读取的数据中属于其它数据节点的数据发送到对应的数据节点,从而使得各个数据节点不需要读取所有的待装载数据,进而能够进一步地提高数据到分布式数据库的装载速度。

可选地,作为一个实施例,接收单元710还接收其它数据节点根据该数据分布规则发送的属于该第一数据节点的数据,写入单元740还将其它数据节点根据该数据分布规则发送的属于该第一数据节点的数据,预写入到该目标数据表中。

本申请实施例中,通过接收其它数据节点发送的属于第一数据节点的数据,并写入到当前的目标数据表中,从而使得第一数据节点不需要读取所有的待装载数据即可获得属于第一数据节点的所有数据,进而能够进一步地提高数据到分布式数据库的装载速度。

可选地,作为一个实施例,读取单元730具体用于:根据该待装载数据的读取参数和预定读取规则,读取该待装载数据中的部分数据,该部分数据是根据预定读取规则确定由第一数据节点读取的数据。

在本申请实施例中,根据预定读取规则确定待装载数据中由第一数据节点负责读取的部分数据,使得第一数据节点不需要读取所有待装载数据以获得属于本数据节点的数据,从而能够进一步地提高数据到分布式数据库的装载速度。

可选地,作为令一个实施例,读取单元730具体用于:根据该待装载数据的读取参数,读取该待装载数据中未被其它数据节点读取的部分数据,并标记该部分数据被读取。

在本申请实施例中,通过读取尚未被其他数据节点读取的部分数据,并对读取的数据标记为被读取,从而使得个数据节点不需要读取所有待装载数据以获得属于本数据节点的数据,从而能够进一步地提高数据到分布式数据库的装载速度。

可选地,作为一个实施例,数据装载装置700还可包括发送单元750,接收单元710还接收该管理节点发送的该分布式事务的结束标识;写入单元740还根据该结束标识预提交该本地事务;发送单元750向该管理节点发送反馈信息,该反馈信息用于反馈预提交该本地事务成功或失败的结果。

本申请实施例中,通过根据管理节点的结束标识反馈预提交该本地事务的结果,从而使得管理节点能够根据反馈结果决定是否提交分布式事务,使得分布式数据仓库的数据一致性得到有效的保障。

进一步地,当该反馈信息用于反馈预提交该本地事务成功的结果时,该反馈信息还携带该本地事务成功提交的行数。

本申请实施例中,当该反馈信息用于反馈预提交该本地事务成功的结果时,通过在该反馈信息携带该本地事务成功提交的行数,从而使得管理节点能够汇总分布式事务提交的总行数并显示。

可选地,作为一个实施例,数据装载装置700还可包括发送单元750,用于当该第一数据节点读取待装载数据失败,或者该第一数据节点预写入到该目标数据表失败时,向该管理节点发送反馈信息,该反馈信息用于表示该第一数据节点在装载该待装载数据的过程中出错。

在本申请实施例中,当读取或写入待装载数据失败时,将表示装载失败的反馈信息发送给管理节点,使得管理节点能够根据该反馈信息进行操作,从而为分布式数据仓库在装载数据时保持数据库一致性提供了实现的前提。

可选地,作为一个实施例,接收单元710还接收管理节点发送的取消任务提示信息;写入单元740还根据该取消任务提示信息,并回滚该本地事务。

本申请实施例中,通过根据管理节点的取消任务提示信息回滚本地事务,从而能够在分布式数据仓库的一个或多个数据节点出错的情况下保持数据库一致性。

数据装载装置700的具体实现可参考图1所示实施例数据装置或分布式数据仓库中的数据节点执行的方法,以及图2-图4所示实施例中第一数据节点和/或第二数据节点执行的方法,不再赘述。

图8是本申请的一个实施例电子设备的结构示意图。请参考图8,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。

处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据装载管理装置或管理节点。处理器,执行存储器所存放的程序,并具体用于执行以下操作:

获取待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识;

生成用于装载待装载数据到该分布式数据仓库的分布式事务,并生成数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该分布式事务的标识;

向该分布式数据仓库的数据节点发送数据装载请求,该数据装载请求用于该数据节点根据该数据装载请求和数据分布规则将读取的待装载数据中属于该数据节点的数据预写入到该数据节点的该目标数据表中。

上述如本申请图8所示实施例揭示的数据装载管理装置或管理节点执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

该电子设备还可执行图5的方法,并实现数据装载管理装置或管理节点在图2-图5所示实施例的功能,本申请实施例在此不再赘述。

当然,除了软件实现方式之外,本申请的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图5所示实施例的方法,并具体用于执行以下操作:

获取待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识;

生成用于装载待装载数据到该分布式数据仓库的分布式事务,并生成数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该分布式事务的标识;

向该分布式数据仓库的数据节点发送数据装载请求,该数据装载请求用于该数据节点根据该数据装载请求和数据分布规则将读取的待装载数据中属于该数据节点的数据预写入到该数据节点的该目标数据表中。

图9是本申请的一个实施例数据装载管理装置900的结构示意图。该数据装载管理装置900可以是分布式数据仓库中的管理节点,或者,数据装载管理装置900部署在分布式数据仓库中的管理节点上。请参考图9,在一种软件实施方式中,数据装载管理装置900可包括:数据装载装置900可包括:获取单元910,生成单元920和发送单元930,其中,

获取单元910,获取待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识;

生成单元920,生成用于装载待装载数据到该分布式数据仓库的分布式事务,并生成数据装载请求,该数据装载请求携带有待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,以及该分布式事务的标识;

发送单元930,向该分布式数据仓库的数据节点发送数据装载请求,该数据装载请求用于该数据节点根据该数据装载请求和数据分布规则将读取的待装载数据中属于该数据节点的数据预写入到该数据节点的该目标数据表中。

本申请实施例中,通过向分布式数据仓库的各个数据节点发送数据装载请求,使得各数据节点读取待装载数据,并根据数据分布规则写入属于本数据节点的数据,从而能够实现数据到分布式数据库的高速装载。

可选地,作为一个实施例,数据装载装置900还可包括接收单元940,接收该数据节点在装载该待装载数据发生错误时的反馈信息;发送单元930还向各数据节点发送取消任务提示信息,该取消任务提示信息用于指示停止该装载该待装载数据并回滚事务。

可选地,作为另一个实施例,数据装载装置900还可包括监控单元950,监控用于装载该待装载数据的数据节点的工作状态;发送单元930还用于如果监控单元950监控到用于装载该待装载数据的数据节点中至少一个数据节点为异常状态,则向各数据节点发送取消任务提示信息,该取消任务提示信息用于指示停止该装载该待装载数据并回滚事务。

可选地,作为一个实施例,数据装载装置900还可包括接收单元940和提交单元960,发送单元950还用于向该分布式数据仓库的各数据节点发送该分布式事务的结束标识;接收单元940,用于接收该分布式数据仓库的各数据节点的反馈消息;提交单元960用于当所有反馈信息都表示提交成功时,提交该分布式事务。

进一步地,数据装载装置900还可包括汇总显示单元970,用于当该反馈消息携带所属数据节点的本地事务提交的行数时,汇总提交行数并显示。

可选地,作为一个实施例,获取单元910具体用于通过接收单元940接收客户端发送的数据装载请求,该客户端发送的数据装载请求携带有该待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识。

可选地,作为另一个实施例,获取单元910具体用于通过读取装载配置文件获取该待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识,该装载配置文件携带有该待装载数据的读取参数和该待装载数据在该分布式数据仓库中的目标数据表的标识。

数据装载管理装置900还可执行图5的方法,并实现数据装载管理装置或管理节点在图2-图5所示实施例的功能,本申请实施例在此不再赘述。

图10是本申请的一个实施例分布式数据仓库系统1000的系统框图。如图10所示,分布式数据仓库系统1000可包括管理节点1010和数据节点1020,其中

管理节点1010可以是图9所示实施例的数据装载管理装置900,或部署有数据装载管理装置900的管理节点,或者是图8所示的电子设备;

数据节点1020可以是图7所示实施例的数据装载装置700,或部署有数据装载装置700的数据节点,或者是图6所示的电子设备。

总之,以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1