CN110347711A - 分碎片存储的图数据库查询方法及装置 - Google Patents
分碎片存储的图数据库查询方法及装置 Download PDFInfo
- Publication number
- CN110347711A CN110347711A CN201910633419.3A CN201910633419A CN110347711A CN 110347711 A CN110347711 A CN 110347711A CN 201910633419 A CN201910633419 A CN 201910633419A CN 110347711 A CN110347711 A CN 110347711A
- Authority
- CN
- China
- Prior art keywords
- storage server
- step number
- migration
- inquiry
- inquiry response
- 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
-
- 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/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (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为图1中未完成图游走的流程图;
图3为本公开实施例提供的分碎片存储的图数据库查询流程图之二;
图4为图3中未完成图游走的流程图;
图5为本公开施例提供的存储服务器的结构示意图之一;
图6为本公开施例提供的存储服务器的结构示意图之二;
图7为本共开实施例提供的存储服务器的结构示意图之三;
图8为本公开具体实例的网络拓扑图。
具体实施方式
在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。
如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或其群组。
本文所述实施例可借助本公开的理想示意图而参考平面图和/或截面图进行描述。因此,可根据制造技术和/或容限来修改示例图示。因此,实施例不限于附图中所示的实施例,而是包括基于制造工艺而形成的配置的修改。因此,附图中例示的区具有示意性属性,并且图中所示区的形状例示了元件的区的具体形状,但并不旨在是限制性的。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
本公开的一个实施例提供一种分碎片存储的图数据库查询方法,所述方法是基于网络拓扑图对图数据库进行数据查询。同一集群内的各存储服务器分别存储网络拓扑图的不同部分,同一集群内每个存储服务器所存储的不同部分的网络拓扑图拼接起来即可得到完整的网络拓扑图。集群内各存储服务器内分别存储有相应的节点,在本公开实施例中,节点是指实体节点,包括图数据库中存储的数据及其边关系,边关系是指数据之间的关联关系,一个节点即为一条数据及该条数据的关联关系。
以下结合图1,对本公开的分碎片存储的图数据库查询方法进行详细说明。如图1所示,所述方法包括以下步骤:
步骤11,当接收到同一集群内其他存储服务器发送的第一查询请求时,获取其中携带的游走总步数、节点信息和地址。
具体的,集群内设置有管理服务器,管理服务器可以向集群内的各个存储服务器分配数据查询任务。集群内的管理服务器(即指定设备)向集群内的某个存储服务器发送第二查询请求,第二查询请求中携带有游走总步数和节点信息,游走总步数和节点信息均是用户指定的,节点信息为开始查询的起始节点的信息。接收到第二查询请求的存储服务器根据第二查询请求中携带的节点信息确定相应节点所属的存储服务器,并向确定出的存储服务器发送第一查询请求,其中,第一查询请求中携带有游走总步数、节点信息和地址,所述地址即为首个发送第一查询请求的存储服务器(即接收到第二查询请求的存储服务器)的地址。
步骤12,根据节点信息和本地存储的网络拓扑图,确定下一跳节点。
具体的,接收到第一查询请求的存储服务器根据节点信息查询本地存储的那部分网络拓扑图,找到该节点对应的下一跳节点。
步骤13,判断当前游走步数是否等于游走总步数,若当前游走步数不等于游走总步数,则执行步骤14。
具体的,存储服务器在确定出下一跳节点后,就完成了一个游走步,此时判断是否已达到需要游走的总步数,若当前游走步不等于游走总步数(此时当前游走步小于游走总步数),说明图游走还未完成,则直接向首个发送第一查询请求的存储服务器返回查询响应(即执行步骤14)。
步骤14,当下一跳节点中包括本地存储的网络拓扑图中的节点时,向地址对应的存储服务器返回携带有当前游走步数和本设备的设备标识的查询响应。
具体的,若存储服务器判断出未完成图游走,则进一步判断查询出的下一跳节点中是否包括位于本地存储的网络拓扑图中的节点,如果是,说明下一步图游走仍然在本设备上进行,则向首个发送第一查询请求的存储服务器返回查询响应。此时的查询响应中仅携带当前的游走步数和本设备的设备标识,不会携带查询出的节点信息(即当前的查询结果),只有在图游走全部完成之后,才会向首个发送第一查询请求的存储服务器发送查询结果,这样,可以节约网络资源开销,降低性能损耗和网络拥堵风险,提高查询效率。
步骤15,根据下一跳节点和本地存储的网络拓扑图,确定该下一跳节点的下一跳节点。
在本步骤中,存储服务器在本设备内实现本步骤的图游走。
需要说明的是,在执行完步骤15之后,还需返回步骤13,继续判断当前是否已达到需要游走的总步数,并根据判断结果执行相应的步骤,从而实现图游走的自动进行。
通过步骤11-15可以看出,通过将网络拓扑图的不同部分分别存储在集群内的不同存储服务器内,在第一查询请求中携带游走总步数和首个发送第一查询请求的存储服务器的地址,接收到第一查询请求的存储服务器可以在本地存储的网络拓扑图的范围内执行多步游走,在未完成全部游走之前,向首个发送第一查询请求的存储服务器返回当前游走步数和本设备的设备标识,而不发送当前的查询结果,这样可以避免针对每个游走步都产生首个发送第一查询请求的存储服务器与当前进行查询的存储服务器之间的双向数据传输,从而节约网络资源开销,降低性能损耗和网络拥堵风险,提高查询效率。
进一步的,在步骤13中,若判断出当前游走步数等于游走总步数,说明当前已游走到最后一步,整个图游走完成,因此,如图2所示,执行步骤16。
步骤16,向地址对应的存储服务器返回携带有当前游走步数和当前游走步中确定出的节点的节点信息的查询响应。
在本步骤中,由于已达到需要游走的总步数,因此,当前确定出的节点信息即为最终的查询结果,相应的,存储服务器向首个发送第一查询请求的存储服务器返回查询响应,该查询响应中携带当前游走步数和当前游走步中确定出的节点的节点信息(即最终的查询结果)。
进一步的,在步骤13中,若判断出当前游走步数不等于所述游走总步数,则所述分碎片存储的图数据库查询方法还可以包括以下步骤:
当下一跳节点中包括非本地存储的网络拓扑图中的节点时,向该非本地存储的网络拓扑图中的节点所属的存储服务器发送所述第一查询请求,并向所述地址对应的存储服务器返回携带有当前游走步数和第一设备标识的查询响应。其中,第一设备标识为所述下一跳节点中该非本地存储的网络拓扑图中的节点所属的存储服务器的设备标识。第一查询请求中携带有游走总步数、节点信息和地址,节点信息为所述下一跳节点中非本地存储的网络拓扑图中节点的节点信息。
通过本步骤可以看出,当未完成图游走,且查询出的下一跳节点中包括非本地存储的网络拓扑图中的节点时,需要由其他的存储服务器继续完成图游走,此时,一方面,当前的存储服务器直接向执行下一步图游走的存储服务器发送查询请求(即第一查询请求)。也就是说,当前的存储服务器代替该首个发送第一查询请求的存储服务器向执行下一步图游走的存储服务器发起查询,可以进一步节约网络资源开销。另一方面,当前的存储服务器还向首个发送第一查询请求的存储服务器发送查询响应,以告知其执行下一步图游走的存储服务器,以便其进行监控。
需要说明的是,当下一跳节点中既包括本地存储的网络拓扑图中的节点,又包括非本地存储的网络拓扑图中的节点时,当前进行查询的存储服务器向该非本地存储的网络拓扑图中的节点所属的存储服务器发送第一查询请求。而且,当前进行查询的还向所述地址对应的存储服务器返回查询响应,所述查询响应中携带有当前游走步数、本设备的设备标识和该非本地存储的网络拓扑图中的节点所属的存储服务器的设备标识(即第一设备标识)。也就是说,当前进行查询的存储服务器仅向所述地址对应的存储服务器返回一个查询响应,不再分别返回查询响应了,可以进一步减小网络资源占用。
上述步骤是集群中的存储服务器作为非首个发送第一查询请求的存储服务器时执行步骤,当然,集群中的各存储服务器也有可能作为首个发送第一查询请求的存储服务器。以下结合图3和图4,详细说明当存储服务器作为首个发送第一查询请求的存储服务器时,本公开的分碎片存储的图数据库查询过程。
如图3所示,所述分碎片存储的图数据库查询方法还可以包括以下步骤:
步骤21,当接收到指定设备发送的第二查询请求时,获取其中携带的游走总步数和节点信息。
指定设备即为集群的管理服务器。
步骤22,根据节点信息确定相应节点所属的存储服务器,并向确定出的存储服务器发送第一查询请求。
步骤23,接收存储服务器返回的查询响应,并从查询响应中获取当前游走步数。
步骤24,判断当前游走步数是否等于游走总步数,若等于,则执行步骤25。
具体的,若存储服务器判断出当前游走步数等于游走总步数,说明当前已游走到最后一步,此时,接收到的集群内其他存储服务器发送的查询响应中应该携带的是该其他存储服务器所查询到的最终查询结果,因此,分别从接收到的各个查询响应中获取节点信息(即执行步骤25)。
步骤25,从接收到的查询响应中获取节点信息。
需要说明的是,节点信息是接收到第一查询请求的存储服务器(即集群内其他存储服务器)在判断出当前为最后一个游走步时携带在所述查询响应中的。
步骤26,当根据设备信息列表判断出待返回查询响应的存储服务器均已返回查询响应时,根据获取到的各节点信息确定与所述第二查询请求对应的查询结果。
具体的,设备信息列表是集群中首个发送第一查询请求的存储服务器根据集群内其他存储服务器发送的查询响应中携带的设备信息生成的。因此,随着图游走的进行,设备信息列表在每个游走步中都会实时更新,设备信息列表是当前游走步中需要返回查询响应的存储服务器列表。
具体的,若集群中首个发送第一查询请求的存储服务器判断出当前的设备信息列表中所有存储服务器均已返回查询响应,则对从各个查询响应中获取到的节点信息进行汇总,得到查询结果,该查询结果即为与第二查询请求对应的查询结果(最终的查询结果),可以是一个或多个节点的节点信息。
步骤27,向指定设备返回携带有查询结果的查询响应。
进一步的,如图4所示,在步骤24中,若判断出当前游走步数不等于所述游走总步数,则所述分碎片存储的图数据库查询方法还可以包括以下步骤:
步骤28,从接收到的查询响应中获取设备信息。
其中,设备信息是发送所述查询响应的存储服务器的设备信息。由于当前游走步数不等于所述游走总步数,即当前未完成全部的图游走步骤,因此,此时接收到的查询响应是图游走中间步骤中产生的查询响应,相应的,该查询响应中会携带有设备信息,就需要获取该设备信息以便更新设备信息列表。
步骤29,当根据设备信息列表判断出待返回查询响应的存储服务器均已返回查询响应时,根据获取到的各设备信息更新设备信息列表。
需要说明的是,针对每个游走步来说,都需要更新设备信息列表,以保证集群中首个发送第一查询请求的存储服务器能够根据该设备信息列表准确监控每个游走步中相应的存储服务器是否完成各自的图游走。
为了清楚说明本公开的技术方案,以下结合图8所示的网络拓扑图,通过具体实例对本公开的技术方案进行详细说明。
如图8所示,网络拓扑图中包括9个节点,集群中包括A、B、C三个存储服务器,节点1、2、3及其边关系(即与节点1、2、3相关的部分网络拓扑)存储于存储服务器机器A中,节点4、5、6及其边关系(即与节点4、5、6相关的部分网络拓扑)存储于存储服务器机器B中,节点7、8、9及其边关系(即与节点7、8、9相关的部分网络拓扑)存储于存储服务器机器C中。
集群内管理服务器向存储服务器A发送第二查询请求,请求查询节点6和节点9在2个游走步之后的节点(即游走总步数为2,节点信息为节点6和节点9的信息)。存储服务器A确定出节点6属于存储服务器B、节点9属于存储服务器C,因此向存储服务器B发送第一查询请求(携带游走总步数2、节点6的信息、A的地址),以及向存储服务器C发送第一查询请求(携带游走总步数2、节点9的信息、A的地址)。存储服务器B接收到第一查询请求时,查询到节点6的下一跳节点5,并判断出节点5位于本设备,一方面,向存储服务器A返回查询响应(携带当前游走步数1、设备标识B),另一方面,继续在本设备内进行图游走,确定出节点5的下一跳节点4和一个未知节点(存储服务器B只知道节点5具有属于存储服务器C的下一跳节点,但不知该节点的信息),此时,当前的游走步为2,已达到需要游走的总步数,则一方面向存储服务器A返回最终的查询响应(携带当前的游走步2、节点4的信息、设备标识B、设备标识C),另一方面向存储服务器C发送第一查询请求,以便存储服务器C查询节点8的下一跳节点。
存储服务器C接收到存储服务器A发送的第一查询请求时,查询到节点9的下一跳节点8,并判断出节点8位于本设备,则向存储服务器A返回查询响应(携带当前游走步数1、设备标识C),并继续在本设备内进行第2步图游走。存储服务器C在第2步图游走过程中,发现节点8不存在下一跳节点,而此时也已达到需要游走的总步数,则向存储服务器A返回最终的查询响应(携带当前的游走步2、为空的节点信息)。
存储服务器C接收到存储服务器B发送的第一查询请求时,发现已针对节点8进行过图游走,因此,忽略该第一查询请求。
当存储服务器A分别接收到存储服务器B和C返回的查询响应,并分别从中获取到设备标识B和设备标识C,更新设备信息列表为[设备标识B,设备标识C]。存储服务器A在分别接收到存储服务器B和C的最终的查询响应后,分别从中获取到节点4的信息和为空的节点信息,汇总得到最终的查询结果为节点4,并将该最终的查询结果返回给管理服务器。
分碎片存储的图数据库集群一般用于存储单机无法存储和处理的数据,因此针对该图数据库的查询通常涉及到大量的节点,因此采用公开实施例的分碎片存储的图数据库查询方案进行图游走时可以大大减少网络中传输的数据量,每次存储服务器转发查询请求后只需要返回给原存储服务器当前执行查询任务的设备信息和当前的游走步即可,而一般而言,集群内服务器的数量相对固定且数量相比较整个拓扑图里的实体节点数量而言,可以忽略不计。对于一个包含数十亿甚至数百亿实体节点的图来说,进行深层遍历可以大大减少一次数据查询过程中网络数据传输量,提高查询效率并且可以避免潜在的网络拥堵风险。
基于相同的技术构思,本公开实施例还提供一种存储服务器,如图5所示,该存储服务器包括存储模块51,存储模块51用于存储网络拓扑图的一部分,同一集群内的各存储服务器分别存储所述网络拓扑图的不同部分;所述存储服务器还包括:接收模块52、获取模块53、第一处理模块54、判断模块55和发送模块56。
接收模块52用于,接收同一集群内其他存储服务器发送的第一查询请求。
获取模块53用于,获取所述第一查询请求中携带的游走总步数、节点信息和地址,所述地址为首个发送所述第一查询请求的存储服务器的地址。
第一处理模块54用于,根据所述节点信息和本地存储的网络拓扑图,确定下一跳节点;以及,根据所述下一跳节点和本地存储的网络拓扑图,确定该下一跳节点的下一跳节点。
判断模块55用于,判断当前游走步数是否等于所述游走总步数。
发送模块56用于,当所述下一跳节点中包括本地存储的网络拓扑图中的节点时,向所述地址对应的存储服务器返回携带有当前游走步数和本设备的设备标识的查询响应。
进一步的,发送模块56还用于,当判断模块55判断出当前游走步数等于所述游走总步数时,向所述地址对应的存储服务器返回携带有当前游走步数和当前游走步中确定出的节点的节点信息的查询响应。
进一步的,发送模块56还用于,当判断模块55判断出当前游走步数不等于所述游走总步数,且所述下一跳节点中包括非本地存储的网络拓扑图中的节点时,向该非本地存储的网络拓扑图中的节点所属的存储服务器发送所述第一查询请求,并向所述地址对应的存储服务器返回携带有当前游走步数和第一设备标识的查询响应;其中,第一设备标识为该非本地存储的网络拓扑图中的节点所属的存储服务器的设备标识;所述第一查询请求中携带有游走总步数、节点信息和地址,所述节点信息为所述下一跳节点中非本地存储的网络拓扑图中节点的节点信息。
如图6所示,本公开另一实施例提供的存储服务器还包括第二处理模块57。
接收模块52还用于,接收指定设备发送的第二查询请求;以及接收所述存储服务器返回的查询响应。
获取模块53还用于,获取第二查询请求中携带的游走总步数和节点信息;以及,从所述查询响应中获取当前游走步数;以及,当所述判断模块判断出当前游走步数等于所述游走总步数时,从接收到的查询响应中获取节点信息;所述节点信息是接收到所述第一查询请求的存储服务器在判断出当前为最后一个游走步时携带在所述查询响应中的。
第一处理模块54还用于,根据所述节点信息确定相应节点所属的存储服务器。
发送模块56还用于,向确定出的存储服务器发送第一查询请求;以及,向所述指定设备返回携带有所述查询结果的查询响应。
第二处理模块57还用于,当判断模块55根据设备信息列表判断出待返回查询响应的存储服务器均已返回查询响应时,根据获取到的各节点信息,得到与所述第二查询请求对应的查询结果。
进一步的,如图7所示,所述存储服务器还包括更新模块58。
获取模块53还用于,当判断模块55判断出当前游走步数不等于所述游走总步数时,从接收到的查询响应中获取设备信息,所述设备信息是发送所述查询响应的存储服务器的设备信息。
更新模块58用于,当判断模块55根据设备信息列表判断出待返回查询响应的存储服务器均已返回查询响应时,根据获取到的各设备信息更新所述设备信息列表。
本公开实施例还提供了一种电子设备,该电子设备包括:一个或多个处理器以及存储装置;其中,存储装置上存储有一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如前述各实施例所提供的分碎片存储的图数据库查询方法。
本公开实施例还提供了一种计算机可读介质,其上存储有计算机程序,其中,该计算机程序被执行时实现如前述各实施例所提供的分碎片存储的图数据库查询方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其他实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本发明的范围的情况下,可进行各种形式和细节上的改变。
Claims (12)
1.一种分碎片存储的图数据库查询方法,其中,所述方法基于网络拓扑图查询,同一集群内的各存储服务器分别存储所述网络拓扑图的不同部分,所述方法包括:
当接收到同一集群内其他存储服务器发送的第一查询请求时,获取其中携带的游走总步数、节点信息和地址,所述地址为首个发送所述第一查询请求的存储服务器的地址;
根据所述节点信息和本地存储的网络拓扑图,确定下一跳节点;
判断当前游走步数是否等于所述游走总步数;
若当前游走步数不等于所述游走总步数,则当所述下一跳节点中包括本地存储的网络拓扑图中的节点时,向所述地址对应的存储服务器返回携带有当前游走步数和本设备的设备标识的查询响应,根据所述下一跳节点和本地存储的网络拓扑图,确定该下一跳节点的下一跳节点,并返回判断当前游走步数是否等于所述游走总步数的步骤。
2.如权利要求1所述的方法,其中,所述方法还包括:
若当前游走步数等于所述游走总步数,则向所述地址对应的存储服务器返回携带有当前游走步数和当前游走步中确定出的节点的节点信息的查询响应。
3.如权利要求1所述的方法,其中,所述方法还包括:
若当前游走步数不等于所述游走总步数,则当所述下一跳节点中包括非本地存储的网络拓扑图中的节点时,向该非本地存储的网络拓扑图中的节点所属的存储服务器发送所述第一查询请求,并向所述地址对应的存储服务器返回携带有当前游走步数和第一设备标识的查询响应;
其中,第一设备标识为该非本地存储的网络拓扑图中的节点所属的存储服务器的设备标识;所述第一查询请求中携带有游走总步数、节点信息和地址,所述节点信息为所述下一跳节点中非本地存储的网络拓扑图中节点的节点信息。
4.如权利要求1-3任一项所述的方法,其中,所述方法还包括:
当接收到指定设备发送的第二查询请求时,获取其中携带的游走总步数和节点信息;
根据所述节点信息确定相应节点所属的存储服务器,并向确定出的存储服务器发送第一查询请求;
接收所述存储服务器返回的查询响应,并从所述查询响应中获取当前游走步数;
若当前游走步数等于所述游走总步数,则从接收到的查询响应中获取节点信息;所述节点信息是接收到所述第一查询请求的存储服务器在判断出当前为最后一个游走步时携带在所述查询响应中的;
当根据设备信息列表判断出待返回查询响应的存储服务器均已返回查询响应时,根据获取到的各节点信息确定与所述第二查询请求对应的查询结果,并向所述指定设备返回携带有所述查询结果的查询响应。
5.如权利要求4所述的方法,其中,在接收所述存储服务器返回的查询响应,并从所述查询响应中获取当前游走步数之后,所述方法还包括:
若当前游走步数不等于所述游走总步数,则从接收到的查询响应中获取设备信息,所述设备信息是发送所述查询响应的存储服务器的设备信息;
当根据设备信息列表判断出待返回查询响应的存储服务器均已返回查询响应时,根据获取到的各设备信息更新所述设备信息列表。
6.一种存储服务器,其中,包括存储模块,所述存储模块用于存储网络拓扑图的一部分,同一集群内的各存储服务器分别存储所述网络拓扑图的不同部分;所述存储服务器还包括:接收模块、获取模块、第一处理模块、判断模块和发送模块;
所述接收模块用于,接收同一集群内其他存储服务器发送的第一查询请求;
所述获取模块用于,获取所述第一查询请求中携带的游走总步数、节点信息和地址,所述地址为首个发送所述第一查询请求的存储服务器的地址;
所述第一处理模块用于,根据所述节点信息和本地存储的网络拓扑图,确定下一跳节点;以及,根据所述下一跳节点和本地存储的网络拓扑图,确定该下一跳节点的下一跳节点;
所述判断模块用于,判断当前游走步数是否等于所述游走总步数;
所述发送模块用于,当所述下一跳节点中包括本地存储的网络拓扑图中的节点时,向所述地址对应的存储服务器返回携带有当前游走步数和本设备的设备标识的查询响应。
7.如权利要求6所述的存储服务器,其中,所述发送模块还用于,当所述判断模块判断出当前游走步数等于所述游走总步数时,向所述地址对应的存储服务器返回携带有当前游走步数和当前游走步中确定出的节点的节点信息的查询响应。
8.如权利要求6所述的存储服务器,其中,所述发送模块还用于,当所述判断模块判断出当前游走步数不等于所述游走总步数,且所述下一跳节点中包括非本地存储的网络拓扑图中的节点时,向该非本地存储的网络拓扑图中的节点所属的存储服务器发送所述第一查询请求,并向所述地址对应的存储服务器返回携带有当前游走步数和第一设备标识的查询响应;其中,第一设备标识为该非本地存储的网络拓扑图中的节点所属的存储服务器的设备标识;所述第一查询请求中携带有游走总步数、节点信息和地址,所述节点信息为所述下一跳节点中非本地存储的网络拓扑图中节点的节点信息。
9.如权利要求6-8任一项所述的存储服务器,其中,还包括第二处理模块;
所述接收模块还用于,接收指定设备发送的第二查询请求;以及接收所述存储服务器返回的查询响应;
所述获取模块还用于,获取第二查询请求中携带的游走总步数和节点信息;以及,从所述查询响应中获取当前游走步数;以及,当所述判断模块判断出当前游走步数等于所述游走总步数时,从接收到的查询响应中获取节点信息;所述节点信息是接收到所述第一查询请求的存储服务器在判断出当前为最后一个游走步时携带在所述查询响应中的;
所述第一处理模块还用于,根据所述节点信息确定相应节点所属的存储服务器;
所述发送模块还用于,向确定出的存储服务器发送第一查询请求;以及,向所述指定设备返回携带有所述查询结果的查询响应;
所述第二处理模块还用于,当所述判断模块根据设备信息列表判断出待返回查询响应的存储服务器均已返回查询响应时,根据获取到的各节点信息,得到与所述第二查询请求对应的查询结果。
10.如权利要求9所述的存储服务器,其中,还包括更新模块;
所述获取模块还用于,当所述判断模块判断出当前游走步数不等于所述游走总步数时,从接收到的查询响应中获取设备信息,所述设备信息是发送所述查询响应的存储服务器的设备信息;
所述更新模块用于,当所述判断模块根据设备信息列表判断出待返回查询响应的存储服务器均已返回查询响应时,根据获取到的各设备信息更新所述设备信息列表。
11.一种电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-5任一项所述的分碎片存储的图数据库查询方法。
12.一种计算机可读介质,其上存储有计算机程序,其中,所述程序被执行时实现如权利要求1-5任一项所述的分碎片存储的图数据库查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910633419.3A CN110347711B (zh) | 2019-07-10 | 2019-07-10 | 分碎片存储的图数据库查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910633419.3A CN110347711B (zh) | 2019-07-10 | 2019-07-10 | 分碎片存储的图数据库查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110347711A true CN110347711A (zh) | 2019-10-18 |
CN110347711B CN110347711B (zh) | 2022-02-08 |
Family
ID=68175250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910633419.3A Active CN110347711B (zh) | 2019-07-10 | 2019-07-10 | 分碎片存储的图数据库查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110347711B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107832323A (zh) * | 2017-09-14 | 2018-03-23 | 北京知道未来信息技术有限公司 | 一种基于图数据库的分布式实现系统及方法 |
US20180189380A1 (en) * | 2015-06-29 | 2018-07-05 | Jobspotting Gmbh | Job search engine |
CN108600321A (zh) * | 2018-03-26 | 2018-09-28 | 中国科学院计算技术研究所 | 一种基于分布式内存云的图数据存储方法和系统 |
CN109271525A (zh) * | 2018-08-08 | 2019-01-25 | 北京百度网讯科技有限公司 | 用于生成知识图谱的方法、装置、设备以及计算机可读存储介质 |
CN109376153A (zh) * | 2018-09-27 | 2019-02-22 | 浪潮软件集团有限公司 | 一种基于NiFi的数据写入图数据库的系统及方法 |
CN109558502A (zh) * | 2018-12-18 | 2019-04-02 | 福州大学 | 一种基于知识图谱的城市安全数据检索方法 |
CN109634987A (zh) * | 2018-11-22 | 2019-04-16 | 全球能源互联网研究院有限公司 | 电网图数据库的查询方法及装置 |
CN109670089A (zh) * | 2018-12-29 | 2019-04-23 | 颖投信息科技(上海)有限公司 | 知识图谱系统及其图服务器 |
-
2019
- 2019-07-10 CN CN201910633419.3A patent/CN110347711B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180189380A1 (en) * | 2015-06-29 | 2018-07-05 | Jobspotting Gmbh | Job search engine |
CN107832323A (zh) * | 2017-09-14 | 2018-03-23 | 北京知道未来信息技术有限公司 | 一种基于图数据库的分布式实现系统及方法 |
CN108600321A (zh) * | 2018-03-26 | 2018-09-28 | 中国科学院计算技术研究所 | 一种基于分布式内存云的图数据存储方法和系统 |
CN109271525A (zh) * | 2018-08-08 | 2019-01-25 | 北京百度网讯科技有限公司 | 用于生成知识图谱的方法、装置、设备以及计算机可读存储介质 |
CN109376153A (zh) * | 2018-09-27 | 2019-02-22 | 浪潮软件集团有限公司 | 一种基于NiFi的数据写入图数据库的系统及方法 |
CN109634987A (zh) * | 2018-11-22 | 2019-04-16 | 全球能源互联网研究院有限公司 | 电网图数据库的查询方法及装置 |
CN109558502A (zh) * | 2018-12-18 | 2019-04-02 | 福州大学 | 一种基于知识图谱的城市安全数据检索方法 |
CN109670089A (zh) * | 2018-12-29 | 2019-04-23 | 颖投信息科技(上海)有限公司 | 知识图谱系统及其图服务器 |
Non-Patent Citations (1)
Title |
---|
KAN B ET AL.: "Topology modeling and analysis of a power grid network using a graph database", 《INTERNATIONAL JOURNAL OF COMPUTATIONAL INTELLIGENCE SYSTEMS》 * |
Also Published As
Publication number | Publication date |
---|---|
CN110347711B (zh) | 2022-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105103507B (zh) | 网络功能虚拟化的方法及装置 | |
US7065526B2 (en) | Scalable database management system | |
US9519508B2 (en) | Transaction control arrangement for device management system | |
CN104601680B (zh) | 一种资源管理方法及装置 | |
CN106161610A (zh) | 一种分布式存储的方法和系统 | |
CN104346345B (zh) | 数据的存储方法及装置 | |
US20220014434A1 (en) | Slice Resource Deployment Method and Apparatus, and Slice Manager and Computer Storage Medium | |
CN108287668A (zh) | 设备数据的处理方法及装置、计算机装置及可读存储介质 | |
CN108632055A (zh) | 网络控制的方法和装置以及通信系统 | |
CN107454019A (zh) | 软件定义网络动态带宽分配方法、装置、设备及存储介质 | |
WO2018099200A1 (zh) | 资源确定方法及装置、nfvo | |
CN110121194A (zh) | 信息传输方法及装置、计算机存储介质 | |
CN110213391A (zh) | 一种网络协议地址的配置方法及装置 | |
CN106375442A (zh) | 一种跨平台管理设备信息的方法和装置 | |
CN106130802A (zh) | 一种配置平滑方法及装置 | |
CN110417605A (zh) | 一种基于网络功能虚拟化的移动边缘计算节点放置方法 | |
CN108270677A (zh) | 一种快速路由收敛方法及装置 | |
CN107784009A (zh) | 数据查询、数据查询处理方法及装置 | |
CN112019577B (zh) | 专属云存储实现方法、装置、计算设备及计算机存储介质 | |
CN110505663A (zh) | 一种策略控制方法、装置及系统 | |
CN106817300A (zh) | 在sdn网络中控制及辅助控制用户数据流的方法和装置 | |
CN110602232A (zh) | 基于对等网络思想的终端系统版本下载方法、装置及系统 | |
CN110417777B (zh) | 一种优化的微服务间通信的方法及装置 | |
CN110347711A (zh) | 分碎片存储的图数据库查询方法及装置 | |
CN105791247A (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 |