CN103544285B - 一种数据加载方法及装置 - Google Patents
一种数据加载方法及装置 Download PDFInfo
- Publication number
- CN103544285B CN103544285B CN201310516735.5A CN201310516735A CN103544285B CN 103544285 B CN103544285 B CN 103544285B CN 201310516735 A CN201310516735 A CN 201310516735A CN 103544285 B CN103544285 B CN 103544285B
- Authority
- CN
- China
- Prior art keywords
- data
- back end
- load
- load server
- data block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及数据处理领域,尤其涉及一种数据加载方法及装置,用以提高对系统内各个数据节点的资源及网络带宽的利用效率;本发明数据加载方法中,第一数据节点在接收到所属的数据库系统的主节点发送的数据加载指令后,从加载服务器中获取数据块,并检测获取的数据块中每条逻辑记录所属的数据节点,针对其中任意一条逻辑记录,在检测到该条逻辑记录属于本节点后,将该条逻辑记录存储在本地,在检测到该条逻辑记录属于所述数据库系统的其它数据节点后,将该条逻辑记录转发给所述其它数据节点。本发明将分布式数据库系统的数据重分布能力布置在数据库系统中的每个数据节点,从而可以充分利用数据库系统中每个数据节点的资源及网络带宽。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种数据加载方法及装置。
背景技术
分布式数据库系统是在集中式数据库系统的基础上发展起来的,是计算机技术和网络技术相结合的产物。相比集中式数据库系统,分布式数据库系统具有许多优势:首先,分布式数据库系统可以允许各个分散部门将其常用的数据存储在本地,从而可以降低数据传送的成本,提高响应速率,其次,由于分布式数据库系统允许在网络出现故障时,对局部数据库进行操作,从而可以提高系统的可靠性,再次,由于在分布式数据库系统中增加一个新的局部数据库,或在某个位置扩充一台适当的小型计算机,都很容易实现,因此,分布式数据库系统的可扩展性也比较高。分布式数据库系统的低延迟、高可靠、易扩展等优点成为企业部署数据库系统的首选。
分布式数据库系统主要包括一个主节点(master)和多个数据节点(datanode),在该系统中,进行数据加载的方式是采用主节点或系统外的数据导入组件作为数据加载的入口,由该主节点或数据导入组件对需要入库的数据进行拆分解析等处理,确定不同数据所属的数据节点,并将处理后的数据分发给数据库中对应的数据节点,因此,分布式数据库系统的整体加载性能依赖于上述主节点或数据导入组件的处理性能,在数据量较大、系统内数据节点数量较多时,上述主节点或数据导入组件需要将大量的数据进行拆分解析后,分别分发给对应的各个数据节点,耗时较长,这时,上述主节点或数据导入组件会成为整个数据库系统进行数据加载的瓶颈,在主节点或数据导入组件将数据分发到数据节点之前,该数据节点无法对数据进行任何处理,因此,采用这种加载方式对系统内各个数据节点的资源及网络带宽的利用效率较低。
发明内容
本发明实施例提供一种数据加载方法及装置,用以解决分布式数据库系统中由主节点或数据导入组件作为数据加载的入口的方式对系统内各个数据节点的资源及网络带宽的利用效率较低的问题。
第一方面,提供一种数据加载方法,该方法应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,该方法采用加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,包括:
第一数据节点在接收到所属的数据库系统的主节点发送的数据加载指令后,从加载服务器中获取数据块;
所述第一数据节点检测获取的数据块中每条逻辑记录所属的数据节点;
针对数据块中的任意一条逻辑记录,所述第一数据节点在检测到该条逻辑记录属于本节点后,将该条逻辑记录存储在本地,在检测到该条逻辑记录属于所述数据库系统的其它数据节点后,将该条逻辑记录转发给所述其它数据节点。
结合第一方面,在第一种可能的实现方式中,所述第一数据节点从加载服务器中获取数据块,包括:
所述第一数据节点至少一次向多个加载服务器中的第一加载服务器发送数据请求消息,每次接收所述第一加载服务器分配的一个数据块;
若所述第一数据节点确定所述第一加载服务器分配数据块的速率低于设定阈值,则在将最近一次获取的数据块处理完毕后,至少一次向第二加载服务器发送数据请求消息,每次接收所述第二加载服务器分配的一个数据块。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第一数据节点至少一次向所述第二加载服务器发送数据请求消息,包括:
所述第一数据节点确定第一次向所述第二加载服务器发送的数据请求消息;所述确定的数据请求消息中包括已获取的数据块对应的文件偏移量信息;
所述第一数据节点向所述第二加载服务器发送确定的所述数据请求消息,以使所述第二加载服务器根据接收的数据请求消息中包括的所述文件偏移量信息确定需要分配给所述第一数据节点的数据块;
其中,所述第一加载服务器中存储的数据与所述第二加载服务器中存储的数据相同,且属于同一数据文件。
第二方面,提供一种数据加载方法,该方法应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,该方法采用加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,包括:
第一加载服务器接收并存储需要提供给数据库系统内的数据节点的数据;
所述第一加载服务器将接收的数据划分为多个数据块;
所述第一加载服务器在接收到所述数据库系统内的多个数据节点根据所述主节点的指示发送的数据请求消息后,分别基于划分的数据块为所述多个数据节点中的每个数据节点分配不同的数据块,以使每个数据节点在获取数据块后,将获取的数据块中的每条逻辑记录分配到该条逻辑记录所属的数据节点。
结合第二方面,在第一种可能的实现方式中,所述第一加载服务器接收并存储的数据与其它为所述数据库系统内的数据节点提供数据块的加载服务器接收并存储的数据不同;所述第一加载服务器划分的每个数据块中的数据是行完整的。
结合第二方面,在第二种可能的实现方式中,所述第一加载服务器接收并存储的数据与其它为所述数据库系统内的数据节点提供数据块的加载服务器接收并存储的数据相同,且属于同一个数据文件;
所述第一加载服务器分别为所述多个数据节点中的每个数据节点分配不同的数据块之前,还包括:
针对一个数据节点,若该数据节点在向所述第一加载服务器发送数据请求消息之前,已从其它加载服务器获取了数据块,则所述第一加载服务器根据该数据节点发送的文件偏移量信息,确定需要发送给该数据节点的数据块。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述第一加载服务器将接收的数据划分为多个数据块,包括:
所述第一加载服务器根据所述数据库系统内的数据节点的个数M,将存储的数据划分为M个数据组,并将每个数据组中的数据划分为多个数据块;其中,M为正整数,每个数据组对应一个数据节点;
所述第一加载服务器分别为所述多个数据节点中的每个数据节点分配不同的数据块,包括:
针对一个数据节点,所述第一加载服务器从对应该数据节点的数据组中选择一个数据块分配给该数据节点。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第一加载服务器将存储的数据划分为M个数据组之后,还包括:
所述第一加载服务器根据不同数据节点的数据处理速率的不同,调整划分的每个数据组的数据量。
第三方面,提供一种数据加载方法,该方法应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,该方法采用加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该方法包括:
主节点接收数据加载指令;
所述主节点将所述数据加载指令发送给所属的数据库系统内的每个数据节点,指示所述每个数据节点从加载服务器中获取数据块,并将获取的数据块中的每条逻辑记录分配到该条逻辑记录所属的数据节点。
第四方面,提供一种数据加载装置,该装置应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,所述装置设置于每个数据节点中,所述数据库系统外设置有加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该装置包括:
获取模块,用于在接收到所属的数据库系统的主节点发送的数据加载指令后,从加载服务器中获取数据块,并将获取的数据块传输至检测模块;
检测模块,用于检测所述获取模块获取的数据块中每条逻辑记录所属的数据节点;
处理模块,用于针对数据块中的任意一条逻辑记录,在所述检测模块检测到该条逻辑记录属于本节点后,将该条逻辑记录存储在本地,在检测到该条逻辑记录属于所述数据库系统的其它数据节点后,将该条逻辑记录转发给所述其它数据节点。
结合第四方面,在第一种可能的实现方式中,所述获取模块具体用于:
至少一次向多个加载服务器中的第一加载服务器发送数据请求消息,每次接收所述第一加载服务器分配的一个数据块;若确定所述第一加载服务器分配数据块的速率低于设定阈值,则在将最近一次获取的数据块处理完毕后,至少一次向第二加载服务器发送数据请求消息,每次接收所述第二加载服务器分配的一个数据块。
结合第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述获取模块具体用于:
确定第一次向所述第二加载服务器发送的数据请求消息,所述确定的数据请求消息中包括已获取的数据块对应的文件偏移量信息,向所述第二加载服务器发送确定的所述数据请求消息,以使所述第二加载服务器根据接收的数据请求消息中包括的所述文件偏移量信息确定需要分配给所述第一数据节点的数据块;其中,所述第一加载服务器中存储的数据与所述第二加载服务器中存储的数据相同,且属于同一数据文件。
第五方面,提供一种数据加载装置,该装置应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,该装置设置于加载服务器中,所述加载服务器用于为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该装置包括:
接收模块,用于接收并存储需要提供给数据库系统内的数据节点的数据,并将接收的数据传输至划分模块;
划分模块,用于将接收模块接收的数据划分为多个数据块,并将划分的数据块传输至分配模块;
分配模块,用于在接收到所述数据库系统内的多个数据节点根据所述主节点的指示发送的数据请求消息后,分别基于划分模块划分的数据块为所述多个数据节点中的每个数据节点分配不同的数据块,以使每个数据节点在获取数据块后,将获取的数据块中的每条逻辑记录分配到该条逻辑记录所属的数据节点。
结合第五方面,在第一种可能的实现方式中,所述接收模块接收并存储的数据与为所述数据库系统内的数据节点提供数据块的其它加载服务器接收并存储的数据不同;所述划分模块划分的每个数据块中的数据是行完整的。
结合第五方面,在第二种可能的实现方式中,所述接收模块接收并存储的数据与为所述数据库系统内的数据节点提供数据块的其它加载服务器接收并存储的数据相同,且属于同一个数据文件;
所述分配模块具体用于:针对一个数据节点,若该数据节点在向所述第一加载服务器发送数据请求消息之前,已从其它加载服务器获取了数据块,则根据该数据节点发送的文件偏移量信息,确定需要发送给该数据节点的数据块。
结合第五方面的第二种可能的实现方式,在第三种可能的实现方式中,所述划分模块具体用于:根据所述数据库系统内的数据节点的个数M,将存储的数据划分为M个数据组,并将每个数据组中的数据划分为多个数据块;其中,M为正整数,每个数据组对应一个数据节点;
所述分配模块具体用于:针对一个数据节点,从对应该数据节点的数据组中选择一个数据块分配给该数据节点。
结合第五方面的第三种可能的实现方式,在第四种可能的实现方式中,,所述划分模块还用于:
所述第一加载服务器根据不同数据节点的数据处理速率的不同,调整划分的每个数据组的数据量。
第六方面,提供一种数据加载装置,该装置应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,所述装置设置于所述主节点中;所述数据库系统外设置有加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该装置包括:
接收模块,用于接收数据加载指令,并将接收的所述数据加载指令传输至发送模块;
发送模块,用于将所述数据加载指令发送给所属的数据库系统内的每个数据节点,指示所述每个数据节点从加载服务器中获取数据块,并将获取的数据块中的每条逻辑记录分配到该条逻辑记录所属的数据节点。
本发明第一方面提供的数据加载方法,将分布式数据库系统的数据重分布能力布置在数据库系统中的每个数据节点,每个数据节点在获取到不属于本节点的数据时将该数据重分布到该数据所属的节点,从而可以充分利用数据库系统中每个数据节点的资源及网络带宽,而且还能显著提高整个数据库系统的数据加载及数据处理的效率;该方法中,加载服务器可以将存储的数据以数据块的形式批量分配给不同的数据节点,这种方式相比传统的基于开放数据库互连(Open Database Connectivity,ODBC)或数据库连接(Java DataBase Connectivity,JDBC)等标准数据库连接方式的数据加载,即采用主节点将结构化查询语言(Structured Query Language,SQL)语句逐个插入数据节点的方式,可以极大提高数据加载的效率。
本发明第二方面提供的数据加载方法,通过设置加载服务器来为数据库系统内的数据节点进行数据加载提供数据块,可以将存储的数据以数据块的形式批量分配给不同的数据节点,从而可以使各数据节点并行执行数据处理的操作,不仅可以充分利用每个数据节点的资源及网络带宽,而且相比传统的基于ODBC或JDBC等标准数据库连接方式的数据加载,加载效率更高;
本发明第三方面提供的数据加载方法,主节点在接收到数据加载指令后,将数据加载指令下发给每个数据节点,从而将数据重分布能力转交给每个数据节点,以充分利用每个数据节点的资源及网络带宽。
附图说明
图1为本发明实施例一提供的数据加载方法流程图;
图2为本发明实施例提供的分布式数据库系统结构示意图;
图3为本发明实施例分布式数据库系统进行数据加载的示意图;
图4为本发明实施例二提供的数据加载方法流程图;
图5为方式一中加载服务器分发数据示意图;
图6为方式二中分布式数据库系统并行加载大小为1T的大文件file001的示意图;
图7为方式二中对单个大文件的数据切割示意图;
图8为方式二中加载服务器分发数据示意图;
图9为本发明实施例三提供的数据加载方法流程图;
图10为本发明实施例四针对多个数据文件进行数据加载的方法流程图;
图11为本发明实施例五针对单个较大的数据文件进行数据加载的方法流程图;
图12为本发明实施例一提供的数据加载装置示意图;
图13为本发明实施例二提供的数据加载装置示意图;
图14为本发明实施例三提供的数据加载装置示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面结合说明书附图对本发明实施例作进一步详细描述。
如图1所示,为本发明实施例一提供的数据加载方法流程图;
本发明实施例应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,本发明实施例中,采用加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该方法包括以下步骤:
S101:第一数据节点在接收到所属的数据库系统的主节点发送的数据加载指令后,从加载服务器中获取数据块;
S102:所述第一数据节点检测获取的数据块中每条逻辑记录所属的数据节点;
S103:针对数据块中的任意一条逻辑记录,所述第一数据节点在检测到该条逻辑记录属于本节点后,将该条逻辑记录存储在本地,在检测到该条逻辑记录属于所述数据库系统的其它数据节点后,将该条逻辑记录转发给所述其它数据节点。
本发明实施例中的分布式数据库系统主要包括一个主节点(master)及多个数据节点(datanode),还可以包括备用节点(standby),以供主节点出现故障的情况下使用,同时,为了辅助每个数据节点快速进行数据加载,本发明实施例中,预先设置了为数据库系统内的数据节点进行数据加载提供数据块的服务器,即加载服务器;如图2所示,为本发明实施例提供的分布式数据库系统结构示意图。
本发明实施例中,将分布式数据库系统的数据重分布能力布置在数据库系统中的每个数据节点,使每个数据节点在获取到不属于本节点的数据时将该数据重分布到该数据所属的节点,从而可以充分利用数据库系统中每个数据节点的资源及网络带宽,而且还能显著提高整个数据库系统的数据加载及数据处理的效率;具体地,每个数据节点确定获取的数据所属的数据节点的方式可以采用现有的方法,即,针对一个数据节点,该数据节点针对下载的数据块中的每条逻辑记录计算分布列的哈希(hash)值,然后根据计算的哈希值确定该条逻辑记录所属的数据节点。
本发明实施例中的加载服务器可以为每个数据节点提供基于超文本传输协议(Hypertext transfer protocol,HTTP)或文件传输协议(File Transfer Protocol,FTP)的数据加载服务,即,将存储的数据以数据块的形式批量分配给不同的数据节点,这种方式相比传统的基于开放数据库互连(Open Database Connectivity,ODBC)或数据库连接(Java Data Base Connectivity,JDBC)等标准数据库连接方式的数据加载,即采用主节点将SQL语句逐个插入数据节点的方式,可以极大提高数据加载的效率。
在具体实施中,可以为数据库系统创建外表,在该外表中记录加载服务器的地址,每个数据节点都可以对该外表进行查询操作。
在具体实施过程中,可以设置一个或多个加载服务器,具体地,可以根据分布式数据库系统中数据节点的个数和/或加载数据量的大小等确定加载服务器的个数,比如,在加载数据量较大时,可以设置多个加载服务器同时提供数据加载服务,以避免加载服务器的出口带宽成为数据加载的瓶颈,在数据节点个数较多时,也可以设置多个加载服务器,以避免过多的数据节点连接一个加载服务器,导致各数据节点的并行下载速率过慢。
如图3所示,为本发明实施例分布式数据库系统进行数据加载的示意图,主节点在接收到数据加载指令后,将数据加载指令下发到各个数据节点,各数据节点接收到数据加载指令后,分别连接加载服务器,从加载服务器上下载数据块,数据节点对下载的数据块中的每条逻辑记录进行分布计算,确定下载的数据块中每条逻辑记录所属的节点,针对其中任意一条逻辑记录,若确定该条逻辑记录属于本节点,将该条逻辑记录写入本地存储队列中,若确定该条逻辑记录属于其它数据节点,则对该条逻辑记录进行重分布,即将该条逻辑记录转发给其它数据节点,当各数据节点在加载服务器上取不到数据时,完成数据加载,各数据节点将加载完成的信息反馈给主节点,主节点将加载完成的信息反馈给用户。
可选地,步骤S101中,所述第一数据节点从加载服务器中获取数据块,包括:
所述第一数据节点至少一次向多个加载服务器中的第一加载服务器发送数据请求消息,每次接收所述第一加载服务器分配的一个数据块;
若所述第一数据节点确定所述第一加载服务器分配数据块的速率低于设定阈值,则在将最近一次获取的数据块处理完毕后,至少一次向第二加载服务器发送数据请求消息,每次接收所述第二加载服务器分配的一个数据块。
在具体实施过程中,每个数据节点只需选择设置的多个加载服务器中的一个加载服务器,向选择的该加载服务器发送数据请求消息,在接收到该加载服务器发送的数据块后,可以将该数据块先缓存在本地,并处理缓存的数据块,处理过程包括:判断该数据块包含的每条逻辑记录所属的节点,若确定该条逻辑记录属于本节点,则将该条逻辑记录写入本地存储队列中,若确定该条逻辑记录属于其它数据节点,则将该条逻辑记录转发给所属的其它数据节点;当将缓存的数据块中的每条逻辑记录都处理完毕后再向加载服务器发送数据请求消息,下载另一个数据块,如此,可以减少网络交互,节省网络带宽。
在具体实施中,可以预先设置好每个数据节点首次连接的加载服务器,也可以由主节点在下发数据加载指令时,统一配置每个数据节点首次连接的加载服务器,以实现加载服务器之间的负载均衡,避免加载开始时,过多的数据节点从一个加载服务器上请求数据,导致加载速率过慢。这种预先为每个数据节点分配加载服务器的方式,虽然可以在一开始进行数据加载时实现加载服务器的负载均衡,但是,由于不同加载服务器的数据提供性能可能不同,在设定时间内,有的加载服务器可能只可以为一个数据节点提供一个数据块,有的加载服务器却可能可以为多个数据节点分别提供多个数据块,为了在数据加载过程中进一步提高下载效率,本发明实施例提出了调整策略:上述第一数据节点在发现当前为其提供数据的加载服务器的数据提供性能较低,也即分配数据的速率较低时,为了提高数据加载效率,可以在处理完最近一次接收的数据块后,重新连接其它的加载服务器下载数据,除此,第一数据节点也可以在发现第一加载服务器不再发送数据时,重新连接其它的加载服务器下载数据,第一数据节点重复上述请求、接收数据的步骤,直到从所有的加载服务器都获取不到数据,则表示完成了数据加载。
可选地,所述第一数据节点至少一次向所述第二加载服务器发送数据请求消息,包括:
所述第一数据节点确定第一次向所述第二加载服务器发送的数据请求消息;所述确定的数据请求消息中包括已获取的数据块对应的文件偏移量信息;
所述第一数据节点向所述第二加载服务器发送确定的所述数据请求消息,以使所述第二加载服务器根据接收的数据请求消息中包括的所述文件偏移量信息确定需要分配给所述第一数据节点的数据块;
其中,所述第一加载服务器中存储的数据与所述第二加载服务器中存储的数据相同,且属于同一数据文件。
在具体实施过程中,各加载服务器需要存储的数据可能属于多个数据文件,为了避免重复下载,可以使不同加载服务器分别存储不同的数据文件,这时,当上述第一数据节点从第一加载服务器转移到第二加载服务器下载数据时,不必携带已下载数据对应的文件偏移量信息;当系统外的节点发送给各加载服务器的数据属于同一个较大的数据文件时,为了避免进行文件切割导致数据完整性受到破坏及增加额外的切割计算的流程,可以将该数据文件分别存储到每个加载服务器中,并预先为每个数据节点分配好属于该数据节点处理的部分数据,在数据节点请求数据时,为该数据节点分配属于该数据节点的那部分数据,在该数据节点从第一加载服务器转移到第二加载服务器上获取数据时,第二加载服务器根据该数据节点携带的已处理数据对应的文件偏移量信息,继续为该数据节点提供属于该数据节点的数据。这里的文件偏移量信息可以用于使第二加载服务器确定该数据节点已下载的数据对应的文件位置,以确定继续为该数据节点提供的数据,保证该数据节点下载数据的完整性和不重复性。
上述步骤中,当所有的加载服务器中的数据分发完毕后,完成数据加载,这时,每个数据节点将数据加载完成的信息反馈到主节点,主节点在接收到各数据节点发送的数据加载完成的信息后,将数据加载完成的信息通知给用户。
与上述数据节点执行数据加载的方法流程对应,本发明实施例还提供了以下加载服务器为各数据节点提供数据的数据加载方法;
如图4所示,为本发明实施例二提供的数据加载方法流程图;
本发明实施例应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,在本发明实施例中,采用加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该方法包括:
S401:第一加载服务器接收并存储需要提供给数据库系统内的数据节点的数据;
S402:所述第一加载服务器将接收的数据划分为多个数据块;
S403:所述第一加载服务器在接收到所述数据库系统内的多个数据节点根据所述主节点的指示发送的数据请求消息后,分别基于划分的数据块为所述多个数据节点中的每个数据节点分配不同的数据块,以使每个数据节点在获取数据块后,将获取的数据块中的每条逻辑记录分配到该条逻辑记录所属的数据节点。
本发明实施例中,通过设置加载服务器来为数据库系统内的数据节点进行数据加载提供数据块,从而可以使各数据节点并行执行数据处理的操作,以充分利用每个数据节点的资源及网络带宽,同时,第一加载服务器在接收到多个数据节点发送的数据请求消息后,为不同的数据节点分别分配不同的数据块,以避免各数据节点对相同数据的重复性处理。
本发明实施例中的加载服务器可以为每个数据节点提供基于HTTP或FTP的数据加载服务,即,将存储的数据以数据块的形式批量分配给不同的数据节点,这种方式相比传统的基于ODBC或JDBC等标准数据库连接方式的数据加载,即采用主节点将SQL语句逐个插入数据节点的方式,可以极大提高数据加载的效率。
在具体实施过程中,分布式数据库系统可能需要加载多个较小的数据文件,也可能需要加载一个较大的数据文件,针对这两种不同情况,各加载服务器可以选择不同的数据存储方式,下面分别作介绍:
方式一,每个加载服务器接收并存储不同的数据;
也即,在上述步骤S401中,所述第一加载服务器接收并存储的数据与其它为所述数据库系统内的数据节点提供数据块的加载服务器接收并存储的数据不同;所述第一加载服务器划分的每个数据块中的数据是行完整的。
这种方式一般适用于数据库系统需要加载多个较小的数据文件的情况,采用这种方式,不同加载服务器分别接收并存储数据库系统外的节点发送的不同的数据文件,不仅可以避免不同加载服务器对相同数据的重复存储,节省加载服务器的存储空间,还可以避免数据节点对不同加载服务器中相同数据的重复下载,同时,由于每个加载服务器存储的数据文件不同,而且,第一加载服务器划分的每个数据块中的数据是行完整的,因此,数据节点在从一个加载服务器转移到另一个加载服务器下载数据时,不必携带已下载数据的文件偏移量信息;
当然,对于单个较大的数据文件,比如数据量为1T的数据文件,也可以采用这种方式,只不过在这种情况下,还需要该系统外的节点按照加载服务器的数量对该数据文件进行切割,并将切割后的每部分数据分别存储到每个加载服务器中,在切割中需要保证每部分数据的行完整性,因此,额外增加了系统外节点的工作量。
基于上述存储数据的方式,这些加载服务器在将存储的数据分配给数据库系统中的每个数据节点时,可以采用以下方式:
如图5所示,为方式一中加载服务器分发数据示意图;图中虚线表示数据节点与加载服务器未建立连接,实线表示数据节点与加载服务器已建立连接;在具体实施中,每个加载服务器将存储的数据划分为多个行完整的数据块,在接收到多个数据节点发送的数据请求消息后,为这多个数据节点中的每个数据节点分别分配一个数据块,如图5中,加载服务器1在接收到数据节点1和数据节点2的数据请求消息后,分别为数据节点1和数据节点2分配一个数据块;若有的数据节点的处理性能高,在该数据节点处理完一个数据块后,可以继续为该数据节点分配其它的数据块,如图5中,在相同时间内,数据节点1和数据节点3各下载了2个数据块,数据节点2只下载了一个数据块;这种方式可以根据不同数据节点的处理能力分配数据,相比在一开始就将数据平均分配给每个数据节点的方式,可以提高数据库系统处理数据的整体效率;在具体实施中,当一个数据节点探测到当前连接的下载服务器的数据提供性能较低时,重新连接其它的加载服务器下载数据,如图5中,数据节点1开始时从加载服务器1上下载数据,当该数据节点确定该加载服务器1的数据分配速率低于设定阈值时,重新连接加载服务器2,从加载服务器2上继续下载数据。
方式二、每个加载服务器接收并存储同一数据文件;
也即,在上述步骤S401中,所述第一加载服务器接收并存储的数据与其它为所述数据库系统内的数据节点提供数据块的加载服务器接收并存储的数据相同,且属于同一个数据文件;
在该方式下,所述第一加载服务器分别为所述多个数据节点中的每个数据节点分配不同的数据块之前,还包括:针对一个数据节点,若该数据节点在向所述第一加载服务器发送数据请求消息之前,已从其它加载服务器获取了数据块,则所述第一加载服务器根据该数据节点发送的文件偏移量信息,确定需要发送给该数据节点的数据块。
该方式二适用于数据库系统加载一个较大的数据文件的情况,在上述关于方式一的描述中已说明,当数据库系统加载一个较大的数据文件时,也可以采用上述方式一的方式,只是方式一在处理这种情况时会额外增加系统外节点处理数据的负担,并且有可能会破坏数据的行完整性,而该方式二由于无需将数据文件进行切割,可以保证数据的完整性及避免增加系统外节点处理数据的负担。
采用这种方式,需要预先确定为每个数据节点分配的数据块,针对其中一个数据节点,在该数据节点向任意一个加载服务器请求数据时,该加载服务器从预先确定的需要为该数据节点分配的数据块中,选择数据块发送给该数据节点。
在具体实施过程中,所述第一加载服务器为每个数据节点分配数据块之前,针对一个数据节点,若该数据节点在向所述第一加载服务器发送数据请求消息之前,已从其它加载服务器获取了数据块,则所述第一加载服务器可以根据该数据节点发送的文件偏移量信息,确定需要发送给该数据节点的数据;该文件偏移量信息可以用于使第二加载服务器确定该数据节点已下载数据对应的文件位置,以确定继续为该数据节点分配的数据,保证该数据节点下载数据的完整性和不重复性。
如图6所示,为上述方式二中分布式数据库系统并行加载大小为1T的大文件file001的示意图;主节点在接收到数据加载指令后,将数据加载指令下发到各个数据节点,每个数据节点在接收到数据加载指令后,分别连接一个加载服务器,从连接的加载服务器上下载数据块,针对其中一个数据节点,该数据节点对下载的数据块中的每条逻辑记录进行分布计算,确定下载的数据块中每条逻辑记录所属的节点,针对其中一条逻辑记录,若确定下载的该条逻辑记录属于本节点,则直接将下载的该条逻辑记录插入本地存储队列,若确定下载的该条逻辑记录属于其它节点,则将该条逻辑记录转发给其他节点,在该数据节点确定当前连接的加载服务器分配数据的速率低于设定阈值时,重新连接其它的加载服务器,并将已下载数据的文件偏移量信息发送给重新连接的加载服务器,当各数据节点在所有的加载服务器上都取不到数据时,完成数据加载,各数据节点将加载完成的结果反馈给主节点,主节点将各数据节点加载完成的信息反馈给用户。
基于上述存储数据的方式,这些加载服务器在将存储的数据分配给数据库系统中的每个数据节点时,可以采用以下方式:
可选地,所述第一加载服务器将接收的数据划分为多个数据块,包括:
所述第一加载服务器根据所述数据库系统内的数据节点的个数M,将存储的数据划分为M个数据组,并将每个数据组中的数据划分为多个数据块;其中,M为正整数,每个数据组对应一个数据节点;
所述第一加载服务器分别为所述多个数据节点中的每个数据节点分配不同的数据块,包括:
针对一个数据节点,所述第一加载服务器从对应该数据节点的数据组中选择一个数据块分配给该数据节点。
可选地,所述第一加载服务器将存储的数据划分为M个数据组之后,还包括:
所述第一加载服务器根据不同数据节点的数据处理速率的不同,调整划分的每个数据组的数据量。
如图7所示,为上述方式二中对单个大文件的数据切割示意图;假设数据库系统共有三个数据节点,每个加载服务器将数据文件划分为三个数据组,分别用偏移量表示为A~B,B~C,C~D,其中,A、B、C、D分别表示相对数据文件开头偏移的字节数;每个数据组分别对应一个数据节点;当数据节点1处理数据的速率较慢时,加载服务器可以减少数据节点1对应的数据组的数据量,将其调整为A~B-N,N表示减少的字节数,而将处理数据的速率较快的数据节点2的偏移量调整为B-N~C。
如图8所示,为上述方式二中加载服务器分发数据示意图;针对数据库系统中的三个数据节点,每个加载服务器将存储的同一个数据文件划分为三个行完整的数据组,分别对应每个数据节点,并将每个数据组划分为多个数据块,针对其中任意一个加载服务器,该加载服务器在接收到某个数据节点发送的数据请求消息后,从对应该数据节点的数据组中选择一个数据块发送给该数据节点,在给每个数据节点分发数据时,可以从对应该数据节点的数据组中按顺序取出数据块分配给该数据节点,因此,每个数据块中的数据不需要一定是行完整的,但是,在该数据节点从一个加载服务器转移到其它加载服务器下载数据时,需要携带已下载数据的文件偏移量信息,以便于其它加载服务器根据该文件偏移量信息确定为该数据节点分配的数据块,保证数据下载的完整性及不重复性。
与上述实施例一中数据节点执行数据加载和实施例二中加载服务器为各数据节点提供数据的数据加载方法相对应,本发明实施例还提供了主节点指示各数据节点进行数据加载的方法;
如图9所示,为本发明实施例三提供的数据加载方法流程图;
本发明实施例应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,在本发明实施例中,采用加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该方法包括:
S901:主节点接收数据加载指令;
S902:所述主节点将所述数据加载指令发送给所属的数据库系统内的每个数据节点,指示所述每个数据节点从加载服务器中获取数据块,并将获取的数据块中的每条逻辑记录分配到该条逻辑记录所属的数据节点。
为了更详细地说明本发明实施例进行数据加载的方法,下面通过几个具体的实施例作进一步说明:
如图10所示,为本发明实施例四针对多个数据文件进行数据加载的方法流程图,包括:
S1001:各加载服务器接收并存储数据库系统外的节点发送的多个数据文件;其中,不同加载服务器中存储的数据文件不同;
S1002:主节点接收数据加载指令,并将接收的指令下发给所属的分布式数据库系统内的各数据节点;
这里,用户可以通过编辑结构化查询语言(Structured Query Language,SQL)语句在主节点输入数据加载指令。
S1003:各数据节点在接收到数据加载指令后,查询所述数据库系统的外表中记录的加载服务器的地址,连接加载服务器,并向连接的加载服务器发送数据请求消息;
在具体实施中,针对一个数据节点,若该数据节点确定当前为其提供数据的加载服务器分配数据的速率低于设定阈值,可以重新连接其它的加载服务器下载数据,以提高数据下载效率。
S1004:各加载服务器在接收到数据节点的数据请求消息后,为每个数据节点分配一个数据块;其中,所述数据块中的数据为行完整的;
在具体实施中,各加载服务器可以在接收并存储数据库系统外的节点发送的数据后,即将该数据划分为多个数据块,也可以在接收到数据节点的数据请求消息后,再将存储的数据划分为多个数据块;
在具体实施中,每个数据节点在下载一个数据块后,将该数据块缓存在本地,在将该数据块中的数据处理完毕后,再向加载服务器请求数据,如此,可以减少网络交互,同时,采用这种不固定分配数据的方式,在数据下载过程中,数据处理能力高的数据节点可以请求处理较多的数据,实现对不同数据节点的按需分配,提高整个数据库系统的数据处理效率;
S1005:各数据节点确定接收的数据块中每条逻辑记录所属的数据节点,针对其中任意一条逻辑记录,若确定该条逻辑记录属于本节点,则将该条逻辑记录存储在本地,若确定该条逻辑记录属于其他数据节点,则将该条逻辑记录转发给其它数据节点;
S1006:各数据节点在从为数据库系统提供数据的所有的加载服务器中都无法取到数据时,确定完成数据加载,并将数据加载完成的信息反馈给主节点;
S1007:主节点将数据加载完成的信息通知给用户。
如图11所示,为本发明实施例五针对单个较大的数据文件进行数据加载的方法流程图,包括:
S1101:各加载服务器接收并存储数据库系统外的节点发送的同一个数据文件;
S1102:主节点接收数据加载指令,并将接收的指令下发给所属的分布式数据库系统内的各数据节点;
S1103:各数据节点在接收到数据加载指令后,查询所述数据库系统的外表中记录的加载服务器的地址,连接加载服务器,并向连接的加载服务器发送数据请求消息;
在具体实施中,针对一个数据节点,若该数据节点确定当前为其提供数据的加载服务器分配数据的速率低于设定阈值,可以重新连接其它的加载服务器下载数据,以提高数据下载效率;由于各加载服务器中存储的为同一个数据文件,该数据节点在重新连接其它的加载服务器下载数据时,需要同时向该重新连接的加载服务器发送已下载数据的文件偏移量信息,以使该重新连接的加载服务器根据该文件偏移量信息,确定分配给该数据节点的数据。
S1104:各加载服务器在接收到数据节点的数据请求消息后,从预先确定的该数据节点对应的数据组中选取一个数据块发送给该数据节点;
在具体实施中,各加载服务器需要根据数据节点的个数M,将存储的数据文件划分为M个数据组,每个数据组对应一个数据节点,并将每个数据组划分为多个数据块,在为一个数据节点分配数据时,从对应该数据节点的数据组中按数据的逻辑顺序,选择一个数据块发送给该数据节点;
在具体实施中,当加载服务器发现某个数据节点处理数据的速率较快时,可以调整已划分的每个数据组的数据量,为该数据节点分配较多的数据。
S1105:各数据节点确定接收的数据块中每条逻辑记录所属的数据节点,针对其中任意一条逻辑记录,若确定该条逻辑记录属于本节点,则将该条逻辑记录存储在本地,若确定该条逻辑记录属于其他数据节点,则将该条逻辑记录转发给其它数据节点;
S1106:各数据节点在从为数据库系统提供数据的所有的加载服务器中都无法取到数据时,确定完成数据加载,并将数据加载完成的信息反馈给主节点;
S1107:主节点将数据加载完成的信息通知给用户。
基于同一发明构思,本发明实施例中还提供了一种与数据加载方法对应的数据加载装置,由于该装置解决问题的原理与本发明实施例数据加载方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图12所示,为本发明实施例一提供的数据加载装置示意图,该装置应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,所述装置设置于每个数据节点中,所述数据库系统外设置有加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该装置包括:
获取模块121,用于在接收到所属的数据库系统的主节点发送的数据加载指令后,从加载服务器中获取数据块,并将获取的数据块传输至检测模块122;
检测模块122,用于检测所述获取模块121获取的数据块中每条逻辑记录所属的数据节点;
处理模块123,用于针对数据块中的任意一条逻辑记录,在所述检测模块122检测到该条逻辑记录属于本节点后,将该条逻辑记录存储在本地,在检测到该条逻辑记录属于所述数据库系统的其它数据节点后,将该条逻辑记录转发给所述其它数据节点。
可选地,所述获取模块121具体用于:
至少一次向多个加载服务器中的第一加载服务器发送数据请求消息,每次接收所述第一加载服务器分配的一个数据块;若确定所述第一加载服务器分配数据块的速率低于设定阈值,则在将最近一次获取的数据块处理完毕后,至少一次向第二加载服务器发送数据请求消息,每次接收所述第二加载服务器分配的一个数据块。
可选地,所述获取模块121具体用于:
确定第一次向所述第二加载服务器发送的数据请求消息,所述确定的数据请求消息中包括已获取的数据块对应的文件偏移量信息,向所述第二加载服务器发送确定的所述数据请求消息,以使所述第二加载服务器根据接收的数据请求消息中包括的所述文件偏移量信息确定需要分配给所述第一数据节点的数据块;其中,所述第一加载服务器中存储的数据与所述第二加载服务器中存储的数据相同,且属于同一数据文件。
如图13所示,为本发明实施例二提供的数据加载装置示意图,该装置应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,该装置设置于加载服务器中,所述加载服务器用于为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该装置包括:
接收模块131,用于接收并存储需要提供给数据库系统内的数据节点的数据,并将接收的数据传输至划分模块132;
划分模块132,用于将接收模块131接收的数据划分为多个数据块,并将划分的数据块传输至分配模块133;
分配模块133,用于在接收到所述数据库系统内的多个数据节点根据所述主节点的指示发送的数据请求消息后,分别基于划分模块132划分的数据块为所述多个数据节点中的每个数据节点分配不同的数据块,以使每个数据节点在获取数据块后,将获取的数据块中的每条逻辑记录分配到该条逻辑记录所属的数据节点。
可选地,所述接收模块131接收并存储的数据与为所述数据库系统内的数据节点提供数据块的其它加载服务器接收并存储的数据不同;所述划分模块132划分的每个数据块中的数据是行完整的。
可选地,所述接收模块131接收并存储的数据与为所述数据库系统内的数据节点提供数据块的其它加载服务器接收并存储的数据相同,且属于同一个数据文件;
所述分配模块133具体用于:针对一个数据节点,若该数据节点在向所述第一加载服务器发送数据请求消息之前,已从其它加载服务器获取了数据块,则根据该数据节点发送的文件偏移量信息,确定需要发送给该数据节点的数据块。
可选地,所述划分模块132具体用于:根据所述数据库系统内的数据节点的个数M,将存储的数据划分为M个数据组,并将每个数据组中的数据划分为多个数据块;其中,M为正整数,每个数据组对应一个数据节点;
所述分配模块133具体用于:针对一个数据节点,从对应该数据节点的数据组中选择一个数据块分配给该数据节点。
可选地,所述划分模块132还用于:
所述第一加载服务器根据不同数据节点的数据处理速率的不同,调整划分的每个数据组的数据量。
如图14所示,为本发明实施例三提供的数据加载装置示意图,该装置应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,所述装置设置于所述主节点中;所述数据库系统外设置有加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该装置包括:
接收模块141,用于接收数据加载指令,并将接收的所述数据加载指令传输至发送模块142;
发送模块142,用于将所述数据加载指令发送给所属的数据库系统内的每个数据节点,指示所述每个数据节点从加载服务器中获取数据块,并将获取的数据块中的每条逻辑记录分配到该条逻辑记录所属的数据节点。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (18)
1.一种数据加载方法,该方法应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,其特征在于,将分布式数据库系统的数据重分布能力布置在数据库系统中的每个数据节点,采用加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该方法包括:
第一数据节点在接收到所属的数据库系统的主节点发送的数据加载指令后,从加载服务器中获取数据块;
所述第一数据节点检测获取的数据块中每条逻辑记录所属的数据节点;
针对数据块中的任意一条逻辑记录,所述第一数据节点计算分布列的哈希值,根据计算的哈希值确定该条逻辑记录所属的数据节点;在检测到该条逻辑记录属于本节点后,将该条逻辑记录存储在本地,在检测到该条逻辑记录属于所述数据库系统的其它数据节点后,将该条逻辑记录转发给所述其它数据节点。
2.如权利要求1所述的方法,其特征在于,所述第一数据节点从加载服务器中获取数据块,包括:
所述第一数据节点至少一次向多个加载服务器中的第一加载服务器发送数据请求消息,每次接收所述第一加载服务器分配的一个数据块;
若所述第一数据节点确定所述第一加载服务器分配数据块的速率低于设定阈值,则在将最近一次获取的数据块处理完毕后,至少一次向第二加载服务器发送数据请求消息,每次接收所述第二加载服务器分配的一个数据块。
3.如权利要求2所述的方法,其特征在于,所述第一数据节点至少一次向所述第二加载服务器发送数据请求消息,包括:
所述第一数据节点确定第一次向所述第二加载服务器发送的数据请求消息;所述确定的数据请求消息中包括已获取的数据块对应的文件偏移量信息;
所述第一数据节点向所述第二加载服务器发送确定的所述数据请求消息,以使所述第二加载服务器根据接收的数据请求消息中包括的所述文件偏移量信息确定需要分配给所述第一数据节点的数据块;
其中,所述第一加载服务器中存储的数据与所述第二加载服务器中存储的数据相同,且属于同一数据文件。
4.一种数据加载方法,该方法应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,其特征在于,将分布式数据库系统的数据重分布能力布置在数据库系统中的每个数据节点,采用加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该方法包括:
多个加载服务器中的第一加载服务器接收并存储需要提供给数据库系统内的数据节点的数据;
所述第一加载服务器将接收的数据划分为多个数据块;
所述第一加载服务器在接收到所述数据库系统内的多个数据节点根据所述主节点的指示发送的数据请求消息后,分别基于划分的数据块为所述多个数据节点中的每个数据节点分配不同的数据块,以使每个数据节点在获取数据块后,该数据节点针对获取的数据块中的任意一条逻辑记录计算分布列的哈希值,根据计算的哈希值确定该条逻辑记录所属的数据节点,并将该条逻辑记录分配到确定的所述数据节点。
5.如权利要求4所述的方法,其特征在于,所述第一加载服务器接收并存储的数据与其它为所述数据库系统内的数据节点提供数据块的加载服务器接收并存储的数据不同;所述第一加载服务器划分的每个数据块中的数据是行完整的。
6.如权利要求4所述的方法,其特征在于,所述第一加载服务器接收并存储的数据与其它为所述数据库系统内的数据节点提供数据块的加载服务器接收并存储的数据相同,且属于同一个数据文件;
所述第一加载服务器分别为所述多个数据节点中的每个数据节点分配不同的数据块之前,还包括:
针对一个数据节点,若该数据节点在向所述第一加载服务器发送数据请求消息之前,已从其它加载服务器获取了数据块,则所述第一加载服务器根据该数据节点发送的文件偏移量信息,确定需要发送给该数据节点的数据块。
7.如权利要求6所述的方法,其特征在于,所述第一加载服务器将接收的数据划分为多个数据块,包括:
所述第一加载服务器根据所述数据库系统内的数据节点的个数M,将存储的数据划分为M个数据组,并将每个数据组中的数据划分为多个数据块;其中,M为正整数,每个数据组对应一个数据节点;
所述第一加载服务器分别为所述多个数据节点中的每个数据节点分配不同的数据块,包括:
针对一个数据节点,所述第一加载服务器从对应该数据节点的数据组中选择一个数据块分配给该数据节点。
8.如权利要求7所述的方法,其特征在于,所述第一加载服务器将存储的数据划分为M个数据组之后,还包括:
所述第一加载服务器根据不同数据节点的数据处理速率的不同,调整划分的每个数据组的数据量。
9.一种数据加载方法,该方法应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,其特征在于,将分布式数据库系统的数据重分布能力布置在数据库系统中的每个数据节点,采用加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该方法包括:
主节点接收数据加载指令;
所述主节点将所述数据加载指令发送给所属的数据库系统内的每个数据节点,指示所述每个数据节点从加载服务器中获取数据块,以使所述每个数据节点在获取数据块后,针对获取的数据块中的任意一条逻辑记录计算分布列的哈希值,根据计算的哈希值确定该条逻辑记录所属的数据节点,并将该条逻辑记录分配到确定的所述数据节点。
10.一种数据加载装置,该装置应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,其特征在于,将分布式数据库系统的数据重分布能力布置在数据库系统中的每个数据节点,所述装置设置于每个数据节点中,所述数据库系统外设置有加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该装置包括:
获取模块,用于在接收到所属的数据库系统的主节点发送的数据加载指令后,从加载服务器中获取数据块,并将获取的数据块传输至检测模块;
检测模块,用于检测所述获取模块获取的数据块中每条逻辑记录所属的数据节点;
处理模块,用于针对数据块中的任意一条逻辑记录,计算分布列的哈希值,根据计算的哈希值确定该条逻辑记录所属的数据节点,在所述检测模块检测到该条逻辑记录属于本节点后,将该条逻辑记录存储在本地,在检测到该条逻辑记录属于所述数据库系统的其它数据节点后,将该条逻辑记录转发给所述其它数据节点。
11.如权利要求10所述的装置,其特征在于,所述获取模块具体用于:
至少一次向多个加载服务器中的第一加载服务器发送数据请求消息,每次接收所述第一加载服务器分配的一个数据块;若确定所述第一加载服务器分配数据块的速率低于设定阈值,则在将最近一次获取的数据块处理完毕后,至少一次向第二加载服务器发送数据请求消息,每次接收所述第二加载服务器分配的一个数据块。
12.如权利要求11所述的装置,其特征在于,所述获取模块具体用于:
确定第一次向所述第二加载服务器发送的数据请求消息,所述确定的数据请求消息中包括已获取的数据块对应的文件偏移量信息,向所述第二加载服务器发送确定的所述数据请求消息,以使所述第二加载服务器根据接收的数据请求消息中包括的所述文件偏移量信息确定需要分配给所述第一数据节点的数据块;其中,所述第一加载服务器中存储的数据与所述第二加载服务器中存储的数据相同,且属于同一数据文件。
13.一种数据加载装置,该装置应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,其特征在于,将分布式数据库系统的数据重分布能力布置在数据库系统中的每个数据节点,该装置设置于加载服务器中,所述加载服务器用于为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该装置包括:
接收模块,用于接收并存储需要提供给数据库系统内的数据节点的数据,并将接收的数据传输至划分模块;
划分模块,用于将接收模块接收的数据划分为多个数据块,并将划分的数据块传输至分配模块;
分配模块,用于在接收到所述数据库系统内的多个数据节点根据所述主节点的指示发送的数据请求消息后,分别基于划分模块划分的数据块为所述多个数据节点中的每个数据节点分配不同的数据块,以使每个数据节点在获取数据块后,该数据节点针对获取的数据块中的任意一条逻辑记录计算分布列的哈希值,根据计算的哈希值确定该条逻辑记录所属的数据节点,并将该条逻辑记录分配到确定的所述数据节点。
14.如权利要求13所述的装置,其特征在于,所述接收模块接收并存储的数据与为所述数据库系统内的数据节点提供数据块的其它加载服务器接收并存储的数据不同;所述划分模块划分的每个数据块中的数据是行完整的。
15.如权利要求13所述的装置,其特征在于,所述接收模块接收并存储的数据与为所述数据库系统内的数据节点提供数据块的其它加载服务器接收并存储的数据相同,且属于同一个数据文件;
所述分配模块具体用于:针对一个数据节点,若该数据节点在向多个加载服务器中的第一加载服务器发送数据请求消息之前,已从其它加载服务器获取了数据块,则根据该数据节点发送的文件偏移量信息,确定需要发送给该数据节点的数据块。
16.如权利要求15所述的装置,其特征在于,所述划分模块具体用于:根据所述数据库系统内的数据节点的个数M,将存储的数据划分为M个数据组,并将每个数据组中的数据划分为多个数据块;其中,M为正整数,每个数据组对应一个数据节点;
所述分配模块具体用于:针对一个数据节点,从对应该数据节点的数据组中选择一个数据块分配给该数据节点。
17.如权利要求16所述的装置,其特征在于,所述划分模块还用于:
所述第一加载服务器根据不同数据节点的数据处理速率的不同,调整划分的每个数据组的数据量。
18.一种数据加载装置,该装置应用于数据库系统中数据的加载,该数据库系统包括多个数据节点和管理各数据节点的主节点,其特征在于,将分布式数据库系统的数据重分布能力布置在数据库系统中的每个数据节点,所述装置设置于所述主节点中;所述数据库系统外设置有加载服务器为所述数据库系统提供数据块,所述数据块为包括多条逻辑记录的数据传输单元,其中每条逻辑记录对应数据库中存储的一行数据,该装置包括:
接收模块,用于接收数据加载指令,并将接收的所述数据加载指令传输至发送模块;
发送模块,用于将所述数据加载指令发送给所属的数据库系统内的每个数据节点,指示所述每个数据节点从加载服务器中获取数据块,以使所述每个数据节点在获取数据块后,针对获取的数据块中的任意一条逻辑记录计算分布列的哈希值,根据计算的哈希值确定该条逻辑记录所属的数据节点,并将该条逻辑记录分配到确定的所述数据节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310516735.5A CN103544285B (zh) | 2013-10-28 | 2013-10-28 | 一种数据加载方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310516735.5A CN103544285B (zh) | 2013-10-28 | 2013-10-28 | 一种数据加载方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103544285A CN103544285A (zh) | 2014-01-29 |
CN103544285B true CN103544285B (zh) | 2017-09-26 |
Family
ID=49967737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310516735.5A Active CN103544285B (zh) | 2013-10-28 | 2013-10-28 | 一种数据加载方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103544285B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104202442A (zh) * | 2014-09-12 | 2014-12-10 | 北京奇虎科技有限公司 | 加载数据的方法、设备及系统 |
CN104408047A (zh) * | 2014-10-28 | 2015-03-11 | 浪潮电子信息产业股份有限公司 | 一种基于nfs文件服务器的文本文件多机并行上传到hdfs方法 |
CN104794155B (zh) * | 2015-03-12 | 2019-06-18 | 北京奇虎科技有限公司 | 数据加载的方法、装置及系统 |
CN105426451A (zh) * | 2015-11-11 | 2016-03-23 | 深圳市华讯方舟科技有限公司 | 一种基于键值对的数据处理方法及系统 |
CN105447110A (zh) * | 2015-11-16 | 2016-03-30 | 天津南大通用数据技术股份有限公司 | 一种数据库集群批量快速加载数据的方法及加载系统 |
CN106372163B (zh) * | 2016-08-31 | 2020-12-04 | 天津南大通用数据技术股份有限公司 | 一种适用于分布式数据库的数据分发方法及装置 |
CN106354831A (zh) * | 2016-08-31 | 2017-01-25 | 天津南大通用数据技术股份有限公司 | 一种切分数据块的加载方法及装置 |
CN106383846A (zh) * | 2016-08-31 | 2017-02-08 | 天津南大通用数据技术股份有限公司 | 一种分布式数据库系统数据的加载方法及装置 |
CN106790489B (zh) * | 2016-12-14 | 2020-12-22 | 成都华为技术有限公司 | 并行数据加载方法和系统 |
CN109088907B (zh) * | 2017-06-14 | 2021-10-01 | 北京京东尚科信息技术有限公司 | 文件传递方法及其设备 |
CN107562533B (zh) * | 2017-07-28 | 2021-08-06 | 创新先进技术有限公司 | 一种数据加载处理方法及装置 |
CN108549657A (zh) * | 2018-03-12 | 2018-09-18 | 丹露成都网络技术有限公司 | 一种常用数据缓存系统 |
CN111695018B (zh) * | 2019-03-13 | 2023-05-30 | 阿里云计算有限公司 | 数据处理方法及装置、分布式网络系统、计算机设备 |
CN111400351A (zh) * | 2020-03-18 | 2020-07-10 | 威讯柏睿数据科技(北京)有限公司 | 一种基于分布式并行架构对流数据进行查询的方法和设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7418441B2 (en) * | 2001-02-28 | 2008-08-26 | International Business Machines Corporation | Data loading from a remote data source record by record |
CN100543743C (zh) * | 2006-07-04 | 2009-09-23 | 华为技术有限公司 | 多机文件存储系统和方法 |
CN101888405B (zh) * | 2010-06-07 | 2013-03-06 | 北京高森明晨信息科技有限公司 | 一种云计算的文件系统和数据处理方法 |
CN102281312B (zh) * | 2010-06-12 | 2015-05-20 | 深圳市腾讯计算机系统有限公司 | 一种数据加载方法、系统和数据处理方法、系统 |
CN102938001B (zh) * | 2012-12-10 | 2016-02-10 | 曙光信息产业(北京)有限公司 | 数据加载装置和数据加载方法 |
CN103064914A (zh) * | 2012-12-20 | 2013-04-24 | 曙光信息产业(北京)有限公司 | 数据处理系统以及数据处理方法 |
CN103116661B (zh) * | 2013-03-20 | 2016-01-27 | 广东宜通世纪科技股份有限公司 | 一种数据库的数据处理方法 |
-
2013
- 2013-10-28 CN CN201310516735.5A patent/CN103544285B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103544285A (zh) | 2014-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103544285B (zh) | 一种数据加载方法及装置 | |
CN106126407B (zh) | 一种针对分布式存储系统的性能监控调优系统及方法 | |
JP2020038623A (ja) | データを記憶するための方法、装置及びシステム | |
US7734786B2 (en) | Method and system for identifying available resources in a peer-to-peer network | |
KR101544480B1 (ko) | 복수 개의 프락시 서버를 포함하는 분산 저장 시스템 및 그 오브젝트 관리 방법 및 컴퓨터에 의하여 독출가능한 저장 매체 | |
JP6011421B2 (ja) | ストレージシステム、情報処理装置の制御プログラム及びストレージシステムの制御方法 | |
US20230109969A1 (en) | Data processing method and apparatus based on node internal memory, device and medium | |
TW202002587A (zh) | 基於區塊鏈的資料處理方法和裝置 | |
CN103914399B (zh) | 一种并行计算系统中的磁盘缓存方法及装置 | |
CN104407879B (zh) | 一种电网时序大数据并行加载方法 | |
CN106844510A (zh) | 一种分布式数据库集群的数据迁移方法和装置 | |
CN110347651A (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
JP2015534769A (ja) | データネットワークにおける負荷分散 | |
CN107391280A (zh) | 一种小文件的接收和存储方法及装置 | |
WO2011120791A1 (en) | Transmission of map-reduce data based on a storage network or a storage network file system | |
CN107343021A (zh) | 国网云中应用的一种基于大数据的日志管理系统 | |
CN106570113B (zh) | 一种海量矢量切片数据云存储方法及系统 | |
CN107888666A (zh) | 一种跨地域数据存储系统以及数据同步方法和装置 | |
CN108540510B (zh) | 一种云主机创建方法、装置及云服务系统 | |
CN107368583A (zh) | 一种多集群信息查询的方法及系统 | |
CN103595799A (zh) | 一种实现分布式共享数据库的方法 | |
CN109783564A (zh) | 支持多节点的分布式缓存方法及设备 | |
CN113792885A (zh) | 一种深度学习训练的执行方法及相关装置 | |
CN112114984A (zh) | 图数据处理方法及装置 | |
CN109302494A (zh) | 一种网络存储系统的配置方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |