CN115408427A - 用于数据搜索的方法、装置及设备 - Google Patents
用于数据搜索的方法、装置及设备 Download PDFInfo
- Publication number
- CN115408427A CN115408427A CN202110594906.0A CN202110594906A CN115408427A CN 115408427 A CN115408427 A CN 115408427A CN 202110594906 A CN202110594906 A CN 202110594906A CN 115408427 A CN115408427 A CN 115408427A
- Authority
- CN
- China
- Prior art keywords
- query
- subgraph
- subgraphs
- graph
- search
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 104
- 230000008569 process Effects 0.000 claims description 82
- 238000004590 computer program Methods 0.000 claims description 9
- 238000000638 solvent extraction Methods 0.000 claims description 8
- 230000000977 initiatory effect Effects 0.000 claims description 7
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000005192 partition Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 13
- 238000012795 verification Methods 0.000 description 9
- 238000000354 decomposition reaction Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 102000004169 proteins and genes Human genes 0.000 description 3
- 108090000623 proteins and genes Proteins 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000003012 network analysis Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
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/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/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- 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
-
- 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/9027—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例提供了用于数据搜索的方法、装置及设备,涉及计算机技术领域。在本公开的用于数据搜索的方法中,获取搜索请求,搜索请求包括由多个节点和多个节点之间的多条边组成的查询图,每个节点表示对象,每条边表示对象之间的关联关系。基于查询图确定多个查询子图,每个查询子图包括多个节点中的一组节点和一组节点之间的边,多个查询子图具有多个节点中的至少一个相同节点。在目标数据图中并行地搜索与多个查询子图各自匹配的数据子图。通过合并与多个查询子图各自匹配的数据子图,来确定与查询图匹配的搜索结果。通过该方案,将针对查询图的查询任务拆分成更细粒度的子任务,并且多个子任务可以并行执行,提高搜索效率。
Description
技术领域
本公开的实施例主要涉及计算机技术领域,更具体地,涉及用于数据搜索的方法、装置 及设备。
背景技术
图(graph)是计算机科学中的重要数据表示形式,通过节点和节点之间的边来表示对象 之间的关系。图模型在生物信息学、化学、软件工程、社交网络等各种领域发挥着重要的作 用。在图分析中,从给定数据图G中查找与查询图Q匹配的数据子图,这样的任务称为“子 图查询”。查找到的数据子图与查询图具有子图同构,即节点和边之间存在一一对应关系。子 图查询在实际场景中有着广泛的应用,例如知识图谱查询、蛋白质分析、模式匹配、社交网 络分析等等。
发明内容
本公开的实施例提供了一种在数据图中执行搜索的方案。
在本公开的第一方面,提供了一种用于数据搜索的方法。根据该方法,在获取搜索请求 之后,根据所述搜索请求中的查询图确定多个查询子图,其中,所述搜索请求包括由多个节 点和所述多个节点之间的多条边组成的查询图,每个节点表示对象,每条边表示对象之间的 关联关系,每个查询子图包括所述多个节点中的一组节点和所述一组节点之间的边,所述多 个查询子图具有所述多个节点中的至少一个相同节点。进一步的,在目标数据图中并行地搜 索与所述多个查询子图各自匹配的数据子图,以及通过合并与所述多个查询子图各自匹配的 数据子图,来确定与所述查询图匹配的搜索结果。
根据本公开的实施例,可以将针对查询图的查询任务拆分成更细粒度的子任务,并且多 个子任务可以并行执行,提高搜索效率。通过查询图的合理分解,使查询子图具有部分相同 路径(例如,节点和/或边),使得能够实现高效并行搜索,减少查询子图的匹配过程中所需 的全局同步次数。
在第一方面的一种实现方式中,基于所述查询图确定多个查询子图包括:通过对所述查 询图执行深度优先搜索DFS,将所述查询图转换为树结构,所述树结构包括所述查询图中的 所述多个节点以及所述多条边的至少一部分边;以及将所述树结构划分为所述多个查询子图, 每个查询子图包括从所述树结构的根节点到叶子节点的一条路径上的节点和边。由此,通过 转换为树结构来执行查询图分解,不同查询子图分别对应于树结构中的不同分支。这样,在 匹配时,针对单个查询子图,与查询子图中下一个节点匹配的节点,也是在目标数据图中匹 配节点的邻居节点。单个查询子图的部分匹配结果可以在该查询子图的节点之间传递,从而 可以实现多个查询子图的并行执行,而不需要在不同搜索进程之间同步部分匹配结果,避免 了冗余的中间结果。
在第一方面的一种实现方式中,所述多个查询子图中的点不具有跨查询子图的边的约束。 也就是说,一个查询子图中的节点不与另一查询子图中的节点具有边的约束关系。通过使所 分解的查询子图之间不具有节点之间的边的约束,在确定节点之间的边的约束时,只需在目 标数据图的邻居节点集内查找下一节点是否存在,即可隐式地完成邻居集取交集的操作,无 需像常规方案那样显式求交。
在第一方面的又一种实现方式中,所述在目标数据图中并性地搜索与所述多个查询子图 各自匹配的数据子图包括:在所述目标数据图中并性地搜索与第一查询子图和第二查询子图 各自匹配的数据子图。
在第一方面的又一种实现方式中,所述树结构不包括所述查询图的所述多条边中的第一 边,并且所述多个查询子图中的第一查询子图包括由所述第一边连接的一对节点。在第一方 面的又一种实现方式中,在目标数据图中并性地搜索与所述多个查询子图各自匹配的数据子 图包括:在所述目标数据图中搜索与所述第一查询子图匹配的候选数据子图;确定所述候选 数据子图是否包括与所述第一边匹配的边;以及如果所述候选数据子图包括与所述第一边匹 配的边,将所述候选数据子图确定为与所述第一查询子图匹配的第一数据子图。通过额外的 边验证,可以避免由于树结构的转换而导致边的约束丢失的问题,确保匹配结果的准确性。
在第一方面的又一种实现方式中,通过启动至少两个搜索进程来执行在所述目标数据图 中对所述多个查询子图的并行搜索。通过不同搜索进程,可以在分布式和集中式计算环境中 实现并行搜索。
在第一方面的又一种实现方式中,在目标数据图中并性地搜索与所述多个查询子图各自 匹配的数据子图包括:如果所述多个查询子图中的第二查询子图和第三查询子图包括从起始 节点开始的部分相同路径,控制所述至少两个搜索进程中的第一搜索进程,在所述目标数据 图中搜索与所述部分相同路径匹配的第一部分匹配子图;控制所述第一搜索进程在所述目标 数据图中搜索与所述第二查询子图中除所述部分相同路径之外的其余路径匹配的第二部分匹 配子图,所述第一部分匹配子图和所述第二部分匹配子图被级联为与所述第二查询子图匹配 的第二数据子图;以及控制所述至少两个搜索进程中的第二搜索进程在所述目标数据图中搜 索与所述第三查询子图中除所述部分相同路径之外的其余路径匹配的第三部分匹配子图,所 述第一部分匹配子图和所述第三部分匹配子图被级联为与所述第三查询子图匹配的第三数据 子图。在上述实现方式中,通过在不同查询子图的搜索过程中共享部分相同路径的匹配结果, 可以进一步提高搜索效率和节约计算资源。
在第一方面的又一种实现方式中,所述多个查询子图中的至少一个查询子图具有匹配的 多个数据子图,确定与所述查询图匹配的搜索结果包括:将与所述多个查询子图匹配的数据 子图划分为不同的多个组合,每个组合包括与所述多个查询子图中的每个查询子图匹配的不 同数据子图;以及将所述多个组合所包括的数据子图分别进行合并,以获得多个合并数据子 图作为所述搜索结果。通过合并和组合,可以确定针对查询图的完整搜索结果。
在第一方面的又一种实现方式中,确定与所述查询图匹配的搜索结果包括:通过取交集 操作,将与所述多个查询子图中每个查询子图匹配的一组数据子图合并,得到合并数据子图。 取交集操作可以被快速调用,从而快速确定针对查询图的正确搜索结果。
在本公开的第二方面,提供了一种用于数据搜索的装置。该装置包括:请求获取单元, 被配置为获取搜索请求,所述搜索请求包括由多个节点和所述多个节点之间的多条边组成的 查询图,每个节点表示对象,每条边表示对象之间的关联关系;子图确定单元,被配置为基 于所述查询图确定多个查询子图,每个查询子图包括所述多个节点中的一组节点和所述一组 节点之间的边,所述多个查询子图具有所述多个节点中的至少一个相同节点;并行搜索单元, 被配置为在目标数据图中并行地搜索与所述多个查询子图各自匹配的数据子图;以及结果确 定单元,被配置为通过合并与所述多个查询子图各自匹配的数据子图,来确定与所述查询图 匹配的搜索结果。
在第二方面的一种实现方式中,所述子图确定单元包括:树转换单元,被配置为通过对 所述查询图执行深度优先搜索DFS,将所述查询图转换为树结构,所述树结构包括所述查询 图中的所述多个节点以及所述多条边的至少一部分边;以及树划分单元,被配置为将所述树 结构划分为所述多个查询子图,每个查询子图包括从所述树结构的根节点到叶子节点的一条 路径上的节点和边。
在第二方面的一种实现方式中,所述多个查询子图中的点不具有跨查询子图的边的约束。
在第二方面的又一种实现方式中,所述并行搜索单元被配置为:在所述目标数据图中并 性地搜索与第一查询子图和第二查询子图各自匹配的数据子图。
在第二方面的又一种实现方式中,所述树结构不包括所述查询图的所述多条边中的第一 边,并且所述多个查询子图中的第一查询子图包括由所述第一边连接的一对节点。在第二方 面的又一种实现方式中,所述并行搜索单元包括:候选搜索单元,被配置为在所述目标数据 图中搜索与所述第一查询子图匹配的候选数据子图;匹配确定单元,被配置为确定所述候选 数据子图是否包括与所述第一边匹配的边;以及候选确定单元,被配置为如果所述候选数据 子图包括与所述第一边匹配的边,将所述候选数据子图确定为与所述第一查询子图匹配的第 一数据子图。
在第二方面的又一种实现方式中,通过启动至少两个搜索进程来执行在所述目标数据图 中对所述多个查询子图的并行搜索。
在第二方面的又一种实现方式中,所述并行搜索单元包括:第一控制单元,被配置为如 果所述多个查询子图中的第二查询子图和第三查询子图包括从起始节点开始的部分相同路径, 控制所述至少两个搜索进程中的第一搜索进程,在所述目标数据图中搜索与所述部分相同路 径匹配的第一部分匹配子图;第二控制单元,被配置为控制所述第一搜索进程在所述目标数 据图中搜索与所述第二查询子图中除所述部分相同路径之外的其余路径匹配的第二部分匹配 子图,所述第一部分匹配子图和所述第二部分匹配子图被级联为与所述第二查询子图匹配的 第二数据子图;以及第三控制单元,被配置为控制所述至少两个搜索进程中的第二搜索进程 在所述目标数据图中搜索与所述第三查询子图中除所述部分相同路径之外的其余路径匹配的 第三部分匹配子图,所述第一部分匹配子图和所述第三部分匹配子图被级联为与所述第三查 询子图匹配的第三数据子图。
在第二方面的又一种实现方式中,所述多个查询子图中的至少一个查询子图具有匹配的 多个数据子图,所述结果确定单元包括:组合单元,被配置为将与所述多个查询子图匹配的 数据子图划分为不同的多个组合,每个组合包括与所述多个查询子图中的每个查询子图匹配 的不同数据子图;以及组合合并单元,被配置为将所述多个组合所包括的数据子图分别进行 合并,以获得多个合并数据子图作为所述搜索结果。
在第二方面的又一种实现方式中,所述结果确定单元被配置为:通过取交集操作,将与 所述多个查询子图中每个查询子图匹配的一组数据子图合并,得到合并数据子图。
在本公开的第三方面,提供了一种电子设备。该电子设备包括:至少一个计算单元;至 少一个存储器,至少一个存储器被耦合到至少一个计算单元并且存储用于由至少一个计算单 元执行的指令,指令当由至少一个计算单元执行时,使得设备执行第一方面或者第一方面中 的任意一种实现方式中的方法。
在本公开的第四方面,提供了一种计算机可读存储介质。计算机可读存储介质存储有一 条或多条计算机指令,其中一条或多条计算机指令被处理器执行实现第一方面或者第一方面 中的任意一种实现方式中的方法。
在本公开的第五方面,提供一种计算机程序产品。计算机程序产品包括计算机可执行指 令,计算机可执行指令在被处理器执行时,使计算机执行第一方面或者第一方面中的任意一 种实现方式中的方法的部分或全部步骤的指令。
可以理解地,上述提供的第二方面的用于数据搜索的装置、第三方面的电子设备、第四 方面的计算机存储介质或者第五方面的计算机程序产品均用于实现第一方面所提供的方法。 因此,关于第一方面的解释或者说明同样适用于第二方面、第三方面、第四方面和第五方面。 此外,第二方面、第三方面、第四方面和第五方面所能达到的有益效果可参考对应方法中的 有益效果,此处不再赘述。
本发明的这些和其它方面在以下(多个)实施例的描述中会更加简明易懂。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得 更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:
图1A示出了本公开的多个实施例能够在其中实现的示例环境的示意图;
图1B示出了本公开的多个实施例能够在其中实现的另一示例环境的示意图;
图2示出了根据本公开的一些实施例的用于数据搜索的过程的流程图;
图3A至图3E示出了根据本公开的一些实施例的数据搜索过程中的示例图;
图4示出了根据本公开的一些实施例的用于数据搜索的装置的框图;以及
图5示出了可以用来实施本公开的实施例的示例设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例, 然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的 实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开 的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包 括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实 施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的 对象。下文还可能包括其他明确的和隐含的定义。
在本文中,“图”指的是一种抽象的数据类型,其能够用于指示多个对象以及多个对象之 间的关联关系。在一些实施例中,图105的节点和边可能还会具有相关联的属性或特征。对 象可以被表示为图中的节点(也称为顶点),对象之间的连接关系可以被表示为图中的连接节 点的边。图可以由是二元组(V,E)表示,其中V称为节点集,E称为边集。图可以分为有 向图或无向图。在子图查询应用中,“数据图”指的是给定的目标数据,“查询图”指的是要 从数据图中查找的图部分。
图在很多实际应用和场景中均可存在。如果既要指示对象又要指示对象之间的关联关系, 就可以由图来表示。例如,在知识图谱中,图中的节点表示各种实体,边表示这些实体之间 存在关联关系,并且可能还会标注具体属性。在蛋白质分析中,图中的节点表示蛋白质的组 成成分,边表示这些组成成分之间的连接关系。在模式匹配中,图中的节点表示模式中的各 个元素,边表示这些元素之间的连接关系。在社交网络分析中,图中的节点可以表示人、组 织等对象,边表示这些对象之间的社交关系。
随着各领域数据量的剧增,图的规模不断扩大,对于大规模数据图的搜索效率成为问题。 首先,大规模的图(比如,拥有几十亿个节点的社交网络图)可能无法存入单机内存中。若 将图存储在外存中,则读写数据都不再符合局部性原理,从而导致性能瓶颈。其次,即使能 够将大规模的图能放入内存,已有的单机子图查询算法往往依赖于超线性的索引结构,然而 这种索引在大规模图上是不可能实现的。
在常规方案中,为了解决搜索效率问题,将大规模图以分布式方式存储到不同存储位置, 并且利用分布式计算***实行多个查询图之间的并行化,从而提高计算效率。然而,针对单 个查询图,仍然需要逐个串行执行搜索才能获得正确搜索结果。
根据本公开的实施例,提出了一种改进的数据搜索方案。根据本方案,将查询图以特定 方式分解为多个查询子图,例如基于深度优先搜索(DFS)进行分解。这样,使多个查询子 图具有至少一个相同节点。在目标数据图中并行搜索多个查询子图各自匹配的数据子图,可 以显著提高并行搜索效率。所得到的数据子图通过合并,确定出查询图匹配的搜索结果。通 过该方案,将针对查询图的查询任务拆分成更细粒度的子任务,并且多个子任务可以并行执 行,提高搜索效率。
下文将参考附图来详细讨论本公开的示例实施例。
图1A和图1B分别示出了本公开的多个实施例能够在其中实现的示例计算环境的示意图。 本公开的实施例所提出的针对查询图的数据搜索过程可以被实现在图1A和图1B中的任一计 算环境中。
图1A示出了分布式计算环境100,包括分布式计算***110和分布式存储***120。分 布式计算***110包括主控节点112和多个工作节点114-1、114-2、114-3等(为便于讨论, 统称为或单独称为工作节点114)。主控节点112和工作节点114可以被配置为执行特定计算 任务,并且主控节点112可以控制和管理针对任务的请求、任务到工作节点114的分发、工 作节点114之间的协调等。工作节点114可以根据主控节点112的请求而执行一个或多个计 算操作。主控节点112和工作节点114可以包括任何具有计算能力的物理设备或虚拟设备, 诸如服务器、大型机、通用计算机、虚拟机等等。
分布式存储***120包括多个存储装置112-1、112-2、112-3、112-4等(为便于讨论, 统称为或单独称为存储装置112),用于提供数据存储能力。分布式存储***120可以利用各 种存储技术来实现数据的分布式存储,这样的存储技术的示例例如包括Hadoop分布式文件 ***(HDFS)、分布式数据库(DB)等。
在子图查询应用中,可以以分布的方式存储数据图130。例如,如图所示,数据图130 的不同部分133-1、132-2、132-3、132-4等可以分别被存储在多个存储装置112-1、112-2、112-3、 112-4中。这在大规模数据图的情况下特别有利。当然,数据图130在分布式存储***120 中的分布方式取决于所采用的存储技术,本公开的实施例在此方面不受限制。在执行搜索时, 分布式计算***110从各个存储装置112访问要用于确定匹配的数据图130的各个部分。
分布式计算***110可以接收到搜索请求,该搜索请求指示查询图102。分布式计算系 统110中的主控节点112和各个工作节点114可以针对查询图102,从数据图130中查找与之 匹配的数据子图,并且提供搜索结果105。主控节点112和工作节点114可以如下文将详细 讨论的,以并行方式执行针对查询图102的搜索,以提供更高的查询效率。
图1B示出了集中式计算环境105,其包括计算装置140和存储装置150。在图1B的示例中,数据图130被集中存储在存储装置150中。计算装置140可以接收到要搜索的查询图102,并且从存储装置150访问数据图130。由于数据图130被集中存储,计算装置140可以 更快速访问到需要用于匹配的数据部分并且执行匹配。计算装置140可以如下文将详细讨论的,以并行方式执行针对查询图102的搜索,以提供更高的查询效率。在完成匹配后,计算装置140提供搜索结果105。计算装置140可以包括任何具有计算能力的物理设备或虚拟设备,诸如服务器、大型机、通用计算机、虚拟机等等。
虽然在图1A和图1B中分别示出了分布式和集中式计算环境,在其他实施例中,分布式 计算***可以访问以集中式方式存储的数据,而在被配置为执行数据搜索的单个计算装置可 以从分布式存储***中访问数据。
图2示出了根据本公开的一些实施例的用于数据搜索的过程200的流程图。过程200例 如可以由图1A中的分布式计算***110处或图1B的计算装置140处。为了方便描述,以下 将参考图1A或图B来描述过程200。
在框210,分布式计算***110或计算装置140获取搜索请求。该搜索请求包括查询图 102,以请求要搜索该查询图102。在本文中,查询图102包括多个节点和多个节点之间的多 条边,其中每个节点表示对象,每条边表示对象之间的关联关系。在一些示例中,同一节点 可以具有连接到自己的边。
图3A示出了查询图102的示例,其包括由A、B、C、D等标签分别表示的多个节点, 节点之间存在边的连接。注意,在图3A中,相同标签(例如,A、B、C、D)的节点重复出 现,均指代相同节点,但指示在不同处出现指示该节点与其他不同节点连接的边不同。在图 3A中仅示出了查询图102的一种表示形式,也可以以其他形式来表示查询图102。应当理解, 图3A以及后续示出的数据图130仅被提供作为示例,以便更好理解本公开的实施例。图中 所示的节点的数目以及节点之间的连接关系均不构成对本公开的限制。
在框220,分布式计算***110或计算装置140基于查询图102来确定多个查询子图。
如以上简述的,在本公开的实施例中,要将针对单个查询图102的搜索任务划分为多个 子任务来并行执行,因此将查询图102分解为多个查询子图,从而使得能够在每个子任务中 执行针对单个或部分查询子图的搜索。分解得到的每个查询子图包括查询图102中的多个节 点中的一组节点和一组节点之间的边,多个查询子图具有多个节点中的至少一个相同节点。
发明人发现,在将查询图分解为多个查询子图时,如果仅是将查询图拆解为不重叠的部 分,可能会产生大量的冗余中间匹配结果。这是因为所分解的部分之间也具有边的约束关系, 使得针对这些部分确定得到的中间匹配结果不一定是与查询图的匹配结果,导致需要在中间 匹配结果执行大量验证。
在本公开的实施例中,在分解查询图102时,以特定方式从查询图102中某个节点开始 进行分解,从而使得多个查询子图至少具有一个相同节点。在一些实施例中,在分解查询图 102时,多个查询子图中的点不具有跨查询子图的边的约束。也就是说,一个查询子图中的 节点不与另一查询子图中的节点具有边的约束关系。
在一些实施例中,提出了基于深度优先搜索DFS的查询图分解。具体地,可以对查询图102执行深度优先搜索DFS,将查询图102转换为树结构,并且从树结构划分多个查询子图。
在本文中,“树结构”或“树”是由多个节点组成一个具有层次关系的集合。之所以称之 为“树”,是因为该结构看起来像一棵倒挂的树,其根朝上,而叶朝下。树结构的一些特点包 括:每个节点会连接到有限数目的子节点或无子节点;没有父节点的节点称为根节点;没有 子节点的节点称为叶子节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子 节点可以分为多个不相交的子树;树里面没有环路。
DFS是一种用于遍历或搜索树或图的算法。这个算法会尽可能深地搜索树的分支。当图 中的某个节点v的所在的边都己被访问后,搜索将回溯到发现节点v的那条边的起始节点。 这一过程一直进行到发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选 择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。在 一些实施例中,在对查询图102执行DFS后,可以按DFS遍历过程中对各个节点的访问顺 序,将查询图102转换为树结构。
在图3A中,在对查询图102执行DFS后,多个节点按访问顺序被标记为u1、u2、u3、u4、u5、u6,从而可以被转换为树结构310。通过访问顺序和节点名,可以唯一标识节点及其不同的边连接关系。如图所示,该树结构310的根节点是节点B u1,从非根节点C u2开始, 树结构310包括两个路径分支。
在从树结构划分为多个查询子图,每个查询子图可以包括从树结构的根节点到叶子节点 的一条路径上的节点和边。这样,从查询图102分解的多个查询子图至少具有相同的根节点。 在一些情况下,取决于具体的树结构,除了根节点之外,多个查询子图还可以共享一个或多 个非根节点。这样,多个查询子图具有部分相同路径,并且还具有部分不同路径。由DFS生 成的树结构可以具有以下特征:非树边所连接的两个节点一定是祖先和子孙的关系。因此, 数结构中的不同路径之间及存在边的约束关系,从而可以快速地划分成期望的查询子图。
在图3A的示例中,可以从树结构310的根节点B u1开始,沿着节点C u2的左边分支路 径划分得到一个查询子图320-1。此外,还可以从树结构310的根节点B u1开始,沿着节点C u2的右边分支路径划分得到一个查询子图320-2。查询子图320-1和320-2(有时为便于讨论, 通称为查询子图320)包括从起始节点(即,树结构中的根节点)开始的部分相同路径322, 包括根节点B u1和与根节点相连的节点C u2。此外,查询子图320-1和320-2还包括不同部 分路径324,其中查询子图320-1中的不同部分路径324包括与节点C u2相连的节点Bu3和 与节点B u3相连的节点A u4;查询子图320-2中的不同部分路径324包括与节点C u2相连的 节点C u5和与节点C u5相连的节点D u6。
在一些实施例中,经过转换后,树结构可能不包括查询图102中的一条或多条边。也就 是说,树结构包括查询图102中的所有节点,但这些节点中的一条或多个边可能未被包括到 树结构中。例如,在图3A中,查询图102中,节点C u2与节点A u4之间由一条边连接,但 在转换为树结构310时,节点C u2与节点A u4之间边未能被包括到树结构中。这样的边称为 “非树边”。在缺失边的情况下,从树结构划分得到的多个查询子图中也会缺失这条边的约束, 具体是包括由这两条边所连接的节点的查询子图中会缺失这条边。在图3A中,在树结构310 和查询子图320-1中,非树边由虚线表示。
在一些实施例中,为了提高匹配结果的准确度,可以记录查询子图中的非树边,并且在 获得该查询子图的部分匹配结果后,再执行针对非树边的验证,以确定该部分匹配结果是否 符合查询图102中对这两个节点的边的约束。针对非树边的具体验证将在下文中详细描述。
在框230,分布式计算***110或计算装置140在目标数据图中并行地搜索与多个查询 子图各自匹配的数据子图。
对于要搜索的数据图(即,目标数据图)可以由搜索的请求方具体指定,或者可以以其 他方式确定(例如要求搜索所存储的全部数据图)。在图1A和图1B的环境中,假设数据图 130是要搜索的目标数据图。由于多个查询子图的搜索可以独立执行,为提高搜索效率,可 以采用并行方式执行搜索。
在一些实施例中,可以通过启动至少两个搜索进程来执行在目标数据图130中对多个查 询子图的并行搜索。例如,不同搜索进程可以并性地执行不同查询子图的搜索。举例来说, 在图1A的分布式计算环境中,分布式计算***110中的主控节点112可以控制不同工作节点 114启动不同的搜索进程。在一些示例中,主控节点112可以执行查询图102到多个查询子 图的划分,并将多个查询子图发送到各个工作节点114以进行并行搜索。在图1B的示例计算 环境中,计算装置140可以利用其并行计算能力,通过启动多个搜索进程来快速完成搜索。
在一些实施例中,所启动的搜索进程的数目可以等于查询子图的数目,使单个搜索进程 可以执行针对单个查询子图的搜索。在另一些实施例中,所启动的搜索进程的数目也可以小 于查询子图的数目。例如,单个搜索进程可以执行多个查询子图中的两个或更多个查询子图 的搜索。这些取决于具体的计算能力和配置。
在一些实施例中,目标数据图130可以被存储在用于并行执行的多个搜索进程的本地存 储空间中,相较于保存在分布式数据库中,访问数据的时间大幅降低。由于不需要在机器间 传输数据图,可以减少传输的信息量。
在针对查询子图的搜索中,可以从查询子图的起始点(例如,树结构的根节点)开始, 从目标数据图130确定与起始点匹配的节点,作为部分匹配子图。然后,继续从目标数据图 130中匹配节点相连的一个或多个邻居节点中查找与查询子图的下一个节点匹配的节点,以 增加到部分匹配子图中。通过重复这样的步骤来不断增加部分匹配子图,在检查查询子图的 所有节点和边的约束后,最终的部分匹配子图可以作为与该查询子图匹配的数据子图。
如以上提及的,所分解的查询子图之间不具有节点之间的边的约束,特别是在基于DFS 得到树结构来进行查询图分解的实施例中,不同查询子图分别对应于树结构中的不同分支。 因此,在匹配时,针对单个查询子图,与查询子图中下一个节点匹配的节点,也是在目标数 据图中匹配节点的邻居节点。单个查询子图的部分匹配结果可以在该查询子图的节点之间传 递。这样的查询策略不同于在整个查询图中按顺序逐个匹配节点。本公开的实施例中所分解 的查询子图的搜索可以并行执行。在并行搜索过程中,不同搜索进程之间不需要同步部分匹 配结果(例如,部分匹配子图),避免了冗余的中间结果,单个搜索进程可以完成单个查询子 图的匹配。如下文将会描述的,多个搜索进程得到的匹配结果可以送到某个搜索进程进行汇 总,从而得到针对查询图102的最后匹配结果。
在一些实施例中,如果多个查询子图中的某个查询子图包括“非树边”,即从树结构分解 到的该查询子图时,其中原本存在于查询图102中的两个节点之间的边未能被包含到查询子 图中,在从数据图130搜索得到与该查询子图匹配的结果要执行进一步的验证。具体地,可 以在目标数据图130中搜索与该查询子图匹配的一个或多个候选数据子图,并确定每个候选 数据子图是否包括与“非树边”匹配的边。在边匹配时,从候选数据子图中定位与查询子图 中由“非树边”所连接的两个节点相匹配的节点,然后确定该候选数据子图中的这两个节点 是否存在边的连接。由此,如果候选数据子图包括与“非树边”匹配的边,将该候选数据子 图确定为与该查询子图匹配的数据子图。未包括与“非树边”匹配的边的候选数据子图将被 删除。在一些实施例中,如果某个查询子图中存在多条“非树边”或者多个查询子图中均各 自存在“非树边”,均可以以类似方式进行验证。
在一些情况中,两个或更多查询子图可能包括从起始节点开始的部分相同路径,如图3B 的示例中的部分相同路径322。为提高搜索效率和节约计算资源,在一些实施例中,针对部 分相同路径的查询可以作为共享查询任务,由单个搜索进程来执行。针对部分相同路径得到 的部分匹配结果可以在多个搜索进程之间共享。然后,多个搜索进程可以在部分匹配结果的 基础上,并行执行针对查询子图中的其余路径的搜索。
具体地,如果两个或更多查询子图可能包括从起始节点开始的部分相同路径,可以首先 控制其中一个搜索进程来在目标数据图130中搜索与部分相同路径匹配的第一部分匹配子图。 然后,该搜索进程可以继续在目标数据图130中搜索与一个查询子图中除部分相同路径之外 的其余路径匹配的第二部分匹配子图,并将第一部分匹配子图和第二部分匹配子图级联为与 该查询子图匹配的数据子图。另一搜索进程可以被控制为在目标数据图130中搜索与另一查 询子图中除部分相同路径之外的其余路径匹配的第三部分匹配子图,并将第一部分匹配子图 和第三部分匹配子图级联为与对应查询子图匹配的数据子图。如果部分相同路径存在于两个 以上的查询子图,其他搜索进程也可以类似地,只需要执行对应查询子图中除部分相同路径 之外的其余路径的搜索,并将第一部分匹配子图和搜索到的部分匹配子图级联为与对应查询 子图匹配的数据子图。
应当理解,在其他实施例中,也可以选择不共享针对部分相同路径的部分匹配结果,多 个搜索进程可以独立执行针对具有部分相同路径的查询子图的并行搜索。
为更好理解上述实施例中的搜索过程,将参考附图来举例说明。
图3B示出了示例的目标数据图130,其包括由A、B、C、D等标签分别表示的多个节点,节点之间存在边的连接。注意,在图3B中,相同标签(例如,A、B、C、D)的节点重 复出现,均指代相同节点,但指示在不同处出现指示该节点与其他不同节点连接的边不同。 因此,在图中由vi(i=1至9)来指示具有不同边连接的不同节点。
期望在图3B的目标数据图130中,查找与图3A的示例中示出的查询子图320-1和320-2 各自匹配的数据子图。分布式计算***110或计算装置140可以启动两个搜索进程来执行针 对查询子图320-1和320-2的并行搜索。
具体地,由于查询子图320-1和320-2具有部分相同路径322,可以启动一个搜索进程, 从根节点B u1开始匹配。在图3B的示例目标数据图130中,可以搜索到标签为B的节点(v1,v3,v10)与查询子图中的节点B u1匹配,从而得到部分匹配结果(v1,v3,v10),每个节点被认为是一个部分匹配子图中的一个点。
然后,在目标数据图130中,继续从各个标签为B的节点(v1,v3,v10)相连的邻居节点中 搜索是否包括与节点B u1的下一节点C u2匹配的节点。在目标数据图130中,每个节点(v1,v3,v10)均连接到标签为C的节点(v2),且该节点与查询子图中的节点C u2匹配。此时,目标数据图130中的标签为B的节点(v1,v3,v10)与标签为C的邻居节点(v2)必然存在边的 约束关系,这也能匹配到查询子图中节点B u1与节点C u2之间的边的约束关系。通过加入匹配的节点,可以得到三个部分匹配子图{v1,v2},{v3,v2},{v10,v2}。
三个部分匹配子图作为部分相同路径322的匹配结果。然后,在一些示例中,可以利用 两个搜索进程来执行针对查询子图320-1和320-2的不同部分路径324的并行搜索。
具体地,针对查询子图320-1,从目标数据图130中标签为C的节点(v2)相连的邻居节点中搜索是否包括与查询子图320-1中下一节点B u3匹配的节点。在图3B的示例中,可以查找到这样的匹配的标签为B的节点(v1,v3,v10)。对于标签为B的节点(v1),在被加入先前部分匹配子图后,可以得到更新的两个部分匹配子图{v3,v2,v1},{v10,v2,v1};对于标签为B 的节点(v3),在被加入先前部分匹配子图后,可以得到更新的两个部分匹配子图 {v1,v2,v3},{v10,v2,v3};对于标签为B的节点(v10),在被加入先前部分匹配子图后,可以得 到更新的两个部分匹配子图{v1,v2,v10},{v3,v2,v10}。
对于全部得到的六个部分匹配子图,可以继续从各个部分匹配子图中最后一个节点相连 的邻居节点中搜索是否包括与查询子图320-1中下一节点A u4匹配的节点。在图3B的示例 中,可以查找到这样的匹配的标签为A的节点(v4,v11)。
对于标签为A的节点(v4),先前四个部分匹配子图 {v3,v2,v1},{v10,v2,v1},{v1,v2,v3},{v10,v2,v3}的最后一个节点都连接到该节点A(v4)。在加 入节点A(v4),四个部分匹配子图被更新为 {v3,v2,v1,v4},{v10,v2,v1,v4},{v1,v2,v3,v4},{v10,v2,v3,v4},这些作为查询子图320-1的候选数 据子图。考虑到查询子图320-1中节点A u4与节点C u2之间存在“非树边”,可以在候选数 据子图中验证。通过验证发现,四个候选数据子图中与节点C u2和节点A u4分别匹配的节点 C v2和节点A v4之间均没有边的约束。因此,这些候选数据子图匹配失效,不能作为与查询 子图320-1匹配的数据子图。
对于标签为A的节点(v11),先前两个部分匹配子图{v1,v2,v10},{v3,v2,v10}的最后一个 节点都连接到该节点A(v11)。在加入节点A(v11),四个部分匹配子图被更新为 {v1,v2,v10,v11},{v3,v2,v10,v11},作为查询子图320-1的候选数据子图。还可以对这些部分匹 配子图执行“非树边”。通过验证发现,四个候选数据子图中与节点C u2和节点A u4分别匹 配的节点C v2和节点A v11之间具有边的约束。因此,这些候选数据子图可以被确定为与查 询子图320-1匹配的数据子图。
在针对查询子图320的并行搜索中,从与部分相同路径322匹配的部分匹配子图{v1,v2},{v3,v2},{v10,v2}出发,从目标数据图130中标签为C的节点(v2)相连的邻居节点中搜索是否包括与查询子图320-2中下一节点C u5匹配的节点。在图3B的示例中,可以查找到这样的匹配的标签为C的节点(v5,v8)。对于标签为C的节点(v5),在被加入先前部分匹 配子图后,可以得到更新的三个部分匹配子图{v1,v2,v5},{v3,v2,v5},{v10,v2,v5};对于标签为 C的节点(v8),在被加入先前部分匹配子图后,可以得到更新的三个部分匹配子图 {v1,v2,v8},{v3,v2,v8},{v10,v2,v8}。
对于全部得到的六个部分匹配子图,可以继续从各个部分匹配子图中最后一个节点相连 的邻居节点中搜索是否包括与查询子图320-2中下一节点D u6匹配的节点。在图3B的示例 中,可以查找到这样的匹配的标签为D的节点(v6,v7,v9)。
对于标签为D的节点(v6),先前三个部分匹配子图{v1,v2,v5},{v3,v2,v5},{v10,v2,v5}的 最后一个节点都连接到该节点D(v6)。在加入节点D(v6),三个部分匹配子图被更新为{v1,v2,v5,v6},{v3,v2,v5,v6},{v10,v2,v5,v6}。对于标签为D的节点(v7),先前三个部分匹配子图{v1,v2,v5},{v3,v2,v5},{v10,v2,v5}的最后一个节点都连接到该节点D(v6)。在加入节点D (v6),三个部分匹配子图被更新为{v1,v2,v5,v7},{v3,v2,v5,v7},{v10,v2,v5,v7}。对于标签为D 的节点(v7),先前三个部分匹配子图{v1,v2,v5},{v3,v2,v5},{v10,v2,v5}的最后一个节点都连 接到该节点D(v9)。在加入节点D(v9),三个部分匹配子图被更新为 {v1,v2,v8,v9},{v3,v2,v8,v9},{v10,v2,v8,v9}。由于查询子图320-2中未被标识有“非树边”,不 需要对这些部分匹配子图执行额外验证,因此这九个部分匹配子图均可以被确定为与查询子 图320-2匹配的数据子图。
继续参考回图2,在流程200中,完成查询子图的搜索后,在框240,分布式计算***110或计算装置140通过合并与多个查询子图各自匹配的数据子图,来确定与查询图102匹配的搜索结果。在一些实施例中,不同搜索进程获得的数据子图可以被提供到某个搜索进程 中执行合并。例如,在图1A的示例环境中,不同工作节点114可以将各自针对查询子图搜索到的数据子图提供给主控节点112进行匹配。在图1B的示例环境中,可以由计算装置140中用于执行某个查询子图的搜索进程或者启动新的搜索进程来执行数据子图的合并。
在本公开的实施例中,在并行执行多个查询子图的搜索后,对各个查询子图匹配的数据 字体进行汇总和合并,可以进一步压缩中间结果的大小,不需要在搜索中间过程中多次跨子 图拼接。
具体地,在执行与多个查询子图各自匹配的数据子图的合并时,可以通过取交集操作来 确定与完整的查询图102匹配的合并数据子图,该目标数据子图与查询图102具有子图同构, 其中节点和边具有一一对应关系。在取交集操作中,如果某个查询子图具有匹配的多个数据 子图,可以将这些数据子图与其他查询子图匹配的数据子图进行组合,得到多个组合,每个 组合包括与多个查询子图中的每个查询子图匹配的不同数据子图。然后,可以将多个组合所 包括的数据子图分别进行合并,以获得多个合并数据子图作为搜索结果。
图3C示出了合并多个数据子图的示例。在图3C中,左侧示出了由查询图102转换得到 的树结构310。针对查询子图310-1,其匹配的数据子图{v1,v2,v10,v11}可以与查询子图310-2 的匹配的数据子图{v1,v2,v5,v6}、{v1,v2,v5,v7}和{v1,v2,v8,v9}具有交集,取交集的结果如图 3C中的330-1所示。取交集后得到合并数据子图 {v1,v2,v10,v11,v5,v6},{v1,v2,v10,v11,v5,v7},{v1,v2,v10,v11,v8,v9}。图3D中示出了这些合并 数据子图340-1、340-2和340-3的结构。
针对查询子图310-1的另一匹配数据子图{v3,v2,v10,v11},其与查询子图310-2的匹配的 数据子图{v3,v2,v5,v6}、{v3,v2,v5,v7}和{v3,v2,v8,v9}具有交集,取交集的结果如图3C中的 330-2所示。取交集后得到合并数据子图 {v3,v2,v10,v11,v5,v6},{v3,v2,v10,v11,v5,v7},{v3,v2,v10,v11,v8,v9}。图3E中示出了这些合并 数据子图340-4、340-5和340-6的结构。
针对查询子图310-2的其他匹配数据子图{v10,v2,v5,v6},{v10,v2,v5,v7}和{v10,v2,v8,v9}, 其与查询子图310-1中的任何匹配数据子图均没有交集,如图3C中的330-3所示,因此不能 够成查询图102的搜索结果。
不同合并数据子图可以共同构成针对查询图102的搜索结果105。在一些实施例中,如 果在针对某个查询子图的搜索中,无法查找到与之匹配的数据子图,分布式计算***110或 计算装置140可以确定针对查询图102的搜索结果为匹配失败。单个查询子图无法找到匹配 的情况可以包括在数据图130中无法查找到与该查询子图中的一个或多个节点和/或边无法匹 配的节点和/或边,或者针对“非树边”的验证无法通过。在一些实施例中,在一个或多个查 询子图的匹配失败而其他查询子图的匹配成功的情况下,也可以将其他查询子图匹配的数据 子图进行合并,并返回部分匹配搜索结果。这可能对搜索请求的发起方来说也是有益的。
根据本公开的实施例,所分解的查询子图之间不具有节点之间的边的约束,使得在确定 节点之间的边的约束时,只需在目标数据图的邻居节点集内查找下一节点是否存在,即可隐 式地完成邻居集取交集的操作,无需像常规方案那样显式求交。在一些实施例中,在树结构 基础上分解查询图,树结构中同一层的匹配可以同步进行,树的深度不会超过查询子图路径 的长度。因此,相比于已有方案采用的线性匹配顺序,可以减少全局同步的次数。
此外,由于用于执行匹配查询子图是树结构中的分支路径,可以利用节点之间的消息传 递完成部分匹配的增长。在检查边的约束时,只需在邻居节点集内查找节点是否存在,即可 隐式地完成取交集的操作,无需像现有方案一样显式取交集。
此外,为节省存储空间开销和复制数据所导致的时间开销,在发送和接收部分匹配结果 时,每个搜索进程可以只需要存储一份部分匹配结果。每个搜索进程中的节点通过指针指向 这份部分匹配结果。这极大地降低了通信代价,提高了运行速度。
在一些实施例中,由于可以将查询图分解成部分独立的查询子图,因此这一分解可以运 用到动态图子图匹配中。当目标数据图发生变化时,只需要调整受影响的查询子图的匹配情 况,而对那些未受影响的查询路径可以无需再次匹配。
图4示出了根据本公开的一些实施例的用于数据搜索的装置400的示意性框图。装置400 可以被实现为或者被包括在图1A的分布式计算环境100中、可以被实现为或者被包括在图 1A的主控节点112和/或工作节点114、或者可以被实现为或者被包括在图1B的计算装置140。
装置400可以包括多个模块,以用于执行如图2中所讨论的过程200中的对应步骤。如 图4所示,装置400包括请求获取单元410,被配置为获取搜索请求,搜索请求包括由多个节点和多个节点之间的多条边组成的查询图,每个节点表示对象,每条边表示对象之间的关 联关系;子图确定单元420,被配置为基于查询图确定多个查询子图,每个查询子图包括多 个节点中的一组节点和一组节点之间的边,多个查询子图具有多个节点中的至少一个相同节 点;并行搜索单元430,被配置为在目标数据图中并行地搜索与多个查询子图各自匹配的数 据子图;以及结果确定单元440,被配置为通过合并与多个查询子图各自匹配的数据子图, 来确定与查询图匹配的搜索结果。
在一些实施例中,子图确定单元420包括:树转换单元,被配置为通过对查询图执行深 度优先搜索DFS,将查询图转换为树结构,树结构包括查询图中的多个节点以及多条边的至 少一部分边;以及树划分单元,被配置为将树结构划分为多个查询子图,每个查询子图包括 从树结构的根节点到叶子节点的一条路径上的节点和边。
在一些实施例中,多个查询子图中的点不具有跨查询子图的边的约束。
在一些实施例中,并行搜索单元430被配置为:在目标数据图中并性地搜索与第一查询 子图和第二查询子图各自匹配的数据子图。
在一些实施例中,树结构不包括查询图的多条边中的第一边,并且多个查询子图中的第 一查询子图包括由第一边连接的一对节点。在一些实施例中,并行搜索单元430包括:候选 搜索单元,被配置为在目标数据图中搜索与第一查询子图匹配的候选数据子图;匹配确定单 元,被配置为确定候选数据子图是否包括与第一边匹配的边;以及候选确定单元,被配置为 如果候选数据子图包括与第一边匹配的边,将候选数据子图确定为与第一查询子图匹配的第 一数据子图。
在一些实施例中,通过启动至少两个搜索进程来执行在目标数据图中对多个查询子图的 并行搜索。
在一些实施例中,并行搜索单元430包括:第一控制单元,被配置为如果多个查询子图 中的第二查询子图和第三查询子图包括从起始节点开始的部分相同路径,控制至少两个搜索 进程中的第一搜索进程,在目标数据图中搜索与部分相同路径匹配的第一部分匹配子图;第 二控制单元,被配置为控制第一搜索进程在目标数据图中搜索与第二查询子图中除部分相同 路径之外的其余路径匹配的第二部分匹配子图,第一部分匹配子图和第二部分匹配子图被级 联为与第二查询子图匹配的第二数据子图;以及第三控制单元,被配置为控制至少两个搜索 进程中的第二搜索进程在目标数据图中搜索与第三查询子图中除部分相同路径之外的其余路 径匹配的第三部分匹配子图,第一部分匹配子图和第三部分匹配子图被级联为与第三查询子 图匹配的第三数据子图。
在一些实施例中,多个查询子图中的至少一个查询子图具有匹配的多个数据子图,结果 确定单元440包括:组合单元,被配置为将与多个查询子图匹配的数据子图划分为不同的多 个组合,每个组合包括与多个查询子图中的每个查询子图匹配的不同数据子图;以及组合合 并单元,被配置为将多个组合所包括的数据子图分别进行合并,以获得多个合并数据子图作 为搜索结果。
在一些实施例中,结果确定单元440被配置为:通过取交集操作,将与多个查询子图中 每个查询子图匹配的一组数据子图合并,得到合并数据子图。
图5示出了可以用来实施本公开的实施例的示例设备500的示意性框图。设备500可以 被实现为或者被包括在图1A的分布式计算环境100中、可以被实现为或者被包括在图1A的 主控节点112和/或工作节点114、或者可以被实现为或者被包括在图1B的计算装置140。
如图所示,设备500包括计算单元501,其可以根据存储在随机存取存储器(RAM)和/ 或只读存储器(ROM)502的计算机程序指令或者从存储单元507加载到RAM和/或ROM502 中的计算机程序指令,来执行各种适当的动作和处理。在RAM和/或ROM 502中,还可存储 设备500操作所需的各种程序和数据。计算单元501和RAM和/或ROM 502通过总线503 彼此相连。输入/输出(I/O)接口504也连接至总线503。
设备500中的多个部件连接至I/O接口504,包括:输入单元505,例如键盘、鼠标等;输出单元506,例如各种类型的显示器、扬声器等;存储单元507,例如磁盘、光盘等;以及 通信单元508,例如网卡、调制解调器、无线通信收发机等。通信单元508允许设备500通 过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501 的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智 能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及 任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理, 例如过程200。例如,在一些实施例中,过程200可被实现为计算机软件程序,其被有形地 包含于计算机可读介质,例如存储单元507。在一些实施例中,计算机程序的部分或者全部 可以经由RAM和/或ROM和/或通信单元508而被载入和/或安装到设备500上。当计算机程序加载到RAM和/或ROM并由计算单元501执行时,可以执行上文描述的过程200的一个 或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如, 借助于固件)而被配置为执行过程200。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这 些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制 器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。 程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执 行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质或计算机可读介质可以是有形的介质,其可以包含 或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程 序。计算机可读介质可以是机器可读信号介质或机器可读储存介质。计算机可读介质可以包 括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者 上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气 连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编 程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特 定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环 境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细 节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某 些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也 可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所 附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的 特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (13)
1.一种数据搜索的方法,包括:
获取搜索请求,所述搜索请求包括由多个节点和所述多个节点之间的多条边组成的查询图,每个节点表示对象,每条边表示对象之间的关联关系;
基于所述查询图确定多个查询子图,每个查询子图包括所述多个节点中的一组节点和所述一组节点之间的边,所述多个查询子图具有所述多个节点中的至少一个相同节点;
在目标数据图中并行地搜索与所述多个查询子图各自匹配的数据子图;以及
通过合并与所述多个查询子图各自匹配的数据子图,来确定与所述查询图匹配的搜索结果。
2.根据权利要求1所述的方法,其特征在于,基于所述查询图确定多个查询子图包括:
通过对所述查询图执行深度优先搜索DFS,将所述查询图转换为树结构,所述树结构包括所述查询图中的所述多个节点以及所述多条边的至少一部分边;以及
将所述树结构划分为所述多个查询子图,每个查询子图包括从所述树结构的根节点到叶子节点的一条路径上的节点和边。
3.根据权利要求2所述的方法,其特征在于,所述树结构不包括所述查询图的所述多条边中的第一边,并且所述多个查询子图中的第一查询子图包括由所述第一边连接的一对节点,
其中,在目标数据图中并性地搜索与所述多个查询子图各自匹配的数据子图包括:
在所述目标数据图中搜索与所述第一查询子图匹配的候选数据子图;
确定所述候选数据子图是否包括与所述第一边匹配的边;以及
如果所述候选数据子图包括与所述第一边匹配的边,将所述候选数据子图确定为与所述第一查询子图匹配的第一数据子图。
4.根据权利要求1所述的方法,其特征在于,通过启动至少两个搜索进程来执行在所述目标数据图中对所述多个查询子图的并行搜索。
5.根据权利要求4所述的方法,其特征在于,在目标数据图中并行地搜索与所述多个查询子图各自匹配的数据子图包括:
如果所述多个查询子图中的第二查询子图和第三查询子图包括从起始节点开始的部分相同路径,控制所述至少两个搜索进程中的第一搜索进程,在所述目标数据图中搜索与所述部分相同路径匹配的第一部分匹配子图;
控制所述第一搜索进程在所述目标数据图中搜索与所述第二查询子图中除所述部分相同路径之外的其余路径匹配的第二部分匹配子图,所述第一部分匹配子图和所述第二部分匹配子图被级联为与所述第二查询子图匹配的第二数据子图;以及
控制所述至少两个搜索进程中的第二搜索进程在所述目标数据图中搜索与所述第三查询子图中除所述部分相同路径之外的其余路径匹配的第三部分匹配子图,所述第一部分匹配子图和所述第三部分匹配子图被级联为与所述第三查询子图匹配的第三数据子图。
6.一种用于数据搜索的装置,其特征在于,包括:
请求获取单元,被配置为获取搜索请求,所述搜索请求包括由多个节点和所述多个节点之间的多条边组成的查询图,每个节点表示对象,每条边表示对象之间的关联关系;
子图确定单元,被配置为基于所述查询图确定多个查询子图,每个查询子图包括所述多个节点中的一组节点和所述一组节点之间的边,所述多个查询子图具有所述多个节点中的至少一个相同节点;
并行搜索单元,被配置为在目标数据图中并行地搜索与所述多个查询子图各自匹配的数据子图;以及
结果确定单元,被配置为通过合并与所述多个查询子图各自匹配的数据子图,来确定与所述查询图匹配的搜索结果。
7.根据权利要求6所述的装置,其特征在于,所述子图确定单元包括:
树转换单元,被配置为通过对所述查询图执行深度优先搜索DFS,将所述查询图转换为树结构,所述树结构包括所述查询图中的所述多个节点以及所述多条边的至少一部分边;以及
树划分单元,被配置为将所述树结构划分为所述多个查询子图,每个查询子图包括从所述树结构的根节点到叶子节点的一条路径上的节点和边。
8.根据权利要求7所述的装置,其特征在于,所述树结构不包括所述查询图的所述多条边中的第一边,并且所述多个查询子图中的第一查询子图包括由所述第一边连接的一对节点,
其中,所述并行搜索单元包括:
候选搜索单元,被配置为在所述目标数据图中搜索与所述第一查询子图匹配的候选数据子图;
匹配确定单元,被配置为确定所述候选数据子图是否包括与所述第一边匹配的边;以及
候选确定单元,被配置为如果所述候选数据子图包括与所述第一边匹配的边,将所述候选数据子图确定为与所述第一查询子图匹配的第一数据子图。
9.根据权利要求6所述的装置,其特征在于,通过启动至少两个搜索进程来执行在所述目标数据图中对所述多个查询子图的并行搜索。
10.根据权利要求9所述的装置,其特征在于,所述并行搜索单元包括:
第一控制单元,被配置为如果所述多个查询子图中的第二查询子图和第三查询子图包括从起始节点开始的部分相同路径,控制所述至少两个搜索进程中的第一搜索进程,在所述目标数据图中搜索与所述部分相同路径匹配的第一部分匹配子图;
第二控制单元,被配置为控制所述第一搜索进程在所述目标数据图中搜索与所述第二查询子图中除所述部分相同路径之外的其余路径匹配的第二部分匹配子图,所述第一部分匹配子图和所述第二部分匹配子图被级联为与所述第二查询子图匹配的第二数据子图;以及
第三控制单元,被配置为控制所述至少两个搜索进程中的第二搜索进程在所述目标数据图中搜索与所述第三查询子图中除所述部分相同路径之外的其余路径匹配的第三部分匹配子图,所述第一部分匹配子图和所述第三部分匹配子图被级联为与所述第三查询子图匹配的第三数据子图。
11.一种电子设备,其特征在于,包括:
至少一个计算单元;
至少一个存储器,所述至少一个存储器被耦合到所述至少一个计算单元并且存储用于由所述至少一个计算单元执行的指令,所述指令当由所述至少一个计算单元执行时,使得所述设备执行根据权利要求1至5中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述程序被处理器执行时实现根据权利要求1至5中任一项所述的方法。
13.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机可执行指令,所述计算机可执行指令在被处理器执行时,使计算机实现根据权利要求1至5中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110594906.0A CN115408427A (zh) | 2021-05-28 | 2021-05-28 | 用于数据搜索的方法、装置及设备 |
PCT/CN2022/095028 WO2022247869A1 (zh) | 2021-05-28 | 2022-05-25 | 用于数据搜索的方法、装置及设备 |
US18/520,221 US20240095241A1 (en) | 2021-05-28 | 2023-11-27 | Data search method and apparatus, and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110594906.0A CN115408427A (zh) | 2021-05-28 | 2021-05-28 | 用于数据搜索的方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115408427A true CN115408427A (zh) | 2022-11-29 |
Family
ID=84154754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110594906.0A Pending CN115408427A (zh) | 2021-05-28 | 2021-05-28 | 用于数据搜索的方法、装置及设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240095241A1 (zh) |
CN (1) | CN115408427A (zh) |
WO (1) | WO2022247869A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115842684A (zh) * | 2023-02-21 | 2023-03-24 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种基于mdata子图匹配的多步攻击检测方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10853357B2 (en) * | 2016-09-09 | 2020-12-01 | University Of Southern California | Extensible automatic query language generator for semantic data |
CN108509543B (zh) * | 2018-03-20 | 2021-11-02 | 福州大学 | 一种基于Spark Streaming的流式RDF数据多关键词并行搜索方法 |
CN110222240B (zh) * | 2019-05-24 | 2021-03-26 | 华中科技大学 | 一种基于摘要图的空间rdf数据关键词查询方法 |
-
2021
- 2021-05-28 CN CN202110594906.0A patent/CN115408427A/zh active Pending
-
2022
- 2022-05-25 WO PCT/CN2022/095028 patent/WO2022247869A1/zh active Application Filing
-
2023
- 2023-11-27 US US18/520,221 patent/US20240095241A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115842684A (zh) * | 2023-02-21 | 2023-03-24 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种基于mdata子图匹配的多步攻击检测方法 |
Also Published As
Publication number | Publication date |
---|---|
US20240095241A1 (en) | 2024-03-21 |
WO2022247869A1 (zh) | 2022-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11093526B2 (en) | Processing query to graph database | |
Fan et al. | Parallelizing sequential graph computations | |
US9697254B2 (en) | Graph traversal operator inside a column store | |
Xin et al. | Graphx: Unifying data-parallel and graph-parallel analytics | |
Chaudhuri et al. | Tight bounds for k-set agreement | |
US20150278396A1 (en) | Processing Diff-Queries on Property Graphs | |
CN105468702A (zh) | 一种大规模rdf数据关联路径发现方法 | |
TWI710913B (zh) | 跨網路執行元組圖形程式之方法 | |
CN106569896A (zh) | 一种数据分发及并行处理方法和*** | |
US20240095241A1 (en) | Data search method and apparatus, and device | |
CN110866029A (zh) | sql语句构建方法、装置、服务器及可读存储介质 | |
CN109657197B (zh) | 一种叠前深度偏移计算方法及*** | |
CN113312175A (zh) | 一种算子确定、运行方法及装置 | |
CN116011562A (zh) | 算子处理方法及算子处理装置、电子设备和可读存储介质 | |
Fan et al. | Graph algorithms: parallelization and scalability | |
CN113868434A (zh) | 图数据库的数据处理方法、设备和存储介质 | |
CN114564523B (zh) | 针对智慧虚拟场景的大数据漏洞分析方法及云端ai*** | |
CN110851178B (zh) | 一种基于分布式图可达计算的过程间程序静态分析方法 | |
Adoni et al. | Hgraph: Parallel and distributed tool for large-scale graph processing | |
Ma et al. | Parallel exact inference on multicore using mapreduce | |
CN107015909B (zh) | 基于代码变更分析的测试方法及装置 | |
CN112000671A (zh) | 基于区块链的数据库表处理方法、装置及*** | |
Jamadagni et al. | GoDB: From batch processing to distributed querying over property graphs | |
CN116226686B (zh) | 一种表格相似性分析方法、装置、设备和存储介质 | |
CN117573730B (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 |