CN104809129A - 一种分布式数据存储方法、装置和系统 - Google Patents
一种分布式数据存储方法、装置和系统 Download PDFInfo
- Publication number
- CN104809129A CN104809129A CN201410038922.1A CN201410038922A CN104809129A CN 104809129 A CN104809129 A CN 104809129A CN 201410038922 A CN201410038922 A CN 201410038922A CN 104809129 A CN104809129 A CN 104809129A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- inquiry
- section point
- distributed
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本实施例提供的分布式数据存储方法、装置和系统,第一节点接收到携带查询标识的查询请求后,如果该查询标识对应的第一数据存储在本地而第二数据没有存储在本地,则第一节点根据查询标识按照预设计算规则重新计算用于存储第一数据的第二节点,但无需将第一数据发送至第二节点,而是将第一数据的存储位置信息发送给第二节点,第二节点在接收到查询第一数据的请求后再根据存储位置信息从第一节点获取第一数据,如果后续未接收到查询第一数据的请求,则不触发第二节点从第一节点获取第一数据的操作。实现节省网络数据传输资源和存储空间。
Description
技术领域
本发明实施例涉及信息技术,尤其涉及一种分布式数据存储方法、装置和系统。
背景技术
大规模并行处理系统(Massively Parallel Processing,简称MPP)是一种常见的分布式数据库架构。MPP架构把数据分布到多个数据库节点上,由多个节点并行处理,从而提高处理速度。具体方法是,在建立数据表时,每个数据表选定一列作为分区列,使用统一的分区函数,将各个数据表中各行中包括的数据值分布式存储到各数据库节点上。
现有技术中,某节点接收到查询请求,若查询请求所查询的两张以上数据表中的数据具有相关联的列,并且分布式存储在两个以上节点上,则触发二次数据的分布式存储,以使具有该关联列的两张以上数据表中的数据存储至同一节点上。
然而,这种二次分布式存储的方法耗费网络数据传输资源,并且浪费存储空间。
发明内容
本发明实施例提供一种分布式数据存储方法、装置和系统,以克服现有技术的二次分布式存储存在的耗费网络数据资源并且浪费存储空间的问题。
本发明实施例的第一方面提供一种分布式数据存储方法,包括:
分布式系统包括服务装置和多个节点,所述多个节点用于分布式存储数据,所述服务装置用于对所述节点存储的数据进行访问;所述方法包括:
第一节点接收所述服务装置发送的第一查询请求,所述第一查询请求中携带查询标识,所述查询标识对应第一数据和第二数据;
若所述第一节点存储有所述第一数据且未存储所述第二数据,则所述第一节点根据所述查询标识按照预设计算规则获得用于存储所述第一数据的第二节点;
所述第一节点将所述第一数据的存储位置信息发送至所述第二节点。
结合第一方面,在第一方面的第一种可能的实现方式中,所述第一节点将所述第一数据的存储位置信息发送至所述第二节点之后,还包括:
所述第一节点接收所述第二节点发送的第二查询请求,所述第二查询请求由所述第二节点接收到所述服务装置查询所述第一数据的请求之后发送;
所述第一节点将所述第一数据发送给所述服务装置。
结合第一方面,在第一方面的第二种可能的实现方式中,所述第一节点将所述第一数据的存储位置信息发送至所述第二节点之后,还包括:
所述第一节点接收所述第二节点发送的第二查询请求,所述第二查询请求由所述第二节点接收到所述服务装置查询所述第一数据的请求之后发送;
所述第一节点将所述第一数据发送给所述第二节点,以使所述第二节点将所述第一数据返回给所述服务装置。
结合第一方面,第一方面的第一种至第二种任一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述第一节点将所述第一数据的存储位置信息发送至所述第二节点之后,还包括:
所述第一节点接收所述服务装置发送的添加数据请求,所述添加数据请求用于在所述第一数据中添加第三数据;
所述第一节点在所述第一数据中添加所述第三数据;
所述第一节点根据所述查询标识,确定用于存储所述第三数据的第三节点;
所述第一节点将所述第三数据的存储信息发送至所述第三节点。
结合第一方面,第一方面的第一种至第二种任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述第一节点将所述第一数据的存储位置信息发送至所述第二节点之后,还包括:
所述第一节点接收所述服务装置发送的删除数据请求,所述删除请求用于在所述第一数据中删除第四数据;
所述第一节点在所述第一数据中删除所述第四数据;
所述第一节点根据所述查询标识,确定存储所述第四数据的至少一个第四节点;
所述第一节点将所述第四数据的存储位置信息发送至对应的第四节点。
结合第一方面,第一方面的第一种至第四种任一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述第一节点根据所述查询标识来计算用于存储所述第一数据的第二节点,具体为:
所述第一节点根据所述查询标识进行哈希计算,确定用于存储所述第一数据的所述第二节点。
本发明实施例的第二方面提供一种分布式数据库节点,包括:
分布式系统包括服务装置和多个所述分布式数据库节点,所述多个分布式数据库节点用于分布式存储数据,所述服务装置用于对所述分布式数据库节点存储的数据进行访问;所述分布式数据库节点包括:
接收模块,用于接收所述服务装置发送的第一查询请求,所述第一查询请求中携带查询标识,所述查询标识对应第一数据和第二数据;
存储模块,用于存储数据;
处理模块,用于若所述存储模块存储有所述第一数据且未存储所述第二数据,则所述根据所述查询标识按照预设计算规则获得用于存储所述第一数据的第二节点;
发送模块,用于将所述第一数据的存储位置信息发送至所述第二节点。
结合第二方面,在第二方面的第一种可能的实现方式中,所述接收模块还用于:接收所述第二节点发送的第二查询请求,所述第二查询请求由所述第二节点接收到所述服务装置查询所述第一数据的请求之后发送;
所述发送模块还用于:将所述第一数据发送给所述服务装置。
结合第二方面,在第二方面的第二种可能的实现方式中,所述接收模块还用于:接收所述第二节点发送的第二查询请求,所述第二查询请求由所述第二节点接收到所述服务装置查询所述第一数据的请求之后发送;
所述发送模块还用于:将所述第一数据发送给所述第二节点,以使所述第二节点将所述第一数据返回给所述服务装置。
结合第二方面,第二方面的第一种至第二种任一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述接收模块还用于:接收所述服务装置发送的添加数据请求,所述添加数据请求用于在所述第一数据中添加第三数据;
所述处理模块还用于:在所述存储模块存储的所述第一数据中添加所述第三数据;
所述处理模块还用于:根据所述查询标识,确定用于存储所述第三数据的第三节点;
所述发送模块还用于:将所述第三数据的存储信息发送至所述第三节点。
结合第二方面,第二方面的第一种至第二种任一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述接收模块还用于:接收所述服务装置发送的删除数据请求,所述删除请求用于在所述第一数据中删除第四数据;
所述处理模块还用于:在所述存储模块存储的所述第一数据中删除所述第四数据;
所述处理模块还用于:根据所述查询标识,确定存储所述第四数据的至少一个第四节点;
所述发送模块还用于:将所述第四数据的存储位置信息发送至对应的第四节点。
结合第二方面,第二方面的第一种至第四种任一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述处理模块具体用于:根据所述查询标识进行哈希计算,确定用于存储所述第一数据的所述第二节点。
本发明实施例的第三方面提供一种分布式数据库节点,包括:
分布式系统包括服务装置和多个所述分布式数据库节点,所述多个分布式数据库节点用于分布式存储数据,所述服务装置用于对所述分布式数据库节点存储的数据进行访问;所述分布式数据库节点包括:第一存储器,用于存储指令;第二存储器,用于存储数据;处理器,用于运行所述第一存储器中存储的指令,以执行第一方面所述的方法。
本发明实施例的第四方面提供一种分布式数据存储系统,包括:
包括服务装置和多个如第二方面所述的分布式数据库节点,所述多个分布式数据库节点用于分布式存储数据,所述服务装置用于对所述分布式数据库节点存储的数据进行访问。
本发明实施例的第五方面提供一种分布式数据存储系统,包括服务装置和多个如第四方面所述的分布式数据库节点,所述多个分布式数据库节点用于分布式存储数据,所述服务装置用于对所述分布式数据库节点存储的数据进行访问。
本发明实施例提供的一种分布式数据存储方法、装置和系统,通过第一节点接收到携带查询标识的查询请求后,如果该查询标识对应的第一数据存储在本地而第二数据没有存储在本地,则第一节点根据查询标识按照预设计算规则重新计算用于存储第一数据的第二节点,但无需将第一数据发送至第二节点,而是将第一数据的存储位置信息发送给第二节点,第二节点在接收到查询第一数据的请求后再根据存储位置信息从第一节点获取第一数据,如果后续未接收到查询第一数据的请求,则不触发第二节点从第一节点获取第一数据的操作。实现节省网络数据传输资源和存储空间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1本发明提供的分布式数据存储方法一个实施例的流程图;
图2A本发明提供的分布式数据存储方法又一个实施例的流程图;
图2B为本发明提供的分布式数据存储方法第三个实施例的流程图;
图2C为本发明提供的分布式数据存储方法第四个实施例的流程图;
图2D为本发明提供的分布式数据存储方法第五个实施例的流程图;
图3为本发明提供的分布式数据库节点一个实施例的结构示意图;
图4为本发明提供的分布式数据库节点又一个实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
分布式数据库系统通常包括至少一个服务装置和多个分布式数据库节点。其中,这些分布式数据库节点用于分布式存储数据,存储的数据通常可以以数据表的形式存在;服务装置用于对节点存储的数据进行访问。
本发明实施例中,分布式系统在初始存储数据时,会按照一定的预设计算规则,通常可以是通过哈希计算对数据进行初始分布式存储。当用户通过客户端发出的业务查询请求时,服务装置接收该请求并生成相应的数据查询请求,发送给系统中的所有节点,各个节点分析本地是否有该数据查询请求所指向的数据,如果有,则执行相应的查询操作,如果没有,则不进行后续操作。
图1本发明提供的分布式数据存储方法一个实施例的流程图,如图1所示,该方法包括:
S101、第一节点接收服务装置发送的第一查询请求,第一查询请求中携带查询标识,查询标识对应第一数据和第二数据;
S102、若第一节点存储有第一数据且未存储第二数据,则第一节点根据查询标识按照预设计算规则获得用于存储第一数据的第二节点;
S103、第一节点将第一数据的存储位置信息发送至第二节点。
第一节点可以为分布式系统中的任意一个分布式数据库节点,分布式系统在初始分布式存储数据时,通常根据某种标识按照预设计算规则进行计算,来将数据分布式存储在系统中的各节点上,上述涉及的标识可以是例如:学号,成绩,姓名等。预设计算规则通常可以是哈希算法。
例如:分布式系统在初始分布式存储数据时,根据“学号”进行哈希计算,将第一数据存储在第一节点,将第二数据存储在系统中的其他节点,例如:第三节点上。本发明实施例中,假设第一节点接收到的第一查询请求中的查询标识为“某某姓名”,“某某姓名”对应的第一数据为该姓名对应的“学号”,第二数据为该姓名对应的“成绩”,而该姓名对应的“学号”存储在第一节点上,但该姓名对应的“成绩”存储在其他节点,例如:第三节点上。则第一节点根据“姓名”进行哈希计算,重新确定用于存储第一数据的节点为第二节点。而第一节点确定第二节点之后,仅需要将第一数据的存储位置信息发送给第二节点,该存储位置信息包括:第一数据目前所在的节点,第一数据在所属的数据表中的行信息等。
需要说明的是,本发明实施例中,对于系统中的任意一个节点,接收到第一查询请求后,如果第一数据和第二数据均存储在该节点本地,则该节点无需再根据查询标识按预设规则计算用于存储第一数据的节点。如果第一数据和第二数据均不存储在该节点本地,则该节点不对该查询请求进行任何响应。而上述重新计算查询标识对应的数据的存储节点的操作,仅是在第一数据和第二数据之一存储在该节点本地时进行。
可以理解的是,对应仅存储“成绩”的节点,例如:第三节点,接收到第一查询请求后,执行的操作与第一节点相类似,该第三节点确定第二数据存储在第三节点上而第一数据并没有存储在第三节点上,则第三节点根据“姓名”进行哈希计算,重新确定用于存储第二数据的节点。需要说明的是,只要进行哈希计算所根据的标识相同,则计算得到的存储节点相同,即,第三节点重新确定用于存储第二数据的节点也为第二节点。也就是说,根据“姓名”进行哈希计算之后,“某某姓名”对应的“成绩”和“学号”都应重新存储到第二节点上。而本发明实施例中,对于第一节点,仅需要将“某某姓名”对应的“学号”所在的存储位置信息发送给第二节点,并不需要将“某某姓名”对应的“学号”这一数据发送到第二节点上;同样,对于第三节点,仅需要将“某某姓名”对应的“成绩”所在的存储位置信息发送给第二节点,并不需要将“某某姓名”对应的“成绩”这一数据发送到第二节点上。
而对于第二节点而言,在接收到第一节点发送的第一数据的存储位置信息之后,如果第二节点接收到服务装置查询第一数据的请求,由于第一数据实际上并不存储在第二节点上,而是存储在第一节点上,则第二节点可以向第一节点发送第二查询请求,作为一种可行的实施方式,第一节点可以将第一数据直接发送给服务装置。作为另一种可行的实施方式,第一节点也可以将第一数据发送给第二节点,以使第二节点将第一数据返回给服务装置。
作为第一节点而言,也可以重新进行哈希计算的数据进行记录,例如:上述的第一数据,也可以对该数据对应的第二节点进行记录。如果第一节点在次接收到携带相同查询标识的查询请求,则第一节点不在执行重新进行哈希计算的操作。
本发明实施例中,如果第一数据需要进行更新,例如:需要在第一数据中添加某数据或者删除某数据,由于第一数据实际上存储在第一节点上,因此,更新数据的操作仍然由第一节点来进行,第一节点对第一数据中添加或删除数据后,需要重新根据查询标识计算添加或删除的数据对应的节点,例如:第三节点,并将添加或删除的数据的存储位置信息发送给该第三节点。
在第一数据中添加第三数据的实施场景下:第一节点接收服务装置发送的添加数据请求,添加数据请求用于在第一数据中添加第三数据;则第一节点在第一数据中添加第三数据;第一节点根据查询标识,确定用于存储第三数据的第三节点,并将第三数据的存储信息发送至第三节点。
在第一数据中删除第四数据的实施场景下:第一节点接收服务装置发送的删除数据请求,删除请求用于在第一数据中删除第四数据;第一节点在第一数据中删除第四数据;第一节点根据查询标识,确定存储第四数据的至少一个第四节点;并将第四数据的存储位置信息发送至对应的第四节点。
本实施例提供的分布式数据存储方法,第一节点接收到携带查询标识的查询请求后,如果该查询标识对应的第一数据存储在本地而第二数据没有存储在本地,则第一节点根据查询标识按照预设计算规则重新计算用于存储第一数据的第二节点,但无需将第一数据发送至第二节点,而是将第一数据的存储位置信息发送给第二节点,第二节点在接收到查询第一数据的请求后再根据存储位置信息从第一节点获取第一数据,如果后续未接收到查询第一数据的请求,则不触发第二节点从第一节点获取第一数据的操作。实现节省网络数据传输资源和存储空间。
以下以节点中存储的数据以数据表示形式存在进行详细说明。每个数据表包含一个或多个列属性和若干个行数据,每个行数据可以包括部分或全部列属性对应的数据值。例如:某一数据表中包括若干个学生的姓名和学号,另一数据表中包括若干个学生的姓名和成绩。每张数据表可以分布式存储在一个或多个节点上,每个节点可以存储一个数据表的部分行数据,分布式存储的数据表可以采用某种标识进行哈希计算来确定数据表中的存储各行数据的节点,再将行数据发送到不同的节点上存储。例如:包括若干各学生的姓名和学号的数据表,按照学号进行哈希计算,计算出学号为1-10的行数据存储在第一节点上,学号11-20的行数据存储在第二节点上,依次类推。
根据上述的例子,第一数据查询请求中的查询标识可以为数据表中的一个列属性的数据值,例如:第一数据表中包括若干个学生的姓名和学号,则其中的一个列属性为“姓名”,则该列属性的一个数据值可以为“张三”;第二数据表中包括若干个学生的姓名和成绩,则其中也具有一个列属性“姓名”,则该列属性的一个数据值可以为“张三”;则上述的第一数据可以为“张三”对应的学号,第二数据可以为“张三”对应的成绩。第一数据表和第二数据表中包括的“姓名”所指向的学生相同。“姓名”这一列数据称为第一数据表和第二数据表的关联列。
具体地,可以根据查询标识确定第一数据表中关联列上的数据值的范围,即第一数据的范围;类似的,也可以根据查询标识确定第二数据表中关联列上的数据值范围,即第二数据的范围;可以通过以下几种形式:1)查询标识可以直接包括第一数据表中关联列上的数据值的范围,通过上述范围与第一数据表中关联列上的所有数据值的范围取交集,所得的关联列上的数据值的范围即为第一查询范围;可选的,查询标识所直接包括的第一数据表中关联列上的数据值的范围可以为第一数据表中关联列上的数据的全集;
(2)所述查询标识可以包括第一数据表中非关联列的其他列的数据值的范围,通过上述范围确定第一数据表中关联列上的数据值的范围,所得的关联列上的数据值的范围即为第一查询范围;
(3)所述查询标识可以直接包括第二数据表中关联列上的数据值的范围,通过上述范围与第二数据表中关联列上的所有数据值的范围取交集,所得的关联列上的数据值的范围即为第二查询范围;可选的,所述查询标识所直接包括的第二数据表中关联列上的数据值的范围可以为第二数据表中关联列上的数据的全集;
(4)所述查询标识可以包括第二数据表中非关联列的其他列的数据值的范围,通过上述范围确定第二数据表中关联列上的数据值的范围,所得的关联列上的数据值的范围即为第二查询范围;
(5)所述查询标识可以同时包括第一数据表中非关联列的其他列的数据值的范围和第二数据表中非关联列的其他列的数据值的范围,通过上述范围分别得到的第一查询范围和第二查询范围;
(6)所述查询标识包含其他数据表的列的数据值的范围,通过其他数据表与第一数据表的关系得到的第一数据表的第一查询范围;
(7)所述查询标识包含其他数据表的列的数据值的范围,通过其他数据表与第二数据表的关系得到的第二数据表的第二查询范围。
举例来说,第一数据表可以为T1,包含列属性T1_A和T1_B,第二数据表可以为T2,包含列属性T2_B和T2_C,其中T1_B和T2_B为关联列,若第一数据查询请求需要查询T1表和T2表中所有T1_B等于T2_B的所有T2_C的数据时,所述查询标识可以为关联列上的数据值满足查询条件“T1_B=T2_B”的数据值的范围,即T1_B列上的数据值与T2_B列上的数据值的交集,相当于查询标识为第一数据表中关联列上的数据值与第二数据表中关联列上的数据值的交集,所述返回标识为T2_C。
又如,T1还可以包括列属性T1_C,若第一数据查询请求需要查询T1中T1_C的数据值属于集合X的行数据中,T1_B的数据值与T2中的T2_B相同的数据值对应的所有T2_C的数据时,所述查询标识通过确定T1_B的数据值的第一查询范围。
上述形式中(3)、(4)和(7)可以归结为第(1)、(2)和(6)的方法,相当于以第二数据表为第一数据表的情况,可以以第二数据表为第一数据表执行本发明实施例的相关步骤,此处不再赘述。
上述任一种第一查询范围与第二查询范围的交集确定的关联列上的数据值的范围对应的第一数据表和第二数据表的行数据,实际是就是所述第一数据查询请求所请求的数据对应的行数据。其中,满足所述第一查询范围的第一数据表的关联列的数据值对应的行数据与满足所述第二查询范围的第二数据表的关联列的数据值对应的行数据的存储位置的情况,可能有以下几种:
(1)第一数据表中满足第一查询范围的关联列的数据值对应的行数据存储在一个节点上;
(2)第二数据表中满足第二查询范围的关联列的数据值对应的行数据存储在一个节点上;
(3)第一数据表中满足第一查询范围的关联列的数据值对应的行数据分别存储在不同的节点上,其中,相同的数据值对应的行数据存储在同一节点上,相当于第一数据表是以关联列为原始分区的基准列的情况;
(4)第二数据表中满足第二查询范围的关联列的数据值对应的行数据分别存储在不同的节点上,其中,相同的数据值对应的行数据存储在同一节点上,相当于第二数据表是以关联列进行原始哈希计算的情况;
(5)第一数据表中满足第一查询范围的关联列的数据值对应的行数据分别存储在不同的节点上,其中,相同的数据值对应的行数据存储在不同的节点上,相当于第一数据表不是以关联列进行原始哈希计算的情况;
(6)第二数据表中满足第二查询范围的关联列的数据值对应的行数据分别存储在不同的节点上,其中,相同的数据值对应的行数据存储在不同的节点上,相当于第二数据表不是以关联列进行原始哈希计算的情况。
举例来说,若第一查询请求涉及对数据表T1和表T2中的数据进行查询时,T1包括行数据T1_oid1至T1_oid5,关联列T1_B上的数据值分别为A、B、C、D、A,初始的分布式存储为T1_oid1、T1_oid3和T1_oid5存储在节点Node1上,T1_oid2和T1_oid4存储在节点Node2上,如表1-1所示。
表1-1
T1_B | T1_1_NID | T1_1_OID | |
T1_oid1 | A | Node1 | Node1_Oid1 |
T1_oid2 | B | Node2 | Node2_Oid1 |
T1_oid3 | C | Node1 | Node1_Oid2 |
T1_oid4 | D | Node2 | Node2_Oid2 |
T1_oid5 | A | Node1 | Node1_Oid3 |
若T2包括行数据T2_oid1至T2_oid4,关联列T2_B上的数据值分别为A、B、C、D、D,初始的分布式存储为T1_oid1和T1_oid3存储在节点Node1上,T1_oid2、T1_oid4和T1_oid5存储在节点Node2上,如表1-2所示。
表1-2
T2_B | T2_1_NID | |
T2_oid1 | A | Node1 |
T2_oid2 | B | Node2 |
T2_oid3 | C | Node1 |
T2_oid4 | D | Node2 |
T2_oid5 | D | Node2 |
若所述第一数据查询请求携带的查询标识确定的第一查询范围为T1_B列上数据值为A和C,则满足所述第一查询范围的第一数据表的关联列的数据值对应的行数据都存储在一个节点上,即属于上述情况(1)。
若所述第一数据查询请求携带的查询标识确定的第二查询范围为T2_B列上数据值为A和C,则满足所述第二查询范围的第二数据表的关联列的数据值对应的行数据都存储在一个节点上,即属于上述情况(2)。
若所述第一数据查询请求携带的查询标识确定的第一查询范围为T1_B列上数据值为A和B,则满足所述第一查询范围的第一数据表的关联列的数据值对应的行数据分别存储在不同的节点上,即属于上述情况(3)。
若所述第一数据查询请求携带的查询标识确定的第二查询范围为T2_B列上数据值为A和B,则满足所述第二查询范围的第二数据表的关联列的数据值对应的行数据分别存储在不同的节点上,即属于上述情况(4)。
又如,若对数据表T1和表T2进行关联查询时,T1包括行数据T1_oid1至T1_oid5,关联列T1_B上的数据值分别为A、B、C、D、A,初始的分布式存储T1_oid1和T1_oid3存储在节点Node1上,T1_oid2、T1_oid4和T1_oid5存储在节点Node2上,如表1-3所示。
表1-3
T1_B | T1_1_NID | |
T1_oid1 | A | Node1 |
T1_oid2 | B | Node2 |
T1_oid3 | C | Node1 |
T1_oid4 | D | Node2 |
T1_oid5 | A | Node2 |
若T2包括行数据T2_oid1至T2_oid5,关联列T2_B上的数据值分别为A、B、C、D、A,初始的分布式存储T1_oid1和T1_oid3存储在节点Node1上,T1_oid2、T1_oid4和T1_oid5存储在节点Node2上,如表1-2所示,
表1-4
T2_B | T2_1_NID | |
T2_oid1 | A | Node1 |
T2_oid2 | B | Node2 |
T2_oid3 | C | Node1 |
T2_oid4 | D | Node2 |
T2_oid5 | C | Node2 |
若所述第一数据查询请求携带的查询标识确定的第一查询范围为T1_B列上数据值为A和C,则满足第一查询范围的关联列的数据值对应的行数据分别存储在不同的节点上,其中,相同的数据值对应的行数据存储在不同的节点上,即属于上述情况(5);
若所述第一数据查询请求携带的查询标识确定的第二查询范围为T1_B列上数据值为A和C,则满足第一查询范围的关联列的数据值对应的行数据分别存储在不同的节点上,其中,相同的数据值对应的行数据存储在不同的节点上,即属于上述情况(6)。
对于上述存储情况,若满足所述查询标识的第一查询范围和第二查询范围的数据都存储在一个节点上,则该存储节点完成第一查询范围与第二查询范围上数据值取交集的动作,确定所述第一数据查询请求的查询标识对应的行数据。
若满足所述查询标识的第一查询范围与第二查询范围的数据分别存储在两个节点上,则需要将第一查询范围与第二查询范围的关联列的数据值放在一个节点上,完成取交集的动作,以确定所述第一数据查询请求的查询标识对应的行数据。
若第一查询范围中部分数据值对应的行数据未与第二查询范围中所述部分数据值对应的行数据存储在相同的节点上,则需要将第一查询范围中这部分数据值与第二查询范围中所述部分数据值对应的行数据放到相同的节点上,以完成取交集的动作,以确定所述第一数据查询请求的查询标识对应的行数据。
类似地,对于第二查询范围的存储情况与第一查询范围类似地情况,可以参考第一查询范围三种存储情况进行类似处理,此处不再赘述。
其中,所述第一节点可以根据所述查询标识获取所述第一数据表的所述第一查询范围,即,满足所述查询标识的第一数据表中关联列上的数据值的范围。
例如,表1-4中T2_B列的数据值C,在T2中对应两个行数据T2_oid3和T2_oid5,分别存储在Node1和Node2上。
因此,所述第一节点可以判断出存在所述查询标识对应的第一数据表中的第一数据存储在所述第一节点上,所述查询标识对应的第二数据表中的第二数据未存储在所述第一节点上。类似地,所述第一节点可以以第二数据表为第一数据表,判断是否存在所述第二数据表的第一数据和第二数据。
可选的,第一数据可以为一个或多个行数据。
举例来说,若对表1-3和表1-4中的T1和T2进行查询时,若查询标识确定的第一数据表的关联列上的数据值的第一查询范围为A、B、C、D。若以Node1为第一节点,则Node1上本地存储的第一数据表中T1_B列上满足第一查询范围的数据值为A、C,Node1对本地存储的第一数据的关联列上的数据值进行哈希计算,确定新的分布式存储的节点,如表2-1所示,其中,数据值C对应的新的分布式存储的节点为Node2,不是原始存储节点Node1,则数据值C对应的行数据为第一数据,第一数据中数据值C对应的第二节点为Node2。
表2-1
T1_B | T1_1_NID | T1_2_NID | |
T1_oid1 | A | Node1 | Node1 |
T1_oid2 | B | Node2 | Node1 |
T1_oid3 | C | Node1 | Node2 |
T1_oid4 | D | Node2 | Node1 |
T1_oid5 | A | Node2 | Node2 |
类似地,Node2也可以为第一节点,Node2同样根据所述第一数据查询请求的所述查询标识确定第一数据表的关联列上的数据值的第一查询范围,则Node2确定本地存储的第一数据表中T1_B列上满足第一查询范围的数据值为A、B、D,其中,数据值B、D计算新的分布式存储的节点为Node1,不是原始存储节点Node2,则数据值B、D对应的行数据为第一数据,第一数据中数据值B、D对应的第二节点均为Node1。
类似地,所述第一节点可以为所述第二数据表的原始存储节点之一,执行第一数据表的原始存储节点类似地步骤,确定第二数据表中关联列上满足所述查询标识确定的关联列上的数据值的新的分布式存储节点。
下面采用几个具体的实施例,对上述实施例提供的方法进行详细说明。
假设分布式数据库系统中存储着数据表T1、T2、T3,其中,T1包括列属性T1_A和T1_B,T2包括列属性T2_A、T2_C和T2_D,T3包括列属性T3_C和T3_E,T1和T2具有相同属性的列,T2与T3具有相同属性的列,即T1_A与T2_A可以为关联列,T2_C与T3_C可以为关联列。
若T1包括行数据T1_oid1至T1_oid4,T2包括行数据T2_oid1至T2_oid8,T3包括行数据T3_oid1至T3_oid2,各个数据表分别根据T1_A、T2_A和T3_C进行原始哈希计算,确定各数据表的各行数据的存储节点如表3-1至表3-3所示。
表3-1
T1_A | T1_B | T1_1_NID | T1_1_OID | |
T1_oid1 | 1 | A | Node1 | 1 |
T1_oid2 | 2 | B | Node2 | 2 |
T1_oid3 | 3 | C | Node1 | 1 |
T1_oid4 | 4 | D | Node2 | 2 |
表3-2
T2_A | T2_C | T2_D | T2_1_NID | T2_1_OID | |
T2_oid3 | 2 | C | X | Node2 | 1 |
T2_oid4 | 2 | D | X | Node2 | 2 |
T2_oid5 | 3 | E | X | Node1 | 3 |
T2_oid6 | 3 | F | X | Node1 | 4 |
表3-3
T3_C | T3_E | T3_1_NID | T3_1_OID | |
T3_oid3 | F | ff | Node2 | 1 |
T3_oid4 | G | gg | Node2 | 2 |
其中,T1_1_NID、T2_1_NID、T3_1_NID分别为T1、T2、T3经过原始哈希计算后的存储节点,T1_1_OID、T2_1_OID、T3_1_OID分别为T1、T2、T3经过原始哈希计算后的各存储节点上的行号。
图2A为本发明提供的分布式数据存储方法又一个实施例的流程图。
S201、用户通过客户端向服务装置发送数据查询请求。
S202、所述服务装置生成所述数据查询请求对应的第一数据查询请求。
其中,服务装置生成第一数据查询请求,例如:
Select T3_C,T3_E
from T2,T3
Where T2_C=T3_C
S203-1、所述服务装置向Node1发送所述第一数据查询请求,携带所述查询标识。
S203-2、所述服务装置向Node2发送所述第一数据查询请求,携带所述查询标识。
S204-1、Node1判断出所述查询标识对应的第一数据表中的第一数据存储在Node1上,所述查询标识对应的第二数据表中的第二数据未存储在Node2上。
其中,如表3-4所示,Node1判断本地存储的第一数据表T2中第一数据表和第二数据表的关联列上的数据值进行哈希计算重新确定的分布式存储节点不是原始的存储节点,标识这部分数据对应的行数据为第一数据,则Node1本地存储的第一数据表T2中T2_C列上数据值“E”和“F”对应的行数据为Node1上所述第一数据查询请求的查询标识对应的第一数据。表3-4中T2_New_NID为新的分布式存储节点,可选的,Node1可以直接记录所述第一数据表中进行原始哈希计算的列属性,通过该列属性是否是关联列来判断所述第一数据表是否需要计算新的分布式存储的节点。
表3-4
T2_C | T2_1_NID | T2_1_OID | T2_New_NID |
E | Node1 | 3 | Node2 |
F | Node1 | 4 | Node2 |
S204-2、Node2执行与S204-1中Node1类似地步骤。
其中,如表3-5所示,Node2上第一数据表T2中T2_C列上数据值“C”和“D”对应的行数据为Node2上所述第一数据查询请求的查询标识对应的第一数据。
表3-5
T2_C | T2_1_NID | T2_1_OID | T2_New_NID |
C | Node2 | 1 | Node1 |
D | Node2 | 2 | Node1 |
S205-1、Node1确定新的分布式存储的节点为Node2。
其中,重新确定的新的分布式节点如表3-4。
S205-2、Node2执行与S205-1中Node1类似地步骤。
S206-1、Node1向Node2发送所述第一数据的原始存储位置信息。
其中,Node1向Node2发送的第一数据的原始存储位置信息如表3-6所示。
表3-6
T2_C | T2_1_NID | T2_1_OID |
E | Node1 | 3 |
F | Node1 | 4 |
S206-2、Node2执行与S206-1中Node1类似地步骤。
其中,Node2向Node1发送的第一行据的原始存储位置信息如表3-7所示。
表3-7
T2_C | T2_1_NID | T2_1_OID |
C | Node2 | 1 |
D | Node2 | 2 |
S207-1、Node2根据第一数据的原始存储位置信息中关联列上的数据值确定Node2节点上存储的第一数据表与第二数据表的关联列上的数据值的交集。
其中,Node2接收的第一数据的原始存储位置信息如表3-6所示,Node2存储的与第一数据对应的第二数据如表3-8所示。
表3-8
T3_C | T3_1_NID | T3_1_OID |
F | Node2 | 1 |
G | Node2 | 2 |
则Node2确定Node2上存储的满足所述第一数据查询请求的T2_C与T3_C上数据值的交集为“F”。
可选的,若Node2本地还存储其他满足所述第一数据查询请求的第一数据表的数据,可以将第一数据的原始存储位置信息和Node2本地存储的第一数据表中的数据与Node2上存储的第二数据表的关联列上的数据取交集。
S207-2、Node1执行与S207-1中Node2类似地步骤。
其中,Node1得到的交集为空。
S208-1、Node2判断所述第一数据查询请求只需要返回与第二数据表有关的数据。
其中,所述第一数据查询请求要求返回的标识为T3_C和T3_E,均为第二数据表的列属性。
S208-2、Node1执行与S208-1中Node2类似地步骤。
S209-1、Node2查询第一数据表与第二数据表的关联列上的数据值的交集对应的第二数据表其他列上的数据。
其中,Node2确定的所述数据值的交集“F”对应的第二数据表的T3_C和T3_E的数据值如表3-9所示。
表3-9
T3_C | T3_E |
F | ff |
S209-2、Node1执行与S209-1中Node2类似地步骤。
S210-1、Node2向所述服务装置发送Node2上满足所述第一数据查询请求要求的数据。
其中,返回的数据如表3-9所示。
S210-2、Node1执行与S210-1中Node2类似地步骤。
S211、所述服务装置向客户端发送所述第一数据查询请求的汇总结果。
可选的,若S202中的第一数据查询请求的查询标识确定的第一数据表的第一查询范围只包括所述第一数据的关联列上的数据值,则所述S204-2、S205-2、S205-2、S206-2、S207-2、S208-2、S209-2、S210-2可以不需执行。例如:
Select T3_C,T3_E
from T2,T3
Where T2_C=T3_C AND T2_A<2
图2B为本发明提供的分布式数据存储方法第三个实施例的流程图。
可选的,若S202中的第一数据查询请求为:
Select T2_B,T2_C
from T2,T3
Where T2_C=T3_C
则S207-1之后,包括:
S218-1、Node2判断所述第一数据查询请求只需要返回与第一数据表有关的数据。
S218-2、Node1执行与S218-1中Node2类似地步骤。
S219-1、Node2查询第一数据表与第二数据表的关联列上的数据值的交集对应的第一数据的原始存储位置信息,确定所述交集对应的第一数据的原始存储节点为Node1。
S219-2、Node1执行与S219-1中Node2类似地步骤。
S220-1、Node2向所述Node1发送Node2上满足所述第一数据查询请求要求的第一数据表与第二数据表的关联列上的数据值的交集对应的行数据的原始存储位置信息和所述第一数据查询请求的返回标识对应的列。
S220-2、Node1执行与S220-1中Node2类似地步骤。
S221-1、Node1查询第一数据表与第二数据表的关联列上的数据值的交集对应的第一数据表其他列上的数据。
S221-2、Node2执行与S221-1中Node1类似地步骤。
S222-1、Node1向所述服务装置发送Node1上满足所述第一数据查询请求要求的数据。
S222-2、Node2执行与S222-1中Node1类似地步骤。
S223、所述服务装置向用户发送所述第一数据查询请求的汇总结果。
可选的,若S202中的第一数据查询请求的查询标识确定的第一数据表的第一查询范围只包括所述第一数据的关联列上的数据值,则所述S204-2、S205-2、S205-2、S206-2、S207-2、S218-2、S219-2、S221-2、S222-2可以不需执行。例如:
Select T2_B,T2_C
from T2,T3
Where T2_C=T3_C AND T2_A<2
图2C为本发明提供的分布式数据存储方法第四个实施例的流程图。
可选的,若S202中的第一数据查询请求为:
Select T2_C,T3_E
from T2,T3
Where T2_C=T3_C
则S207-1之后,还包括:
S228-1、Node2判断所述第一数据查询请求需要同时返回与第二数据表和第一数据表有关的数据。
S228-2、Node1执行与S228-1中Node2类似地步骤。
S229-1、Node2查询第一数据表与第二数据表的关联列上的数据值的交集对应的第一数据的原始存储位置信息,确定所述交集对应的第一数据的原始存储节点为Node1。
S229-2、Node1执行与S229-1中Node2类似地步骤。
S230-1、Node2向所述Node1发送Node2上满足所述第一数据查询请求要求的第一数据表与第二数据表的关联列上的数据值的交集对应的行数据的原始存储位置信息和所述第一数据查询请求的返回标识对应的其他列。
S230-2、Node1执行与S230-1中Node2类似地步骤。
S231-1、Node1查询第一数据表与第二数据表的关联列上的数据值的交集对应的第一数据表其他列上的数据。
S231-2、Node2执行与S231-1中Node1类似地步骤。
S232-1、Node1向所述Node2发送Node1上满足所述第一数据查询请求要求的第一数据表与第二数据表的关联列上的数据值的交集对应的第一数据表其他列上的数据。
S232-2、Node2执行与S232-1中Node1类似地步骤。
S233-1、Node2向所述服务装置发送Node2上满足所述第一数据查询请求要求的第一数据表与第二数据表的关联列上的数据值的交集对应的第一数据表其他列上的数据和第二数据表其他列上的数据。
S233-2、Node1执行与S233-1中Node2类似地步骤。
S234、所述服务装置向用户发送所述第一数据查询请求的汇总结果。
可选的,若S202中的第一数据查询请求的查询标识确定的第一数据表的第一查询范围只包括所述第一数据的关联列上的数据值,则所述S204-2、S205-2、S205-2、S206-2、S207-2、S228-2、S229-2、S231-2、S232-2、S233-2可以不需执行。例如:
Select T2_B,T2_C
from T2,T3
Where T2_C=T3_C AND T2_A<2
图2D为本发明提供的分布式数据存储方法第五个实施例的流程图。
可选的,若S202中的第一数据查询请求为:
Select T1_A,T2_B
from T1,T2,T3
Where T2_C=T3_C AND T1_A=T2_A
由于T1与T2使用的原始的分区列为关联列,即关联列上相同数据值对应的行数据都存储在相同的节点上,因此,分布式数据库节点可以先获取T2_C列与T3_C列上数据值的交集,再获取所述交集在T2对应的行数据中T2_A列上的数据值中与T1_A列上的数据值的交集,最后向所述服务装置发送。
则S220-1之后,还包括:
S241-1、Node1根据由步骤S220获得的所述数据值的交集查询第二数据表,获得满足所述第一数据查询请求的第二数据表中对应的行数据上的数据值;
S241-2、Node2执行与S241-1中Node1类似地步骤。
S242-1、Node1根据由S241-1获得的所述第二数据表中对应的行数据上的数据值和由S220-1获得的所述第一数据查询请求的返回标识对应的列,查询与第二数据表具有相同的原始哈希计算的列属性的第三数据表,获得第三数据表上满足所述第一数据查询请求的返回标识对应的列的数据值。
S242-2、Node2执行与S242-1中Node1类似地步骤。
S243-1、Node1向所述服务装置发送Node1上满足所述第一数据查询请求要求的第一数据表与第二数据表的关联列上的数据值的交集对应的与第一数据表有关的其他列上的数据。
S243-2、Node2执行与S243-1中Node1类似地步骤。S244、所述服务装置向用户发送所述第一数据查询请求的汇总结果。
可选的,在S206-1或S206-2之后,若用户发起关于第一数据表和第二数据表的关联查询请求,则分布式数据库节点无需再次执行发送第一数据的原始存储位置信息的步骤,只需要根据第一次执行S206-1或S206-2时记录的第一数据的原始存储位置信息执行后续关联查询的步骤。
可选的,若T3中还包括列属性T3_F,且所述T3以T3_F为原始分区列,即所述第二数据表的原始分区列不是所述第一数据表和第二数据表的关联列时,如表3-6所示。
表3-6
T3_C | T3_F | T3_1_NID | T3_1_OID | |
T3_oid1 | A | 1 | Node1 | 1 |
T3_oid2 | C | 2 | Node2 | 1 |
T3_oid3 | F | 3 | Node1 | 2 |
T3_oid4 | G | 4 | Node2 | 2 |
则在S203-1之后,还包括:
S254-1、Node1和Node2分别将所述第一数据查询请求要查询的行数据的原始存储位置信息发送到重新确定的分布式存储的节点上。
其中,Node1重新确定的分布式存储的节点如表3-7所示,T3_NEW_NID表示T3中关联列上的数据值重新确定的分布式存储的节点。
表3-7
T3_C | T3_F | T3_1_NID | T3_1_OID | T3_NEW_NID |
A | 1 | Node1 | 1 | Node1 |
F | 3 | Node1 | 2 | Node2 |
S254-2、Node2执行与步骤S254-1中类似地步骤。
其中,Node2重新确定的分布式存储的节点如表3-8所示。
表3-8
T3_C | T3_F | T3_1_NID | T3_1_OID | T3_NEW_NID |
C | 2 | Node2 | Node1 | |
G | 4 | Node2 | 1 | Node2 |
后续处理可参考前面实施方式,此处不再赘述。
可选的,若第一数据表或第二数据表未按照分布式存储,则在S203-1之后,包括:
S264、所述保存未按照分布式存储的第一数据表或第二数据表的节点对第一数据表或第二数据表选择所述关联列为分区列进行原始分区后,再执行本发明相关步骤。
后续处理可参考前面实施方式,此处不再赘述。
图3为本发明提供的分布式数据库节点一个实施例的结构示意图,如图3所示,分布式系统包括服务装置和多个分布式数据库节点,多个分布式数据库节点用于分布式存储数据,服务装置用于对分布式数据库节点存储的数据进行访问;分布式数据库节点包括:
接收模块11,用于接收服务装置发送的第一查询请求,第一查询请求中携带查询标识,查询标识对应第一数据和第二数据;
存储模块12,用于存储数据;
处理模块13,用于若存储模块存储有第一数据且未存储第二数据,则根据查询标识按照预设计算规则获得用于存储第一数据的第二节点;
发送模块14,用于将第一数据的存储位置信息发送至第二节点。
可选的,接收模块11还可以用于:接收第二节点发送的第二查询请求,第二查询请求由第二节点接收到服务装置查询第一数据的请求之后发送;
发送模块14还可以用于:将第一数据发送给服务装置。
可选的,接收模块11还可以用于:接收第二节点发送的第二查询请求,第二查询请求由第二节点接收到服务装置查询第一数据的请求之后发送;
发送模块14还可以用于:将第一数据发送给第二节点,以使第二节点将第一数据返回给服务装置。
可选的,接收模块11还可以用于:接收服务装置发送的添加数据请求,添加数据请求用于在第一数据中添加第三数据;
处理模块13还可以用于:在存储模块存储的第一数据中添加第三数据;
处理模块13还可以用于:根据查询标识,确定用于存储第三数据的第三节点;
发送模块14还可以用于:将第三数据的存储信息发送至第三节点。
可选的,接收模块11还可以用于:接收服务装置发送的删除数据请求,删除请求用于在第一数据中删除第四数据;
处理模块13还可以用于:在存储模块存储的第一数据中删除第四数据;
处理模块13还可以用于:根据查询标识,确定存储第四数据的至少一个第四节点;
发送模块14还可以用于:将第四数据的存储位置信息发送至对应的第四节点。
可选的,处理模块13可以具体用于:根据查询标识进行哈希计算,确定用于存储第一数据的第二节点。
本实施例提供的分布式数据库节点,为本发明提供的分布式数据存储方法的执行设备,其执行上述方法的具体过程可参见图1和图2所示实施例的相关描述,在此不再赘述。
本实施例提供的分布式数据库节点,接收到携带查询标识的查询请求后,如果该查询标识对应的第一数据存储在本地而第二数据没有存储在本地,则第一节点根据查询标识按照预设计算规则重新计算用于存储第一数据的第二节点,但无需将第一数据发送至第二节点,而是将第一数据的存储位置信息发送给第二节点,第二节点在接收到查询第一数据的请求后再根据存储位置信息从第一节点获取第一数据,如果后续未接收到查询第一数据的请求,则不触发第二节点从第一节点获取第一数据的操作。实现节省网络数据传输资源和存储空间。
图4为本发明提供的分布式数据库节点又一个实施例的结构示意图,如图4所示,分布式系统包括服务装置和多个分布式数据库节点,多个分布式数据库节点用于分布式存储数据,服务装置用于对分布式数据库节点存储的数据进行访问;分布式数据库节点包括:第一存储器21,用于存储指令;第二存储器22,用于存储数据;处理器23,用于运行第一存储器中存储的指令,以执行如下方法:
接收服务装置发送的第一查询请求,第一查询请求中携带查询标识,查询标识对应第一数据和第二数据;
若第二存储器存储有第一数据且未存储第二数据,则第一节点根据查询标识按照预设计算规则获得用于存储第一数据的第二节点;
将第一数据的存储位置信息发送至第二节点。
可选的,将第一数据的存储位置信息发送至第二节点之后,还可以执行:
接收第二节点发送的第二查询请求,第二查询请求由第二节点接收到服务装置查询第一数据的请求之后发送;
将第一数据发送给服务装置。
可选的,将第一数据的存储位置信息发送至第二节点之后,还可以执行:
接收第二节点发送的第二查询请求,第二查询请求由第二节点接收到服务装置查询第一数据的请求之后发送;
将第一数据发送给第二节点,以使第二节点将第一数据返回给服务装置。
可选的,将第一数据的存储位置信息发送至第二节点之后,还可以执行:
接收服务装置发送的添加数据请求,添加数据请求用于在第一数据中添加第三数据;
在第一数据中添加第三数据;
根据查询标识,确定用于存储第三数据的第三节点;
将第三数据的存储信息发送至第三节点。
可选的,将第一数据的存储位置信息发送至第二节点之后,还可以执行:
接收服务装置发送的删除数据请求,删除请求用于在第一数据中删除第四数据;
在第一数据中删除第四数据;
根据查询标识,确定存储第四数据的至少一个第四节点;
将第四数据的存储位置信息发送至对应的第四节点。
可选的,根据查询标识来计算用于存储第一数据的第二节点可以具体为:
根据查询标识进行哈希计算,确定用于存储第一数据的第二节点。
本实施例提供的分布式数据库节点,为本发明提供的分布式数据存储方法的执行设备,其执行上述方法的具体过程可参见图1和图2所示实施例的相关描述,在此不再赘述。
本实施例提供的分布式数据库节点,接收到携带查询标识的查询请求后,如果该查询标识对应的第一数据存储在本地而第二数据没有存储在本地,则第一节点根据查询标识按照预设计算规则重新计算用于存储第一数据的第二节点,但无需将第一数据发送至第二节点,而是将第一数据的存储位置信息发送给第二节点,第二节点在接收到查询第一数据的请求后再根据存储位置信息从第一节点获取第一数据,如果后续未接收到查询第一数据的请求,则不触发第二节点从第一节点获取第一数据的操作。实现节省网络数据传输资源和存储空间。
本发明提供的分布式数据存储系统一个实施例,该系统包括服务装置和多个分布式数据库节点,多个分布式数据库节点用于分布式存储数据,服务装置用于对分布式数据库节点存储的数据进行访问。
本发明提供的分布式数据存储系统又一个实施例的结构示意图,该系统包括服务装置和多个分布式数据库节点,多个分布式数据库节点用于分布式存储数据,服务装置用于对分布式数据库节点存储的数据进行访问。
本实施例提供的分布式数据存储系统,其中的分布式数据库节点为本发明提供的分布式数据存储方法的执行设备,其执行上述方法的具体过程可参见图1和图2所示实施例的相关描述,在此不再赘述。
本实施例提供的分布式数据存储系统,系统中的任意第一节点接收到携带查询标识的查询请求后,如果该查询标识对应的第一数据存储在本地而第二数据没有存储在本地,则第一节点根据查询标识按照预设计算规则重新计算用于存储第一数据的第二节点,但无需将第一数据发送至第二节点,而是将第一数据的存储位置信息发送给第二节点,第二节点在接收到查询第一数据的请求后再根据存储位置信息从第一节点获取第一数据,如果后续未接收到查询第一数据的请求,则不触发第二节点从第一节点获取第一数据的操作。实现节省网络数据传输资源和存储空间。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (15)
1.一种分布式数据存储方法,其特征在于,分布式系统包括服务装置和多个节点,所述多个节点用于分布式存储数据,所述服务装置用于对所述节点存储的数据进行访问;所述方法包括:
第一节点接收所述服务装置发送的第一查询请求,所述第一查询请求中携带查询标识,所述查询标识对应第一数据和第二数据;
若所述第一节点存储有所述第一数据且未存储所述第二数据,则所述第一节点根据所述查询标识按照预设计算规则获得用于存储所述第一数据的第二节点;
所述第一节点将所述第一数据的存储位置信息发送至所述第二节点。
2.根据权利要求1所述的方法,其特征在于,所述第一节点将所述第一数据的存储位置信息发送至所述第二节点之后,还包括:
所述第一节点接收所述第二节点发送的第二查询请求,所述第二查询请求由所述第二节点接收到所述服务装置查询所述第一数据的请求之后发送;
所述第一节点将所述第一数据发送给所述服务装置。
3.根据权利要求1所述的方法,其特征在于,所述第一节点将所述第一数据的存储位置信息发送至所述第二节点之后,还包括:
所述第一节点接收所述第二节点发送的第二查询请求,所述第二查询请求由所述第二节点接收到所述服务装置查询所述第一数据的请求之后发送;
所述第一节点将所述第一数据发送给所述第二节点,以使所述第二节点将所述第一数据返回给所述服务装置。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述第一节点将所述第一数据的存储位置信息发送至所述第二节点之后,还包括:
所述第一节点接收所述服务装置发送的添加数据请求,所述添加数据请求用于在所述第一数据中添加第三数据;
所述第一节点在所述第一数据中添加所述第三数据;
所述第一节点根据所述查询标识,确定用于存储所述第三数据的第三节点;
所述第一节点将所述第三数据的存储信息发送至所述第三节点。
5.根据权利要求1-3所述的方法,其特征在于,所述第一节点将所述第一数据的存储位置信息发送至所述第二节点之后,还包括:
所述第一节点接收所述服务装置发送的删除数据请求,所述删除请求用于在所述第一数据中删除第四数据;
所述第一节点在所述第一数据中删除所述第四数据;
所述第一节点根据所述查询标识,确定存储所述第四数据的至少一个第四节点;
所述第一节点将所述第四数据的存储位置信息发送至对应的第四节点。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述第一节点根据所述查询标识来计算用于存储所述第一数据的第二节点,具体为:
所述第一节点根据所述查询标识进行哈希计算,确定用于存储所述第一数据的所述第二节点。
7.一种分布式数据库节点,其特征在于,分布式系统包括服务装置和多个所述分布式数据库节点,所述多个分布式数据库节点用于分布式存储数据,所述服务装置用于对所述分布式数据库节点存储的数据进行访问;所述分布式数据库节点包括:
接收模块,用于接收所述服务装置发送的第一查询请求,所述第一查询请求中携带查询标识,所述查询标识对应第一数据和第二数据;
存储模块,用于存储数据;
处理模块,用于若所述存储模块存储有所述第一数据且未存储所述第二数据,则所述根据所述查询标识按照预设计算规则获得用于存储所述第一数据的第二节点;
发送模块,用于将所述第一数据的存储位置信息发送至所述第二节点。
8.根据权利要求7所述的节点,其特征在于,所述接收模块还用于:接收所述第二节点发送的第二查询请求,所述第二查询请求由所述第二节点接收到所述服务装置查询所述第一数据的请求之后发送;
所述发送模块还用于:将所述第一数据发送给所述服务装置。
9.根据权利要求7所述的节点,其特征在于,所述接收模块还用于:接收所述第二节点发送的第二查询请求,所述第二查询请求由所述第二节点接收到所述服务装置查询所述第一数据的请求之后发送;
所述发送模块还用于:将所述第一数据发送给所述第二节点,以使所述第二节点将所述第一数据返回给所述服务装置。
10.根据权利要求7-9任一项所述的节点,其特征在于,所述接收模块还用于:接收所述服务装置发送的添加数据请求,所述添加数据请求用于在所述第一数据中添加第三数据;
所述处理模块还用于:在所述存储模块存储的所述第一数据中添加所述第三数据;
所述处理模块还用于:根据所述查询标识,确定用于存储所述第三数据的第三节点;
所述发送模块还用于:将所述第三数据的存储信息发送至所述第三节点。
11.根据权利要求7-9所述的节点,其特征在于,所述接收模块还用于:接收所述服务装置发送的删除数据请求,所述删除请求用于在所述第一数据中删除第四数据;
所述处理模块还用于:在所述存储模块存储的所述第一数据中删除所述第四数据;
所述处理模块还用于:根据所述查询标识,确定存储所述第四数据的至少一个第四节点;
所述发送模块还用于:将所述第四数据的存储位置信息发送至对应的第四节点。
12.根据权利要求7-11任一项所述的节点,其特征在于,所述处理模块具体用于:根据所述查询标识进行哈希计算,确定用于存储所述第一数据的所述第二节点。
13.一种分布式数据库节点,其特征在于,分布式系统包括服务装置和多个所述分布式数据库节点,所述多个分布式数据库节点用于分布式存储数据,所述服务装置用于对所述分布式数据库节点存储的数据进行访问;所述分布式数据库节点包括:第一存储器,用于存储指令;第二存储器,用于存储数据;处理器,用于运行所述第一存储器中存储的指令,以执行如权利要求1-6任一项所述的方法。
14.一种分布式数据存储系统,其特征在于,包括服务装置和多个如权利要求7-12任一项所述的分布式数据库节点,所述多个分布式数据库节点用于分布式存储数据,所述服务装置用于对所述分布式数据库节点存储的数据进行访问。
15.一种分布式数据存储系统,其特征在于,包括服务装置和多个如权利要求13所述的分布式数据库节点,所述多个分布式数据库节点用于分布式存储数据,所述服务装置用于对所述分布式数据库节点存储的数据进行访问。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410038922.1A CN104809129B (zh) | 2014-01-26 | 2014-01-26 | 一种分布式数据存储方法、装置和系统 |
EP15740943.4A EP3082052A4 (en) | 2014-01-26 | 2015-01-23 | Distributed data storage method, device and system |
PCT/CN2015/071423 WO2015110062A1 (zh) | 2014-01-26 | 2015-01-23 | 一种分布式数据存储方法、装置和系统 |
US15/206,445 US10574752B2 (en) | 2014-01-26 | 2016-07-11 | Distributed data storage method, apparatus, and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410038922.1A CN104809129B (zh) | 2014-01-26 | 2014-01-26 | 一种分布式数据存储方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104809129A true CN104809129A (zh) | 2015-07-29 |
CN104809129B CN104809129B (zh) | 2018-07-20 |
Family
ID=53680842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410038922.1A Active CN104809129B (zh) | 2014-01-26 | 2014-01-26 | 一种分布式数据存储方法、装置和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10574752B2 (zh) |
EP (1) | EP3082052A4 (zh) |
CN (1) | CN104809129B (zh) |
WO (1) | WO2015110062A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106815258A (zh) * | 2015-11-27 | 2017-06-09 | 华为技术有限公司 | 一种数据存储方法和协调节点 |
CN107453994A (zh) * | 2016-05-30 | 2017-12-08 | 北京信威通信技术股份有限公司 | 基于dht网络的数据传输方法及装置 |
CN107818117A (zh) * | 2016-09-14 | 2018-03-20 | 阿里巴巴集团控股有限公司 | 一种数据表的建立方法、在线查询方法及相关装置 |
WO2019001400A1 (en) * | 2017-06-26 | 2019-01-03 | Huawei Technologies Co., Ltd. | DISTRIBUTED SELF BALANCED DATABASE CAPABLE OF BINARY RESEARCH |
CN109561128A (zh) * | 2017-09-27 | 2019-04-02 | 北京国双科技有限公司 | 数据传输方法和装置 |
CN109788319A (zh) * | 2017-11-14 | 2019-05-21 | 中国科学院声学研究所 | 一种数据缓存方法 |
CN109829014A (zh) * | 2019-01-03 | 2019-05-31 | 平安科技(深圳)有限公司 | 测试数据获取的方法及装置 |
CN111193804A (zh) * | 2020-01-02 | 2020-05-22 | 深圳市网心科技有限公司 | 分布式存储方法及装置、网络节点及存储介质 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11106672B2 (en) * | 2015-09-25 | 2021-08-31 | Micro Focus Llc | Queries based on ranges of hash values |
DE102017209428A1 (de) * | 2017-06-02 | 2018-12-06 | Robert Bosch Gmbh | Verfahren und Vorrichtung zur Identifikation in einem Rechnernetzwerk |
CN111352938B (zh) * | 2020-02-26 | 2023-07-18 | 深圳市迅雷网络技术有限公司 | 数据处理方法、计算机设备及存储介质 |
CN111611319A (zh) * | 2020-06-08 | 2020-09-01 | 杭州复杂美科技有限公司 | 分布式数据存储方法、设备和存储介质 |
CN113779068B (zh) * | 2021-09-13 | 2023-09-12 | 网易(杭州)网络有限公司 | 数据查询方法、装置、设备及存储介质 |
CN116055493B (zh) * | 2023-03-31 | 2023-06-23 | 北京比格大数据有限公司 | 一种跨架构的数据获取方法、网关节点及跨架构平台 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008038271A1 (en) * | 2006-09-28 | 2008-04-03 | Xeround Systems Ltd. | An apparatus and method for a distributed storage global database |
WO2012041404A1 (en) * | 2010-09-27 | 2012-04-05 | Telefonaktiebolaget Lm Ericsson (Publ) | Distributed database |
CN102577278A (zh) * | 2009-10-19 | 2012-07-11 | 国际商业机器公司 | 用于分布式集群存储网络的动态资源分配 |
CN102866995A (zh) * | 2011-07-05 | 2013-01-09 | 中兴通讯股份有限公司 | 对等网络的文件访问方法、管理方法及分布式文件系统 |
CN102891872A (zh) * | 2011-07-20 | 2013-01-23 | 中兴通讯股份有限公司 | 一种对等网络中数据存储和查询的方法及系统 |
CN102968498A (zh) * | 2012-12-05 | 2013-03-13 | 华为技术有限公司 | 数据处理方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1620992A2 (en) | 2003-04-24 | 2006-02-01 | Koninklijke Philips Electronics N.V. | Peer to peer transfer of content |
US7917471B2 (en) | 2006-07-14 | 2011-03-29 | Nokia Corporation | Method for obtaining information objects in a communication system |
CN101291321B (zh) | 2007-04-19 | 2012-10-03 | 华为技术有限公司 | 发布内容的方法及系统、查找内容的方法及系统 |
CN101685449B (zh) | 2008-09-26 | 2012-07-11 | 国际商业机器公司 | 一种用于连接多个异构分布式数据库中的表的方法和系统 |
CN101916261B (zh) | 2010-07-28 | 2013-07-17 | 北京播思软件技术有限公司 | 一种分布式并行数据库系统的数据分区方法 |
US8719310B2 (en) | 2010-12-31 | 2014-05-06 | Pitney Bowes Inc. | Systems and methods for preventing data collisions in multiple access postal system data storage systems |
US8473483B2 (en) | 2011-06-07 | 2013-06-25 | Microsoft Corporation | Performing parallel joins on distributed database data |
CN102831120B (zh) | 2011-06-15 | 2017-07-21 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及系统 |
US9785697B2 (en) * | 2012-06-29 | 2017-10-10 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and apparatus for implementing a distributed database |
-
2014
- 2014-01-26 CN CN201410038922.1A patent/CN104809129B/zh active Active
-
2015
- 2015-01-23 EP EP15740943.4A patent/EP3082052A4/en not_active Ceased
- 2015-01-23 WO PCT/CN2015/071423 patent/WO2015110062A1/zh active Application Filing
-
2016
- 2016-07-11 US US15/206,445 patent/US10574752B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008038271A1 (en) * | 2006-09-28 | 2008-04-03 | Xeround Systems Ltd. | An apparatus and method for a distributed storage global database |
CN102577278A (zh) * | 2009-10-19 | 2012-07-11 | 国际商业机器公司 | 用于分布式集群存储网络的动态资源分配 |
WO2012041404A1 (en) * | 2010-09-27 | 2012-04-05 | Telefonaktiebolaget Lm Ericsson (Publ) | Distributed database |
CN102866995A (zh) * | 2011-07-05 | 2013-01-09 | 中兴通讯股份有限公司 | 对等网络的文件访问方法、管理方法及分布式文件系统 |
CN102891872A (zh) * | 2011-07-20 | 2013-01-23 | 中兴通讯股份有限公司 | 一种对等网络中数据存储和查询的方法及系统 |
CN102968498A (zh) * | 2012-12-05 | 2013-03-13 | 华为技术有限公司 | 数据处理方法及装置 |
Non-Patent Citations (4)
Title |
---|
姚林 等: ""NoSQL 的分布式存储与扩展解决方法"", 《计算机工程》 * |
王丽娜 等: ""一种面向连续数据保护的分布式存储模型研究"", 《小型微型计算机系统》 * |
钟运琴 等: ""大规模时空数据分布式存储方法研究"", 《高技术通讯》 * |
陶导 等: ""CWI中的分布式图数据存储与查询"", 《广西师范大学学报: 自然科学版》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106815258B (zh) * | 2015-11-27 | 2020-01-17 | 华为技术有限公司 | 一种数据存储方法和协调节点 |
CN106815258A (zh) * | 2015-11-27 | 2017-06-09 | 华为技术有限公司 | 一种数据存储方法和协调节点 |
CN107453994A (zh) * | 2016-05-30 | 2017-12-08 | 北京信威通信技术股份有限公司 | 基于dht网络的数据传输方法及装置 |
CN107818117A (zh) * | 2016-09-14 | 2018-03-20 | 阿里巴巴集团控股有限公司 | 一种数据表的建立方法、在线查询方法及相关装置 |
CN110785750B (zh) * | 2017-06-26 | 2022-03-29 | 华为技术有限公司 | 一种能够进行自平衡对分搜索的分布式数据库 |
US10540370B2 (en) | 2017-06-26 | 2020-01-21 | Huawei Technologies Co., Ltd. | Self-balancing binary search capable distributed database |
CN110785750A (zh) * | 2017-06-26 | 2020-02-11 | 华为技术有限公司 | 一种能够进行自平衡对分搜索的分布式数据库 |
WO2019001400A1 (en) * | 2017-06-26 | 2019-01-03 | Huawei Technologies Co., Ltd. | DISTRIBUTED SELF BALANCED DATABASE CAPABLE OF BINARY RESEARCH |
CN109561128A (zh) * | 2017-09-27 | 2019-04-02 | 北京国双科技有限公司 | 数据传输方法和装置 |
CN109561128B (zh) * | 2017-09-27 | 2022-05-20 | 北京国双科技有限公司 | 数据传输方法和装置 |
CN109788319A (zh) * | 2017-11-14 | 2019-05-21 | 中国科学院声学研究所 | 一种数据缓存方法 |
CN109788319B (zh) * | 2017-11-14 | 2020-06-09 | 中国科学院声学研究所 | 一种数据缓存方法 |
CN109829014A (zh) * | 2019-01-03 | 2019-05-31 | 平安科技(深圳)有限公司 | 测试数据获取的方法及装置 |
CN109829014B (zh) * | 2019-01-03 | 2024-01-23 | 平安科技(深圳)有限公司 | 测试数据获取的方法及装置 |
CN111193804A (zh) * | 2020-01-02 | 2020-05-22 | 深圳市网心科技有限公司 | 分布式存储方法及装置、网络节点及存储介质 |
CN111193804B (zh) * | 2020-01-02 | 2022-09-09 | 深圳市网心科技有限公司 | 分布式存储方法及装置、网络节点及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104809129B (zh) | 2018-07-20 |
US20160323385A1 (en) | 2016-11-03 |
US10574752B2 (en) | 2020-02-25 |
WO2015110062A1 (zh) | 2015-07-30 |
EP3082052A1 (en) | 2016-10-19 |
EP3082052A4 (en) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104809129A (zh) | 一种分布式数据存储方法、装置和系统 | |
WO2015140927A1 (ja) | データ転送監視システム、データ転送監視方法、および拠点システム | |
US10904316B2 (en) | Data processing method and apparatus in service-oriented architecture system, and the service-oriented architecture system | |
US9002844B2 (en) | Generating method, generating system, and recording medium | |
CN110413845B (zh) | 基于物联网操作系统的资源存储方法及装置 | |
CN108932257A (zh) | 多维度数据的查询方法及装置 | |
CN104298541A (zh) | 云存储系统的数据分布算法及其装置 | |
CN104243598A (zh) | 一种信息推荐方法及装置 | |
CN104301233A (zh) | 路由访问方法、路由访问系统及用户终端 | |
CN109508912B (zh) | 一种业务调度方法、装置、设备和存储介质 | |
CN105512279A (zh) | 一种元数据访问方法、相关设备及系统 | |
CN105630419A (zh) | 一种资源池的分区视图发送方法及管理节点 | |
CN112559483A (zh) | 基于hdfs的数据管理方法、装置、电子设备及介质 | |
JP5949561B2 (ja) | 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム | |
CN114205329A (zh) | 一种设备编码方法及装置 | |
CN107656967A (zh) | 一种场景信息处理方法及装置 | |
CN109327484B (zh) | 特征值集合的获取方法、装置、服务器及存储介质 | |
CN112463379A (zh) | 虚拟缓存服务器的管理方法、系统、电子设备及存储介质 | |
CN112100208A (zh) | 一种操作请求的转发方法和装置 | |
CN104994182A (zh) | 调整地址池的方法及装置 | |
CN103970860A (zh) | 一种数据处理的方法、装置及系统 | |
CN110928500A (zh) | 一种存储集群功能配置方法、装置、设备、介质 | |
US20180150226A1 (en) | Method and apparatus for management of data | |
CN105335426A (zh) | 一种海量数据的热点数据的分析方法、系统及相关设备 | |
CN111368146A (zh) | 一种路径信息的查询方法及装置、存储介质和处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |