CN110442754B - 标签更新方法及装置、分布式存储系统 - Google Patents
标签更新方法及装置、分布式存储系统 Download PDFInfo
- Publication number
- CN110442754B CN110442754B CN201910718398.5A CN201910718398A CN110442754B CN 110442754 B CN110442754 B CN 110442754B CN 201910718398 A CN201910718398 A CN 201910718398A CN 110442754 B CN110442754 B CN 110442754B
- Authority
- CN
- China
- Prior art keywords
- server
- nodes
- node
- target
- labels
- 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
Images
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software 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)
Abstract
本发明公开了一种标签更新方法及装置、分布式存储系统,属于数据处理领域,该方法应用于第一服务器,第一服务器为分布式存储系统中的任一服务器,该方法包括:获取多个节点及其标签,多个节点包括:分布式存储系统中每个服务器对应的多个目标节点,分布式存储系统中不同服务器对应的目标节点不同;在多个节点的标签中,查找第一服务器对应的多个目标节点的源点的标签;根据查找到的源点的标签,更新第一服务器对应的多个目标节点的标签。本发明能够丰富对标签进行更新的过程。本发明用于对节点的标签进行更新。
Description
技术领域
本发明涉及数据处理领域,特别涉及一种标签更新方法及装置、分布式存储系统。
背景技术
图数据结构指的是由节点和用于连接节点的边组成的数据结构,其可以有效表示各个节点之间的关系。随着数据量的日益增大,图数据结构中的节点数量越来越大,通常采用分布式存储系统对图数据结构中的节点和边进行存储。
每个节点具有用于表示节点特征的标签。通常每个节点需要基于其所有源点的标签更新该节点的标签,其中,该节点与其每个源点均通过一条边连接,且该条边指向该节点。目前对节点的标签进行更新的过程通常包括:当该节点的一部分源点与该节点存储在同一服务器中,而另一部分源点存储在其他服务器中时,该其他服务器需要将其中存储的源点的标签发送至该节点所在的服务器。之后,该节点所在的服务器可以根据其所有源点的标签确定一个标签,进而将该节点的标签更新为最新确定的标签。
但是,该节点的标签的更新过程较为单一。
发明内容
本发明提供了一种标签更新方法及装置、分布式存储系统,可以丰富对标签进行更新的过程,所述技术方案如下:
第一方面,提供了一种标签更新方法,应用于第一服务器,所述第一服务器为分布式存储系统中的任一服务器,所述方法包括:
获取多个节点及其标签,所述多个节点包括:所述分布式存储系统中每个服务器对应的多个目标节点,所述分布式存储系统中不同服务器对应的目标节点不同;
在所述多个节点的标签中,查找所述第一服务器对应的多个目标节点的源点的标签;
根据查找到的源点的标签,更新所述第一服务器对应的多个目标节点的标签。
第二方面,提供了一种标签更新装置,所述标签更新装置包括用于执行第一方面任一所述的标签更新方法的各个模块。
第三方面,提供了一种标签更新装置,包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器在运行所述可执行指令时,能够实现第一方面任一所述的标签更新方法。
第四方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令;
当所述指令在处理组件上运行时,使得所述处理组件执行第一方面任一所述的标签更新方法。
第五方面,提供了一种分布式存储系统,所述分布式存储系统包括多个服务器,所述多个服务器中的任一服务器包括:第二方面或第三方面所述的标签更新装置。
可选地,所述分布式存储系统为区块链系统,所述多个服务器为所述区块链系统中的多个区块链节点。
本发明提供的技术方案带来的有益效果是:
第一服务器能够在获取到的多个节点及其标签中,查找第一服务器对应的多个目标节点的源点的标签,并根据查找到的源点的标签,更新第一服务器对应的多个目标节点的标签。由于第一服务器能够直接在本地查找第一服务器对应的多个目标节点的源点的标签,而不是由存储有目标节点的源点的标签的其他服务器向第一服务器发送目标节点的源点的标签,第一服务器再根据接收到的标签对更新目标节点的标签,因此,丰富了对标签进行更新的过程。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
为了更清楚地说明本发明的实施例,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种图数据结构的示意图;
图2为本发明实施例提供的一种分布式存储系统的结构示意图;
图3为本发明实施例提供的一种标签更新方法的流程图;
图4为本发明实施例提供的另一种标签更新方法的流程图;
图5为本发明实施例提供的一种获取多个节点及其标签的方法流程图;
图6为本发明实施例提供的一种分布式存储系统的存储示意图;
图7为本发明实施例提供的另一种标签更新方法的流程图;
图8为本发明实施例提供的一种标签更新装置的框图;
图9为本发明实施例提供的一种第一获取模块的框图;
图10为本发明实施例提供的另一种标签更新装置的框图;
图11为本发明实施例提供的另一种标签更新装置的框图。
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图数据结构指的是由节点和用于连接节点的边组成的数据结构,其用于表示关系型数据。通常各个数据不是独立存在的,而是彼此之间具有各种联系,因此,基于图数据结构可以查询大量数据之间的复杂关系。其中,节点用于表示数据,边用于表示各个节点之间的关系(各个数据之间的关系)。当任意两个节点之间通过边连接时,表示该两个节点之间具有联系。示例地,请参考图1,图1为本发明实施例提供的一种图数据结构的示意图。该图数据结构包括:节点0(V0)至节点3(V3),各个具有联系的节点之间通过边连接,例如,节点0(V0)与节点1(V1)通过边a连接。且边a由V1指向V0,也即是,V1为V0的源点。
随着数据量的日益增大,图数据结构中的节点数量越来越大,通常采用分布式存储系统对图数据结构中的节点和边进行存储。示例地,请参考图2,图2为本发明实施例提供的一种分布式存储系统的结构示意图,该分布式存储系统包括多个服务器S1,每个服务器S1中存储有图数据结构中的所有节点中的部分节点以及该所有边中的部分边。其中,各个服务器之间均建立有通信连接。可选地,该分布式存储系统还可以包括存储服务器S2,该存储服务器S2用于存储多个节点及其标签。多个服务器S1可以从该存储服务器S2中获取节点及其标签。其中,图数据结构中的每个节点均具有自己的标签,为了实现对节点的分类,通常每个节点需要基于其所有源点的标签更新该节点的标签。示例地,该节点可以为用户账号对应的性别信息,其具有的标签可以男或者女。或者,该节点可以为用户账号的年龄阶段,其具有的标签可以为少年、青年或者老年。又或者,该节点可以为用户账号的收入等级,其具有的标签可以为:一千、一万或者十万。
在本发明实施例中,该分布式存储系统可以为区块链系统,该多个服务器可以为区块链系统中的多个区块链节点。
目前的标签更新的过程包括:将图结构数据中的所有节点存储在分布式存储系统中的多个服务器中,每个服务器中存储有一个或多个节点。对于任一节点,当该节点与其一部分源点存储在同一服务器中,而另一部分源点存储在其他服务器中时,该其他服务器需要将其中存储的源点的标签发送至该节点所在的服务器。之后,该节点所在的服务器可以根据其所有源点的标签确定一个标签,进而将该节点的标签更新为最新确定的标签。
但是,每个服务器中通常存储有多个节点,该服务器中的任意两个节点可能具有相同的源点。在对该任意两个节点的标签进行更新的过程中,当该相同的源点存储在与该任意两个节点不同的服务器中时,该相同的节点所在的服务器需要向该任意两个节点所在的服务器发送两次标签,以实现对该任意两个节点的标签更新。这样导致同一节点的标签需要发送多次,进而导致通信开销较大,从而使标签更新效率较低。
图3为本发明实施提供的一种标签更新方法的流程图,该方法可以应用于第一服务器,该第一服务器为分布式存储系统中的任一服务器。参见图3,该方法可以包括:
步骤101、获取多个节点及其标签。
该多个节点包括:分布式存储系统中每个服务器对应的多个目标节点,分布式存储系统中不同服务器对应的目标节点不同。
步骤102、在多个节点的标签中,查找第一服务器对应的多个目标节点的源点的标签。
步骤103、根据查找到的源点的标签,更新第一服务器对应的多个目标节点的标签。
综上所述,本发明实施例提供的标签更新方法中,第一服务器能够在获取到的多个节点及其标签中,查找第一服务器对应的多个目标节点的源点的标签,并根据查找到的源点的标签,更新第一服务器对应的多个目标节点的标签。由于第一服务器能够直接在本地查找第一服务器对应的多个目标节点的源点的标签,而不是由存储有目标节点的源点的标签的其他服务器向第一服务器发送目标节点的源点的标签,第一服务器再根据接收到的标签对更新目标节点的标签,因此,丰富了对标签进行更新的过程。
图4为本发明实施例提供的另一种标签更新方法的流程图,参见图4,该方法可以包括:
步骤201、获取多个节点及其标签。
其中,该多个节点包括:分布式存储系统中每个服务器对应的多个目标节点,且分布式存储系统中不同服务器对应的目标节点不同。示例地,假设分布式存储系统中包括服务器A、服务器B、服务器C和服务器D,该多个节点包括节点1至节点8。服务器A对应的目标节点为节点1和节点2,服务器B对应的目标节点为节点3和节点4,服务器C对应的目标节点为节点5和节点6,服务器D对应的目标节点为节点7和节点8,任意两个服务器对应的目标节点不同。
示例地,请参考图5,图5为本发明实施例提供的一种获取多个节点及其标签的方法流程图,该方法可以包括:
步骤2011、获取多个节点中第一服务器对应的多个目标节点及其标签。
可选地,分布式存储系统包括存储服务器,该存储服务器中存储有多个节点及其标签,每个节点具有唯一的标识。分布式存储系统中的多个服务器可以确定每个服务器对应的标识集合,该标识集合包括对应的服务器所对应的目标节点的标识。第一服务器可以获取第一服务器对应的标识集合,再根据标识集合中的标识,获取具有标识集合中的标识的目标节点及其标签。
可选地,该标识可以为编号,分布式存储系统中的多个服务器可以先对存储服务器中存储的多个节点进行编号,再确定第一服务器对应的编号集合。示例地,假设存储服务器中存储有N个节点,分布式存储系统中包括P个服务器,其中,每个服务器均具有编号,不同服务器的编号不同,且每个服务器的编号均处于[1,P]之间。该N个节点编号为0~N-1,第q个服务器可以确定其对应的编号集合为[(N/P)*q-1,(N/P)*q)。
例如,假设存储服务器中存储有1000个节点(N=1000),分布式存储系统中包括10个服务器(P=10)。请参考表1,表1示出了该20个服务器中每个服务器对应的编号集合。如表1所示,第7个服务器对应的编号集合为[600,700)。
表1
服务器编号 | 编号集合 |
1 | [0,100) |
2 | [100,200) |
3 | [200,300) |
4 | [300,400) |
5 | [400,500) |
6 | [500,600) |
7 | [600,700) |
8 | [700,800) |
9 | [800,900) |
10 | [900,1000) |
第一服务器可以根据服务器编号确定其对应的编号集合,再根据编号集合中的标识,获取具有编号集合中的编号的目标节点及其标签。示例地,假设第一服务器的编号为1,则第一服务器可以确定第一服务器对应的编号集合为[0,100),并将编号处于[0,100)内的节点确定为第一服务器对应的目标节点,获取该目标节点及其标签。假设该目标节点为用户账号的性别,其标签为男或者女,第一服务器还可以获取处于[0,100)内的节点中每个节点的标签为男或者女。
可选地,第一服务器在获取第一服务器对应的目标节点及其标签后,可以将目标节点按照位图的形式进行存储,位图是采用一个比特(bit)位来表示第一服务器对应的目标节点中的一个目标节点的编号。由于将bit作为单位来存储目标节点,因此能够减小目标节点所占第一服务器的存储空间。
步骤2012、接收每个第二服务器发送的其在多个节点中对应的目标节点及其标签,第二服务器为分布式存储系统中与第一服务器不同的服务器。
由前述步骤2011可知,每个服务器均存储有对应的目标节点及其标签。因此,在该步骤2012中,每个第二服务器将其对应的目标节点及其标签发送至第一服务器,第一服务器接收每个第二服务器发送的目标节点及其标签,从而获取到所有节点及其标签。示例地,如上述表1所示,假设第一服务器的编号为1,则此时,第一服务器中存储有编号处于[0,1000)内的所有节点及其标签。
其中,第一服务器对应的多个目标节点包括:第一目标节点和第二目标节点。且第一目标节点的所有源点组成的集合,与第二目标节点的所有源点组成的集合具有交集。示例地,请参考前述表1,第一服务器对应的多个目标节点可以为编号处于[0,100)内的节点。假设第一目标节点为节点1,第二目标节点为节点2。节点1的所有源点组成的集合为{节点130,节点150,节点245,节点303,节点472,节点514,节点630}。节点2的所有源点组成的集合为{节点140,节点185,节点245,节点381,节点472,节点534,节点640}。可以看出,第一目标节点的所有源点组成的集合,与第二目标节点的所有源点组成的集合的交集为{节点245,节点472}。
需要说明的是,该步骤2012是以第一服务器为接收端为例进行说明的。对于第二服务器来讲,在该步骤2012中,第一服务器也需要将第一服务器在多个节点中对应的目标节点及其标签发送给第二服务器。
步骤202、获取第一服务器对应的多个目标节点的入边。
其中,目标节点的入边指的是从源点指向目标节点的有向边。例如,请参考前述图1,边a由节点1(V1)指向节点0(V0),则节点1为节点0的源点,边a为节点0的入边。可选地,分布式存储系统中的存储服务器中存储有每个节点的入边。第一服务器可以从存储服务器中获取第一服务器对应的多个目标节点的入边。
需要说明的是,在该步骤202中,分布式存储系统中的每个服务器均获取到了其对应的目标节点的入边。示例地,请参考图6,图5为本发明实施例提供的一种分布式存储系统的存储示意图,图5以将图1所示的节点和边存储到两个服务器为例进行说明。如图1所示,节点0(V0)的入边包括边a和边b。节点1(V1)没有入边。节点2(V2)的入边包括边c。节点3的入边包括边d、边e和边f。
如图6所示,服务器1对应的目标节点为V0和V1,且服务器1中存储有V0的入边(边a和边b)。服务器2对应的目标节点为V2和V3,且服务器2中存储有V2的入边(边c)以及V3的入边(边d、边e和边f)。该服务器1中存储有除目标节点之外的V2和V3,服务器2中存储有除目标节点之外的V0和V1。
步骤203、根据第一服务器对应的多个目标节点的入边,在多个节点中查找第一服务器对应的多个目标节点的源点。
由于每个目标节点的入边为该目标节点的源点指向该目标节点的边,也即是,第一服务器可以根据其对应的多个目标节点的入边,在多个节点中查找到其对应的多个目标节点的源点。示例地,假设第一服务器对应的多个目标节点包括节点1,该节点1的入边包括从节点700指向节点1的边,从节点200指向节点1的边,以及从节点300指向节点1的边。第一服务器可以根据节点1的入边在[0,1000)中查找到节点1的源点为节点700、节点200以及节点300。
可选地,第一服务器可以将其对应的多个目标节点及其入边按照邻接表的形式存储。这样,第一服务器可以直接根据邻接表查找多个目标节点的源点,从而提高了查找多个目标节点的源点的效率。示例地,该邻接表可以存储有每个目标节点与其源点的对应关系,在查找每个目标节点的源点时,可以直接在该邻接表中查找该目标节点对应的源点,以将查找到的源点作为目标节点的源点。
需要说明的是,由于第一服务器获取到了其对应的多个目标节点的入边以及所有节点,因此,第一服务器可以直接在本地根据入边查找到其对应的多个目标节点的源点,无需由其他服务器确定第一服务器对应的目标节点的源点,从而提高了更新节点标签的效率。
步骤204、在多个节点的标签中,查找第一服务器对应的多个目标节点的源点的标签。
第一服务器中存储有所有节点及其标签,第一服务器可以在其存储的所有标签中,根据查找到的其对应的目标节点的源点,查找到其对应的目标节点的源点的标签。示例地,请参考上述步骤203,第一服务器查找到其对应的目标节点为节点701,该节点701的源点为节点100、节点200以及节点300。第一服务器在多个节点的标签中,查找到节点100的标签为男,节点200的标签为女,节点300的标签为女。
步骤205、根据查找到的源点的标签,更新第一服务器对应的多个目标节点的标签。
可选地,对于每个目标节点,第一服务器可以根据查找到的源点的标签,采用出现次数最多的标签更新该目标节点的标签。当每个标签出现次数相同时,第一服务器可以采用任意一个标签更新该目标节点的标签。
示例地,请参考前述步骤204,对于节点1,其源点的标签中出现次数最多的标签为女,则第一服务器可以将节点1的标签更新为女。需要说明的是,当节点1的源点的标签中,标签男和标签女的出现次数相同时,第一服务器可以将节点1的标签更新为男或者女中的任意一个。
可选地,第一服务器可以通过多线程更新其对应的多个目标节点的标签,也即是,第一服务器对应的多个目标节点的标签的更新过程可以同时执行,这样能够提高标签更新效率。
可选地,本发明实施例提供的标签更新方法中的部分过程可以是周期性执行的,此时,在每个周期中均可以执行上述步骤2012以及步骤203至步骤205。并且,上述步骤2011中第一服务器接收每个第二服务器发送的其在多个节点中对应的目标节点及其标签可以包括:接收每个第二服务器发送的其在多个节点中对应的目标节点,以及在第i个同步周期中,接收每个第二服务器发送的其在多个节点中对应的目标节点的标签。上述步骤204中第一服务器在多个节点的标签中,查找第一服务器对应的多个目标节点的源点的标签可以包括:在第i个同步周期中,在多个节点的标签中,查找第一服务器对应的多个目标节点的源点的标签,i≥1。
本发明实施例对上述方法的周期性执行过程进行说明。在第一个周期内,第一服务器获取多个节点中第一服务器对应的多个目标节点及其标签,以及第一服务器对应的多个目标节点的入边。并且接收每个第二服务器发送的其在多个节点中对应的目标节点,同时,第一服务器需要向每个第二服务器发送第一服务器在多个节点中对应的目标节点。
之后,在每个同步周期中(包括第一个周期),第一服务器接收每个第二服务器发送的其在多个节点中对应的目标节点的标签,同时第一服务器需要向每个第二服务器发送第一服务器对应的目标节点的标签。第一服务器根据在第一个周期中获取的第一服务器对应的多个目标节点的入边,在多个节点中查找第一服务器对应的多个目标节点的源点。并在接收到的所有标签中查找第一服第一服务器对应的多个目标节点的源点的标签。最后根据查找到的源点的标签,更新第一服务器对应的多个目标节点的标签。
图7为本发明实施例提供的另一种标签更新方法的流程图,本发明实施例以图7为例对标签更新方法进行进一步说明,该方法可以应用于分布式存储系统。参见图7,该方法包括:
步骤301、多个服务器进行图编码。
图编码指的是为每个节点分配标识,以使每个节点具有唯一的标识。示例地,该多个服务器中,每个服务器可以对多个节点中的部分节点进行编号,以对所有的节点进行编号,从而进行图编码。可选地,也可以是单个服务器对多个节点进行编号,本发明实施例对此不做限定。
步骤302、多个服务器按照点进行图切分。
按照点进行图切分指的是确定分布式存储系统中的每个服务器对应的目标节点以及该目标节点的入边。示例地,每个服务器可以获取其对应的目标节点以及该目标节点的入边。每个服务器获取其对应的目标节点以及该目标节点的入边的过程可以参考前述步骤2011中第一服务器确定其对应的目标节点的过程,以及步骤202中第一服务器获取其对应的目标节点的入边的过程,本发明实施例在此不做赘述。
步骤303、每个服务器对当前标签数组和先前标签数组进行初始化。
示例地,分布式存储系统中的第一服务器存储有一个当前标签(可以称为curr_label,用于存储当前周期中第一服务器对应的目标节点的标签)数组和一个先前标签(可以称为prev_label,用于存储当前周期的上一个周期中,第一服务器对应的目标节点的标签)数组。在进行标签更新之前,第一服务器需要对其存储的当前标签数组和先前标签数组初始化。通常情况下,在第一服务器未更新其对应的目标节点的标签之前,每个目标节点的标签可以为该目标节点的身份标识号(Identity document,ID)。该初始化过程包括:第一服务器遍历其对应的所有目标节点,并将其存储的先前标签数组中每个目标节点的标签(可以称为prev_label[vid])赋值为其对应的目标节点的ID。然后再初始化第一变量(可以称为pos变量)为0。
步骤304、每个服务器将主节点的先前标签同步至镜像节点。
需要说明的是,在该步骤304之前,每个服务器可以接收其他服务器发送的该其他服务器对应的目标节点,以获取到所有节点。则示例地,第一服务器可以接收第二服务器发送的第二服务器对应的目标节点。
在该步骤304中,对于第一服务器对应的任一目标节点,主节点指的是存储在第一服务器中的该目标节点,镜像节点指的是存储在除第一服务器之外的服务器中的该目标节点。第一服务器将主节点的先前标签(prev_label)同步至镜像节点指的是第一服务器将其对应的目标节点的标签发送至其他服务器。
示例地,本发明实施例提供的标签更新方法中的主节点的先前标签的同步过程可以是周期性执行的,每次同步主节点的先前标签的过程为一个同步周期。在每个同步周期中,每个第二服务器将其存储的先前标签数组中每个目标节点的标签拷贝到一个单独的缓冲(buffer)数组中。将缓冲数组以及先前标签数组作为参数,调用指定软件(如MPICH软件)中的原语(如MPICH软件中提供的MPI_Allgatherv原语)进行数据同步,以将其对应的目标节点的标签发送至第一服务器,第一服务器将接收到的目标节点的标签存储在第一服务器所存储的先前标签数组中。同时,第一服务器将其存储的先前标签数组中每个目标节点的标签拷贝到一个单独的缓冲数组中。将缓冲数组以及先前标签数组作为参数,调用上述指定软件进行数据同步,以将其对应的目标节点的标签发送至每个第二服务器。
步骤305、每个服务器更新主节点当前标签。
每个服务器更新主节点当前标签(curr_label)指的是每个服务器更新其对应的目标节点的标签。示例地,在每个同步周期中,第一服务器在查找到第一服务器对应的多个目标节点的源点的标签后,根据查找到的其对应的多个目标节点的源点的标签,更新第一服务器对应的多个目标节点的标签。示例地,第一服务器对其对应的目标节点中的任一节点的更新过程包括:第一服务器可以先初始化第一变量为0。初始化第二变量(可以称为chunk变量)为用户定义值。再根据该第一变量和第二变量执行目标操作(如atomic_fetch_add(pos,chunk)原子操作),得到第三变量(可以称为offset)。遍历编号位于区间[第三变量-第二变量,第三变量)中的所有目标节点,以确定上述用于记录第一服务器对应的目标节点的编号的位图中是否记录有该目标节点的编号。
如果某一目标节点的编号在位图中有记录,则对该目标节点执行该过程:首先初始化一个类型为<vid_t,int>的哈希表(可以记为map),其中vid_t表示该目标节点的ID的类型,int用于表示该目标节点的标签。接着第一服务器每找到该目标节点的一个源点(可以称为src),可以将该源点的标签的出现次数加1(比如在哈希表中通过该源点对应的map[prev_label[src]]记录该次数,并将map[prev_label[src]]的值加1)。之后,第一服务器从哈希表中选择值最大的map[prev_label[src]],将其对应的源点的标签作为该目标节点的标签,以及更新当前标签数组中该目标节点的标签(更新<vid_t,int>中的int)。
步骤306、每个服务器交换先前标签与当前标签。
示例地,第一服务器需要交换先前标签数组与当前标签数组。这样,使得先前标签数组中存储的是当前同步周期中更新后的目标节点的标签。在下一轮同步周期中,第一服务器再通过先前标签数组进行标签同步,以将当前同步周期中,第一服务器对应的目标节点的更新后的标签发送至第二服务器。
步骤307、每个服务器检测是否满足终止迭代条件。
该终止迭代条件指的是上述同步周期的个数大于周期阈值,也即是i大于周期阈值。当满足终止迭代条件时,结束流程;当不满足终止迭代条件时,执行上述步骤304。示例地,第一服务器可以检测i是否大于周期阈值,当i大于周期阈值时,结束后续流程;当i小于或等于周期阈值时,第一服务器将其主节点的先前标签(prev_label)同步至镜像节点。也即是,当对目标节点进行标签更新的次数大于周期阈值时,停止对目标节点的标签更新。当该i值越大,对目标节点进行标签更新的次数越多,对所有节点的分类越准确。
需要说明的是,假设第一服务器中存储有节点1和节点2,节点1的源点包括节点3、节点4和节点5,节点2的源点包括节点4、节点5和节点6。节点1和节点2的源点均存储在其他服务器中。相关技术中,在更新节点1的过程中,节点3、节点4和节点5所在的服务器均需要向第一服务器发送其标签。在更新节点2的过程中,节点4、节点5和节点6所在的服务器均需要向第一服务器发送器标签。假设发送一次标签的数据量为a,则相关技术中,更新一次节点1和节点2的过程中所占用的数据量为6a。而本发明实施例中,节点3、节点4、节点5和节点6所在的服务器均需要将该四个节点的标签发送至第一服务器,此时,第一服务器仅需在本地查找节点3、节点4和节点5的标签以更新节点1的标签,查找节点4、节点5和节点6的标签以更新节点2的标签。可以看出本发明实施例中,更新一次节点1和节点2的过程中所占用的数据量为4a。因此,本发明实施例提供的标签更新方法,相较于相关技术,能够显著降低更新节点标签所需的数据传输量,从而减小了标签更新过程中的通信开销,提高了标签更新效率。
示例地,本发明实施例在分布式存储系统可以包括50台B70(一种服务器类型)服务器,且图数据结构中包括十亿个节点以及千亿个边的实验环境下对本发明实施例与相关技术进行了对比,可以得知:本发明实施例提供的标签更新方法的标签更新过程中所占的内存开销为1.5太字节(Terabyte,TB),更新10次标签所消耗的总时间为581秒。而相关技术中标签更新过程中所占的内存超过5TB,且标签更新10次的所消耗的时间大于两小时。相较于相关技术,本发明实施例所提供的标签更新方法降低了内存空间以及消耗的时间,从而减小了通信开销。
综上所述,本发明实施例提供的标签更新方法中,第一服务器能够在获取到的多个节点及其标签中,查找第一服务器对应的多个目标节点的源点的标签。并根据查找到的源点的标签,更新第一服务器对应的多个目标节点的标签。由于第一服务器能够直接在本地查找第一服务器对应的多个目标节点的源点的标签,而不是由存储有目标节点的源点的标签的其他服务器向第一服务器发送目标节点的源点的标签,第一服务器再根据接收到的标签对更新目标节点的标签,因此,丰富了对标签进行更新的过程。
以上介绍了本发明实施例的标签更新方法,以下介绍本发明实施例的标签更新装置,本发明实施例的标签更新装置应用于第一服务器。应理解,应用于第一服务器的标签更新装置即为上述方法中的第一服务器,其具有上述方法中第一服务器的任意功能。
图8为本发明实施例提供的一种标签更新装置的框图,该标签更新装置400可以应用于图2所示的分布式存储系统中的第一服务器,该第一服务器为分布式存储系统中的任一服务器。参见图8,该装置400包括:
第一获取模块401,用于获取多个节点及其标签,多个节点包括:分布式存储系统中每个服务器对应的多个目标节点,分布式存储系统中不同服务器对应的目标节点不同。
第一查找模块402,用于在多个节点的标签中,查找第一服务器对应的多个目标节点的源点的标签。
更新模块403,用于根据查找到的源点的标签,更新第一服务器对应的多个目标节点的标签。
综上所述,本发明实施例提供的标签更新装置中,第一查找模块能够在第一获取模块获取到的多个节点及其标签中,查找第一服务器对应的多个目标节点的源点的标签,更新模块能够根据查找到的源点的标签,更新第一服务器对应的多个目标节点的标签。由于第一查找模块能够直接在本地查找第一服务器对应的多个目标节点的源点的标签,而不是由存储有目标节点的源点的标签的其他服务器向第一服务器发送目标节点的源点的标签,第一服务器再根据接收到的标签对更新目标节点的标签,因此,丰富了对标签进行更新的过程。
可选地,第一服务器对应的多个目标节点包括:第一目标节点和第二目标节点。第一目标节点的所有源点组成的集合,与第二目标节点的所有源点组成的集合具有交集。
可选地,请参考图9,图9为本发明实施例提供的一种第一获取模块401的框图,该第一获取模块401,包括:
获取子模块4011,用于获取多个节点中第一服务器对应的多个目标节点及其标签。
接收子模块4012,用于接收每个第二服务器发送的其在多个节点中对应的目标节点及其标签,第二服务器为分布式存储系统中与第一服务器不同的服务器。
可选地,该接收子模块4012,用于:
接收每个第二服务器发送的其在多个节点中对应的目标节点,第二服务器为分布式存储系统中与第一服务器不同的服务器。
在第i个同步周期中,接收每个第二服务器发送的其在多个节点中对应的目标节点的标签,i≥1。
相应的,第一查找模块402,用于:
在第i个同步周期中,在多个节点的标签中,查找第一服务器对应的多个目标节点的源点的标签。
可选地,上述接收子模块4012,还用于:
当i小于或等于周期阈值时,接收每个第二服务器发送的其在多个节点中对应的目标节点的标签。
可选地,图10为本发明实施例提供的另一种标签更新装置400的框图,请参考图10,在图8的基础上,该装置400还包括:
第二获取模块404,用于在第一查找模块402查找第一服务器对应的多个目标节点的源点的标签之前,获取第一服务器对应的多个目标节点的入边。
第二查找模块405,用于根据第一服务器对应的多个目标节点的入边,在多个节点中查找第一服务器对应的多个目标节点的源点。
综上所述,本发明实施例提供的标签更新装置中,第一查找模块能够在第一获取模块获取到的多个节点及其标签中,查找第一服务器对应的多个目标节点的源点的标签,更新模块能够根据查找到的源点的标签,更新第一服务器对应的多个目标节点的标签。由于第一查找模块能够直接在本地查找第一服务器对应的多个目标节点的源点的标签,而不是由存储有目标节点的源点的标签的其他服务器向第一服务器发送目标节点的源点的标签,第一服务器再根据接收到的标签更新目标节点的标签,因此,丰富了对标签进行更新的过程。
本发明实施例提供的应用于第一服务器的标签更新装置即为上述方法中的第一服务器,其具有上述方法中第一服务器的任意功能,具体细节可参见上述方法,此处不再赘述。
本发明实施例还提供了一种标签更新装置,该标签更新装置可以用于图2所示的分布式存储系统中的任一服务器。示例地,如图11所示,该标签更新装置800包括中央处理单元(CPU)801、包括随机存取存储器(RAM)802和只读存储器(ROM)803的系统存储器804,以及连接系统存储器804和中央处理单元801的系统总线805。标签更新装置800还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)806,和用于存储操作系统813、应用程序814和其他程序模块815的大容量存储设备807。
基本输入/输出系统806包括有用于显示信息的显示器808和用于用户输入信息的诸如鼠标、键盘之类的输入设备809。其中显示器808和输入设备809都通过连接到系统总线805的输入输出控制器810连接到中央处理单元801。基本输入/输出系统806还可以包括输入输出控制器810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器810还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备807通过连接到系统总线805的大容量存储控制器(未示出)连接到中央处理单元801。大容量存储设备807及其相关联的计算机可读介质为标签更新装置800提供非易失性存储。也就是说,大容量存储设备807可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读存储介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器804和大容量存储设备807可以统称为存储器。
根据本发明的各种实施例,标签更新装置800还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即标签更新装置800可以通过连接在系统总线805上的网络接口单元811连接到网络812,或者说,也可以使用网络接口单元811来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行,以实现本发明实施例提供的用于标签更新装置的标签更新方法。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质内存储有指令,当指令在处理组件上运行时,使得处理组件执行本发明实施例提供的标签更新方法。
本发明实施例还提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行本发明实施例提供的标签更新方法。
在本发明中,术语“第一”和“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
需要说明的是,本发明实施例提供的方法实施例、装置实施例以及分布式存储系统实施例均可以相互参考,本发明实施例对此不做限定。本发明实施例提供的方法实施例步骤的先后顺序能够进行适当调整,步骤也能够根据情况进行相应增减,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本发明的保护范围之内,因此不再赘述。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (10)
1.一种标签更新方法,其特征在于,应用于第一服务器,所述第一服务器为分布式存储系统中的任一服务器,所述方法包括:
获取多个节点及其标签,所述多个节点包括:所述分布式存储系统中每个服务器存储的图数据结构中的对应的多个目标节点,所述分布式存储系统中不同服务器对应的目标节点不同;
在所述第一服务器存储的所述多个节点的标签中,查找所述第一服务器对应的多个目标节点的源点的标签;
根据查找到的源点的标签,更新所述第一服务器对应的多个目标节点的标签。
2.根据权利要求1所述的方法,其特征在于,所述第一服务器对应的多个目标节点包括:第一目标节点和第二目标节点;
所述第一目标节点的所有源点组成的集合,与所述第二目标节点的所有源点组成的集合具有交集。
3.根据权利要求1或2所述的方法,其特征在于,所述获取多个节点及其标签,包括:
获取所述多个节点中所述第一服务器对应的多个目标节点及其标签;
接收每个第二服务器发送的其在所述多个节点中对应的目标节点及其标签,所述第二服务器为所述分布式存储系统中与所述第一服务器不同的服务器。
4.根据权利要求3所述的方法,其特征在于,所述接收每个第二服务器发送的其在所述多个节点中对应的目标节点及其标签,包括:
接收每个第二服务器发送的其在所述多个节点中对应的目标节点,所述第二服务器为所述分布式存储系统中与所述第一服务器不同的服务器;
在第i个同步周期中,接收所述每个第二服务器发送的其在所述多个节点中对应的目标节点的标签,i≥1;
所述在所述多个节点的标签中,查找所述第一服务器对应的多个目标节点的源点的标签,包括:
在所述第i个同步周期中,在所述多个节点的标签中,查找所述第一服务器对应的多个目标节点的源点的标签。
5.根据权利要求4所述的方法,其特征在于,所述接收所述每个第二服务器发送的其在所述多个节点中对应的目标节点的标签,包括:
当i小于或等于周期阈值时,接收所述每个第二服务器发送的其在所述多个节点中对应的目标节点的标签。
6.根据权利要求1或2所述的方法,其特征在于,在所述查找所述第一服务器对应的多个目标节点的源点的标签之前,所述方法还包括:
获取所述第一服务器对应的多个目标节点的入边;
根据所述第一服务器对应的多个目标节点的入边,在所述多个节点中查找所述第一服务器对应的多个目标节点的源点。
7.一种标签更新装置,其特征在于,包括:
处理器;
用于存储所述处理器的可执行指令的存储器;
其中,所述处理器在运行所述可执行指令时,能够实现权利要求1至6任一所述的标签更新方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令;
当所述指令在处理组件上运行时,使得所述处理组件执行权利要求1至6任一所述的标签更新方法。
9.一种分布式存储系统,其特征在于,所述分布式存储系统包括多个服务器,所述多个服务器中的任一服务器包括:权利要求7所述的标签更新装置。
10.根据权利要求9所述的系统,其特征在于,所述分布式存储系统为区块链系统,所述多个服务器为所述区块链系统中的多个区块链节点。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911284754.3A CN111046246B (zh) | 2019-08-05 | 2019-08-05 | 标签更新方法及装置、分布式存储系统 |
CN201910718398.5A CN110442754B (zh) | 2019-08-05 | 2019-08-05 | 标签更新方法及装置、分布式存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910718398.5A CN110442754B (zh) | 2019-08-05 | 2019-08-05 | 标签更新方法及装置、分布式存储系统 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911284754.3A Division CN111046246B (zh) | 2019-08-05 | 2019-08-05 | 标签更新方法及装置、分布式存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110442754A CN110442754A (zh) | 2019-11-12 |
CN110442754B true CN110442754B (zh) | 2021-09-21 |
Family
ID=68433217
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911284754.3A Active CN111046246B (zh) | 2019-08-05 | 2019-08-05 | 标签更新方法及装置、分布式存储系统 |
CN201910718398.5A Active CN110442754B (zh) | 2019-08-05 | 2019-08-05 | 标签更新方法及装置、分布式存储系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911284754.3A Active CN111046246B (zh) | 2019-08-05 | 2019-08-05 | 标签更新方法及装置、分布式存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN111046246B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111046246B (zh) * | 2019-08-05 | 2020-11-10 | 腾讯科技(深圳)有限公司 | 标签更新方法及装置、分布式存储系统 |
CN114637756B (zh) * | 2021-10-20 | 2024-08-13 | 支付宝(杭州)信息技术有限公司 | 分布式数据处理方法、装置及设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9071631B2 (en) * | 2012-08-09 | 2015-06-30 | International Business Machines Corporation | Service management roles of processor nodes in distributed node service management |
US8930311B1 (en) * | 2012-12-14 | 2015-01-06 | Netapp, Inc. | Push-based piggyback system for source-driven logical replication in a storage environment |
US9591059B2 (en) * | 2013-03-13 | 2017-03-07 | International Business Machines Corporation | File change notifications in a scale-out NAS system |
US10152558B2 (en) * | 2014-12-23 | 2018-12-11 | Intel Corporation | Graph operations |
CN105915650B (zh) * | 2016-06-21 | 2019-05-24 | 腾讯科技(深圳)有限公司 | 负载均衡方法和装置 |
CN114385350A (zh) * | 2016-11-30 | 2022-04-22 | 华为技术有限公司 | 一种图数据处理的方法、装置及系统 |
CN106657167B (zh) * | 2017-03-10 | 2020-05-26 | 联想(北京)有限公司 | 管理服务器、服务器集群、以及管理方法 |
CN108062360A (zh) * | 2017-11-29 | 2018-05-22 | 广东技术师范学院 | 一种大规模复杂网络社区结构检测的方法、系统及装置 |
CN108600321A (zh) * | 2018-03-26 | 2018-09-28 | 中国科学院计算技术研究所 | 一种基于分布式内存云的图数据存储方法和系统 |
CN111046246B (zh) * | 2019-08-05 | 2020-11-10 | 腾讯科技(深圳)有限公司 | 标签更新方法及装置、分布式存储系统 |
-
2019
- 2019-08-05 CN CN201911284754.3A patent/CN111046246B/zh active Active
- 2019-08-05 CN CN201910718398.5A patent/CN110442754B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111046246A (zh) | 2020-04-21 |
CN111046246B (zh) | 2020-11-10 |
CN110442754A (zh) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11416344B2 (en) | Partial database restoration | |
CN109684333B (zh) | 一种数据存储及裁剪方法、设备和存储介质 | |
EP3767483B1 (en) | Method, device, system, and server for image retrieval, and storage medium | |
US11334544B2 (en) | Method, apparatus, device and medium for storing and querying data | |
CN110147455B (zh) | 一种人脸匹配检索装置及方法 | |
CN104598439B (zh) | 信息对象的标题修正方法及装置和推送信息对象的方法 | |
CN109547807B (zh) | 一种基于直播的信息处理方法、装置及服务器 | |
CN110442754B (zh) | 标签更新方法及装置、分布式存储系统 | |
CN110245134B (zh) | 一种应用于搜索服务的增量同步方法 | |
US20110179013A1 (en) | Search Log Online Analytic Processing | |
CN109739854A (zh) | 一种数据存储方法及装置 | |
CN109101595B (zh) | 一种信息查询方法、装置、设备及计算机可读存储介质 | |
CN112488708B (zh) | 区块链账户关联性查询方法及虚假交易筛选方法 | |
US8407255B1 (en) | Method and apparatus for exploiting master-detail data relationships to enhance searching operations | |
CN112000850B (zh) | 进行数据处理的方法、装置、系统及设备 | |
CN113961592A (zh) | 基于主从数据库的数据查询方法、装置、设备及存储介质 | |
CN116737067A (zh) | 一种图数据的存储加载结构和方法 | |
CN116737829A (zh) | 一种数据同步方法、装置、存储介质及电子设备 | |
CN116304079A (zh) | 基于时序的图谱数据管理方法、设备和可读存储介质 | |
CN116578589A (zh) | 一种基于连续内存的高速数据查询方法及系统 | |
CN111897837A (zh) | 数据查询方法、装置、设备和介质 | |
CN109918077A (zh) | 代码管理方法、装置、计算机设备和存储介质 | |
CN113760920B (zh) | 一种数据同步方法、装置、电子设备和存储介质 | |
CN110929207B (zh) | 数据处理方法、装置和计算机可读存储介质 | |
CN107562553B (zh) | 数据中心管理方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |