一种切分数据块的加载方法及装置与流程

文档序号:12748126阅读:238来源:国知局
一种切分数据块的加载方法及装置与流程

本发明属于分布式数据库技术领域,尤其是涉及一种切分数据块的加载方法及装置。



背景技术:

分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。

在大规模分布式分析型数据库集群系统中,往往需要加载来自外部数据源的大批量数据。面对大量的数据库集群节点和海量的外部数据,使用尽可能多的集群节点执行并行数据加载,是实现各加载节点间的负载均衡和提高总体加载速度的有效方法。如何高效地切分连续数据及针对切分后的数据进行加载是提高总体加载速度的关键因素。



技术实现要素:

有鉴于此,本发明实施例提供了一种切分数据块的加载方法及装置,以实现加载节点快速加载数据的目的。

一方面,本发明实施例提供了一种切分数据块的加载方法,包括:

判断接收的数据块偏移地址是否等于0,如果等于0,则读取URL中指定的数据;

如果大于0,则从偏移地址前第一个换行符至偏移地址后预设空间范围内查找换行符;

如果查找到换行符,则丢弃所述换行符前的数据;

否则丢弃偏移地址后预设空间范围内所有数据。

进一步的,所述URL中指定的数据包括:

指定偏移位置和空间的数据。

进一步的,所述方法还包括:

在读取URL中指定的数据后,继续读取预设空间范围内的数据;

从URL中指定的数据中最后一个换行符至预设空间范围内查找换行符;

如果查找到换行符,则丢弃所述换行符后的数据;

否则保留所有数据。

进一步的,所述方法还包括:

扫描预设范围内的缓存数据,确定所述预设范围内的换行符。

进一步的,所述预设空间为4MB。

另一方面,本发明实施例还提供了一种切分数据块的加载装置,包括:

判断单元,用于判断接收的数据块偏移地址是否等于0,如果等于0,则读取URL中指定的数据;

第一查找单元,如果大于0,则用于从偏移地址前第一个换行符至偏移地址后预设空间范围内查找换行符;

第一丢弃单元,如果查找到换行符,则用于丢弃所述换行符前的数据;

第二丢弃单元,用于丢弃偏移地址后预设空间范围内所有数据。

进一步的,所述URL中指定的数据包括:

指定偏移位置和空间的数据。

进一步的,所述装置还包括:

读取单元,用于在读取URL中指定的数据后,继续读取预设空间范围内的数据;

第二查找单元,用于从URL中指定的数据中最后一个换行符至预设空间范围内查找换行符;

第三丢弃单元,如果查找到换行符,用于丢弃所述换行符后的数据;

保留单元,用于保留所有数据

进一步的,所述装置还包括:

扫描单元,用于扫描预设范围内的缓存数据,确定所述预设范围内的换行符。

更进一步的,所述预设空间为4MB。

本发明实施例通过接收数据块的偏移地址来获取URL中的指定数据,以使得加载节点可以根据自身的数据块确定数据内容,实现并行数据加载。可以实现各加载节点间的负载均衡和提高总体加载速度。

附图说明

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

图1是本发明实施例一提供的切分数据块的加载方法的流程示意图;

图2是本发明实施例二提供的切分数据块的加载方法的流程示意图;

图3是本发明实施例三提供的切分数据块的加载方法的流程示意图;

图4是本发明实施例四提供的切分数据块的加载装置的结构示意图。

具体实施方式

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

实施例一

图1是本发明实施例一提供的切分数据块的加载方法的流程示意图,本实施例可适用于在分布式数据库系统中加载节点并行加载数据的情况,该方法可以由切分数据块的加载装置来执行,该装置可由软件/硬件方式实现,并可集成于分布式数据库系统中的加载节点中。

参见图1,所述切分数据块的加载方法,包括:

S110,判断接收的数据块偏移地址是否等于0,如果等于0,则读取URL中指定的数据。

在本发明实施例中,数据库集群中执行文件加载任务的单台计算机节点为加载节点、数据库集群在加载GB级或更大的数据文件时,会根据一定的负载均衡策略,对大数据文件进行粗粒度逻辑切分,并将切分后的文件片段信息分发给不同的集群节点。数据库集群传递给加载节点的文件片段信息包含文件片段偏移地址和文件片段长度两个参数。这些参数用形如#offset=value&length=value的URL后缀方式表示。文件片段偏移地址:简称偏移地址或offset,是文件片段首字节距文件头部的长度,单位用字节(byte)表示。

文件片段长度:简称片段长度或length,是文件片段的大小,单位用字节(byte)表示。

数据加载是以数据行为单位的,每个数据行将作为一条记录加入到数据库表中。因为集群对文件的切分是粗粒度的,即仅以文件大小为度量依据进行切分,所以offset表示的文件位置并不一定位于数据文件中一个数据行的第一个字节,并且offset+length表示的文件位置也不一定位于数据文件中一个数据行的最后一个字节后。为保证各个加载节点所加载的数据之和能覆盖全部文件数据,并且各个加载节点所加载的数据之间不出现重叠,要求加载节点以稳定的算法对文件片段进行切分重定位处理。经处理后的文件片段信息称为有效文件片段信息,其参数包含有效偏移地址offset’和有效片段长度length’,对于节点来说,如果偏移地址为0,则加载的数据块为首段数据块,则直接读取URL中指定的数据。

S120,如果大于0,则从偏移地址前第一个换行符至偏移地址后预设空间范围内查找换行符。

数据加载中规定支持单行数据的最大长度为4MB,超过此长度不能保证加载正确。为保证不超过4MB(包含换行符)的行数据都能被正确处理。如果数据块偏移地址大于0,则说明数据块非首个数据块,则需要在偏移地址前第一个换行符至偏移地址后预设空间范围内查找第一个换行符以确保加载数据的完整。所述预设空间为4MB,可以将4MB空间视为头块。

S130,如果查找到换行符,则丢弃所述换行符前的数据。

如果查找到换行符,则确定了相应的单行数据,所述换行符前的数据为其他节点加载的数据,则丢弃所述换行符前的数据。

S140,如果未查找到换行符,则丢弃偏移地址后预设空间范围内所有数据。

如果未查找到换行符,则说明预设空间范围内的数据并非加载的数据,需要将预设空间范围内所有数据进行丢弃。

本发明实施例通过接收数据块的偏移地址来获取URL中的指定数据,以使得加载节点可以根据自身的数据块确定数据内容,实现并行数据加载保证加载数据的准确和唯一性,可以实现各加载节点间的负载均衡和提高总体加载速度。

实施例二

图2是本发明实施例二提供的切分数据块的加载方法的流程示意图,本发明实施例以上述实施例为基础,进一步的,所述方法还包括:在读取URL中指定的数据后,继续读取预设空间范围内的数据;从URL中指定的数据中最后一个换行符至预设空间范围内查找换行符;如果查找到换行符,则丢弃所述换行符后的数据。

参见图2,所述切分数据块的加载方法,包括:

S210,判断接收的数据块偏移地址是否等于0,如果等于0,则读取URL中指定的数据。

S220,如果大于0,则从偏移地址前第一个换行符至偏移地址后预设空间范围内查找换行符。

S230,如果查找到换行符,则丢弃所述换行符前的数据。

S240,如果未查找到换行符,则丢弃偏移地址后预设空间范围内所有数据。

S250,在读取URL中指定的数据后,继续读取预设空间范围内的数据。

示例性的,读取完URL指定长度的数据后,再超额读取4MB数据,可以将4MB数据视为尾块。

S260,从URL中指定的数据中最后一个换行符至预设空间范围内查找换行符。

自尾块前的一个换行符长度(sep_len)的位置起,至尾块结束位置的区间之内,由前向后查找第一个换行符。即扫描空间可视为[offset1+length1-sep_len,offset1+length1+tail]

S270,如果查找到换行符,则丢弃所述换行符后的数据,否则保留所有数据。

本实施例通过增加如下步骤:在读取URL中指定的数据后,继续读取预设空间范围内的数据;从URL中指定的数据中最后一个换行符至预设空间范围内查找换行符;如果查找到换行符,则丢弃所述换行符后的数据。可有效确定加载的数据,保证加载数据的完整性

实施例三

图3是本发明实施例三提供的切分数据块的加载方法的流程示意图,本发明实施例以上述实施例为基础,进一步的,所述方法还包括:扫描预设范围内的缓存数据,确定所述预设范围内的换行符。

参见图3,所述切分数据块的加载方法,包括:

S310,判断接收的数据块偏移地址是否等于0,如果等于0,则读取URL中指定的数据。

S320,如果大于0,则从偏移地址前第一个换行符至偏移地址后预设空间范围内查找换行符。

S330,如果查找到换行符,则丢弃所述换行符前的数据。

S340,如果未查找到换行符,则丢弃偏移地址后预设空间范围内所有数据。

S350,在读取URL中指定的数据后,继续读取预设空间范围内的数据。

S360,从URL中指定的数据中最后一个换行符至预设空间范围内查找换行符。

S370,如果查找到换行符,则丢弃所述换行符后的数据,否则保留所有数据。

S380,扫描预设范围内的缓存数据,确定所述预设范围内的换行。

当换行符长度大于1个字节时,且前后两个换行符\r和\n都位于4MB头尾块前后边界上时,如果\r和\n被从中间切开,将会导致:节点1由于数据尾部不完整的换行符产生错误数据,节点2由于数据头部出现多余的不完整换行符产生错误数据。在本实施例中,通过设置设置大小合适的查找盒(红色虚线框表示),可以实现一次缓存扫描,提高换行符的查找效率。查找盒最小大小为(sep_len+4MB),可以一次容纳整行数据,并且可避免换行符被从中间切分,节点1的节点2都可以正确切分并加载数据。

本实施例通过增加如下步骤扫描预设范围内的缓存数据,确定所述预设范围内的换行符。可以避免节点之间因为换行符不完整而产生错误数据。可正确的切分和加载数据。

实施例四

图4是本发明实施例四提供的切分数据块的加载装置的结构示意图,如图4所示,所述装置包括:

判断单元410,用于判断接收的数据块偏移地址是否等于0,如果等于0,则读取URL中指定的数据;

第一查找单元420,如果大于0,则用于从偏移地址前第一个换行符至偏移地址后预设空间范围内查找换行符;

第一丢弃单元430,如果查找到换行符,则用于丢弃所述换行符前的数据;

第二丢弃单元440,用于丢弃偏移地址后预设空间范围内所有数据。

进一步的,所述URL中指定的数据包括:

指定偏移位置和空间的数据。

进一步的,所述装置还包括:

读取单元450,用于在读取URL中指定的数据后,继续读取预设空间范围内的数据;

第二查找单元460,用于从URL中指定的数据中最后一个换行符至预设空间范围内查找换行符;

第三丢弃单元470,如果查找到换行符,用于丢弃所述换行符后的数据;

保留单元480,用于保留所有数据

进一步的,所述装置还包括:

扫描单元490,用于扫描预设范围内的缓存数据,确定所述预设范围内的换行符。

更进一步的,所述预设空间为4MB。

本发明实施例通过接收数据块的偏移地址来获取URL中的指定数据,以使得加载节点可以根据自身的数据块确定数据内容,实现并行数据加载。可以实现各加载节点间的负载均衡和提高总体加载速度。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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