CN113987237B - 一种基于图数据库的并行查询方法及装置 - Google Patents
一种基于图数据库的并行查询方法及装置 Download PDFInfo
- Publication number
- CN113987237B CN113987237B CN202111638245.3A CN202111638245A CN113987237B CN 113987237 B CN113987237 B CN 113987237B CN 202111638245 A CN202111638245 A CN 202111638245A CN 113987237 B CN113987237 B CN 113987237B
- Authority
- CN
- China
- Prior art keywords
- query
- vertex
- vertex attribute
- updated
- task
- 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/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/53—Querying
- G06F16/532—Query formulation, e.g. graphical querying
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种基于图数据库的并行查询方法及装置,涉及数据处理技术领域,该基于图数据库的并行查询方法包括:获取图数据库查询请求;然后获取图数据库查询请求中包括的待查询顶点;再遍历待查询顶点的相邻边,并根据相邻边构建边查询任务,以及将预先初始化的全局计数器进行加一操作;根据待查询顶点,构建顶点属性查询任务,并将全局计数器进行加一操作;在线程池中并行执行边查询任务和顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合;查询异常信息是在执行查询任务的过程中遇到异常所生成的信息,能够实现在查询时并发执行边和顶点的查询任务,从而有利于提升查询效率。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种基于图数据库的并行查询方法及装置。
背景技术
目前,图数据库的多层查询一般是在客户端通过逐层查询的方式来实现,随着层级递进,每一层的查询时间都将比上一层呈倍数递增,而逐层查询需要等待每一层查询完才能查下一层,查询效率较低。
发明内容
本申请实施例的目的在于提供一种基于图数据库的并行查询方法及装置,能够实现在查询时并发执行边和顶点的查询任务,从而有利于提升查询效率。
本申请实施例第一方面提供了一种基于图数据库的并行查询方法,包括:
获取图数据库查询请求;
获取图数据库查询请求中包括的待查询顶点;
遍历所述待查询顶点的相邻边,并根据所述相邻边构建边查询任务,以及将预先初始化的全局计数器进行加一操作;
根据所述待查询顶点,构建顶点属性查询任务,并将所述全局计数器进行加一操作;
在线程池中并行执行所述边查询任务和所述顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合;所述查询异常信息是在执行查询任务的过程中遇到异常所生成的信息。
在上述实现过程中,获取图数据库查询请求;然后获取图数据库查询请求中包括的待查询顶点;再遍历待查询顶点的相邻边,并根据相邻边构建边查询任务,以及将预先初始化的全局计数器进行加一操作;根据待查询顶点,构建顶点属性查询任务,并将全局计数器进行加一操作;在线程池中并行执行边查询任务和顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合;查询异常信息是在执行查询任务的过程中遇到异常所生成的信息,能够实现在查询时并发执行边和顶点的查询任务,从而有利于提升查询效率。
进一步地,在所述获取图数据库查询请求之后,在所述获取图数据库查询请求中包括的待查询顶点之前,所述方法还包括:
初始化全局边映射集合、全局顶点属性集合、全局计数器和查询异常信息集合,并根据所述图数据库查询请求,对初始查询时间和查询关闭条件进行配置。
进一步地,所述在线程池中并行执行所述边查询任务和所述顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合,包括:
在线程池中并行执行所述顶点属性查询任务,得到更新顶点属性集合和顶点查询异常信息;
在线程池中并行执行所述边查询任务,得到更新边映射集合和边查询异常信息;
汇总所述更新顶点属性集合、所述更新边映射集合、所述顶点查询异常信息以及所述边查询异常信息,得到查询异常信息、更新边映射集合和更新顶点属性集合。
进一步地,所述在线程池中并行执行所述顶点属性查询任务,得到更新顶点属性集合和顶点查询异常信息,包括:
在线程池中,根据所述查询关闭条件判断是否需要结束所述顶点属性查询任务;
如果否,判断所述顶点属性查询任务中的所述待查询顶点是否属于所述全局顶点属性集合;
当所述顶点属性查询任务中的所述待查询顶点不属于所述全局顶点属性集合时,查询所述待查询顶点的顶点属性;
将所述待查询顶点的顶点属性放入所述全局顶点属性集合,得到更新顶点属性集合,并对所述全局计数器进行减一操作。
进一步地,根据所述相邻边构建边查询任务的步骤包括:
根据所述相邻边构建初始边查询任务;
根据所述全局边映射集合,对所述初始边查询任务进行筛选,得到边查询任务。
进一步地,所述在线程池中并行执行所述边查询任务和所述顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合的步骤之后,所述方法还包括:
将所述更新边映射集合和所述更新顶点属性集合,确定为所述全局边映射集合和所述全局顶点属性集合;
根据所述初始查询时间和所述查询关闭条件判断是否结束查询;
如果否,根据更新顶点属性信息,确定待查询顶点,并对所述全局计数器进行减一操作;并执行所述的遍历所述待查询顶点的相邻边,并根据所述相邻边构建边查询任务的步骤;
如果是,根据所述全局边映射集合、所述全局顶点属性集合以及所述查询异常信息生成图数据库查询结果。
本申请实施例第二方面提供了一种基于图数据库的并行查询装置,所述基于图数据库的并行查询装置包括:
获取单元,用于获取图数据库查询请求;以及获取图数据库查询请求中包括的待查询顶点;
第一构建单元,用于根据所述相邻边构建边查询任务,以及将预先初始化的全局计数器进行加一操作;
第二构建单元,用于根据所述待查询顶点,构建顶点属性查询任务,并将所述全局计数器进行加一操作;
查询单元,用于在线程池中并行执行所述边查询任务和所述顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合;所述查询异常信息是在执行查询任务的过程中遇到异常所生成的信息。
在上述实现过程中,获取单元获取图数据库查询请求;以及获取图数据库查询请求中包括的待查询顶点;第一构建单元根据相邻边构建边查询任务,以及将预先初始化的全局计数器进行加一操作;第二构建单元根据待查询顶点,构建顶点属性查询任务,并将全局计数器进行加一操作;查询单元在线程池中并行执行边查询任务和顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合;查询异常信息是在执行查询任务的过程中遇到异常所生成的信息能够实现在查询时并发执行边和顶点的查询任务,从而有利于提升查询效率。
进一步地,所述基于图数据库的并行查询装置还包括:
初始化单元,用于在所述获取图数据库查询请求之后,以及在所述获取图数据库查询请求中包括的待查询顶点之前,初始化全局边映射集合、全局顶点属性集合和查询异常信息集合,并根据所述图数据库查询请求,对初始查询时间和查询关闭条件进行配置。
本申请实施例第三方面提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行本申请实施例第一方面中任一项所述的基于图数据库的并行查询方法。
本申请实施例第四方面提供了一种计算机可读存储介质,其存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行本申请实施例第一方面中任一项所述的基于图数据库的并行查询方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种基于图数据库的并行查询方法的流程示意图;
图2为本申请实施例提供的一种基于图数据库的并行查询装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
实施例1
请参看图1,图1为本申请实施例提供了一种基于图数据库的并行查询方法的流程示意图。其中,该基于图数据库的并行查询方法包括:
S101、获取图数据库查询请求。
本申请实施例中,该方法的执行主体可以为计算机、服务器等计算装置,对此本实施例中不作任何限定。
本申请实施例中,可以通过调用端获取图数据库查询请求,对此本申请实施例不作限定。
S102、初始化全局边映射集合、全局顶点属性集合、全局计数器和查询异常信息集合,并根据图数据库查询请求,对初始查询时间和查询关闭条件进行配置。
本申请实施例中,在初始化全局计数器,即将该全局计数器的值置为0。
本申请实施例中,查询关闭条件具体可以为关闭标签等,其中,关闭标签至少包括等待关闭函数、检测是否关闭函数等,对此本申请实施例不作限定。
本申请实施例中,关闭的触发时机包括设置关闭及超时等,对此本申请实施例不作限定。
本申请实施例中,当全局计数器为0时,则将查询关闭条件的标志设置为关闭状态,从而结束所有的查询任务。
本申请实施例中,查询异常信息集合具体可以为异常通知管道等,对此本申请实施例不作限定。
在步骤S103之后,还包括以下步骤:
S103、获取图数据库查询请求中包括的待查询顶点。
S104、遍历待查询顶点的相邻边,并根据相邻边构建边查询任务,将预先初始化的全局计数器进行加一操作。
本申请实施例中,在根据相邻边构建边查询任务之后,可以将全局计数器进行加一操作,即全局计数器的值加1。
作为一种可选的实施方式,根据相邻边构建边查询任务的步骤包括:
根据相邻边构建初始边查询任务;
根据全局边映射集合,对初始边查询任务进行筛选,得到边查询任务。
S105、根据待查询顶点,构建顶点属性查询任务,并将全局计数器进行加一操作。
本申请实施例中,在构建顶点属性查询任务之后,可以将全局计数器进行加一操作,即全局计数器的值加1。
本申请实施例中,针对最初的初始顶点,执行第一层相邻边查询,此时不需要一次性取出所有边和相邻顶点,而是在遍历每个边时生成一个边查询任务,并将待查询顶点、层级、全局边映射集合、全局顶点属性集合、查询异常信息集合和查询关闭条件传递进去。此时如果需要查询顶点的属性,仍然生成同样的顶点属性查询任务并放入线程池中。
S106、在线程池中并行执行顶点属性查询任务,得到更新顶点属性集合和顶点查询异常信息;以及在线程池中并行执行边查询任务,得到更新边映射集合和边查询异常信息。
本申请实施例中,所有的顶点属性查询任务和所有的边查询任务在线程池中是并发异步执行的,同时,所有的任务都能够访问全局边映射集合、全局顶点属性集合、全局计数器、查询异常信息集合和查询关闭条件,并能够根据查询结果对其进行更新,对此本申请实施例不做限定。
本申请实施例中,在查询任务执行过程中,如果出现异常,则生成顶点查询异常信息或者边查询异常信息,并将关闭查询条件设置为关闭退出,并退出当前查询任务。
作为一种可选的实施方式,在线程池中并行执行顶点属性查询任务,得到更新顶点属性集合和顶点查询异常信息,包括:
在线程池中,根据查询关闭条件判断是否需要结束顶点属性查询任务;
如果否,判断顶点属性查询任务中的待查询顶点是否属于全局顶点属性集合;
当顶点属性查询任务中的待查询顶点不属于全局顶点属性集合时,查询待查询顶点的顶点属性;
将待查询顶点的顶点属性放入全局顶点属性集合,得到更新顶点属性集合。
在上述实施方式中,顶点属性查询任务的流程为:首先根据查询关闭条件,判断是否需要结束本次顶点属性查询任务,如果是,则退出顶点属性查询任务;如果否,则继续判断当前所查询的顶点(即待查询顶点)是否在全局顶点属性集合中存在,若存在则退出顶点属性查询任务;如果不存在,则查询待查询顶点的顶点属性,并将该顶点属性放入全局顶点属性集合中,退出顶点属性查询任务。
本申请实施例中,顶点属性查询任务执行时无论是否异常,都需要对全局计数器进行减一操作,然后,再检测该全局计数器是否为0,如为0则将关闭查询条件的标志设置为关闭状态。
在步骤S106之后,还包括以下步骤:
S107、汇总更新顶点属性集合、更新边映射集合、顶点查询异常信息以及边查询异常信息,得到查询异常信息、更新边映射集合和更新顶点属性集合;其中,查询异常信息是在执行查询任务的过程中遇到异常所生成的信息。
本申请实施例中,实施上述步骤S106~步骤S107,能够在线程池中并行执行边查询任务和顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合;查询异常信息是在执行查询任务的过程中遇到异常所生成的信息。
S108、将更新边映射集合和更新顶点属性集合,确定为全局边映射集合和全局顶点属性集合。
S109、根据初始查询时间和查询关闭条件判断是否结束查询,如果否,执行步骤S110;如果是,执行步骤S111。
本申请实施例中,能够将每一层结点的下层边或结点属性的查询视为线程池的一个查询单元,实现完全多线程式的查询执行流程,并在判断出需要结束查询时能够快速结束多层查询任务。
本申请实施例中,当根据初始查询时间和查询关闭条件确定当前出现超时情况时,则判断为需要结束查询。
本申请实施例中,当根据初始查询时间和查询关闭条件确定当前出现异常情况时,则判断为需要结束查询。
S110、根据更新顶点属性信息,确定待查询顶点,并对全局计数器进行减一操作;并执行步骤S104。
本申请实施例中,在根据更新顶点属性信息,确定待查询顶点时,无论是否需要执行步骤S104以及是否有异常,都需要对当前任务的全局计数器进行减一操作,然后,再检测该全局计数器是否为0,如为0则将关闭查询条件的标志设置为关闭状态。
本申请实施例中,查询任务执行时,需要根据关闭查询条件判断是否需要退出当前任务,如需要,则立即退出任务并返回,避免无效查询。如果不需要,则查询下一层边,并遍历查询结果,放入全局边映射集合。
本申请实施例中,如果需要对遍历的结果再向下遍历时则同上述遍历相临边并构建边查询任务,遍历的同时把相邻顶点的下一层任务以查询任务的形式放入线程池中。此时如果需要查询顶点的属性,仍然生成同样的查询任务并放入线程池中。
S111、根据全局边映射集合、全局顶点属性集合以及查询异常信息生成图数据库查询结果。
本申请实施例中,该方法能够将每一层的任务作为多线程的执行单元,对每一层每个顶点的查询任务统一管理以实现充分的并发执行效果。
本申请实施例中,该方法能够采用多线程的查询方法,将每一层结点的下层边或结点属性的查询视为线程池的一个查询单元,实现完全多线程式的查询执行流程,并在结果出现超时的时候能够快速结束多层查询任务。能实现在多层边查询时将对边和顶点的查询同时异步执行,并采用异步的传输方式将数据返回给查询端以实现高效及时的响应。
本申请实施例中,通过主线程可以执行步骤S101~步骤S105构建边查询任务和顶点属性查询任务,然后等待线程池中的边查询任务和顶点属性查询任务并发异步执行完毕,或者当根据关闭查询条件判断出需要退出当前任务时,则获取当前的全局边映射集合、全局顶点属性集合以及查询异常信息,得到图数据库查询结果,并将该图数据库查询结果返回给调用端。
本申请实施例中,协调器的代码实现逻辑如下:
interface JobCoordinator {
void addEdge(Vertex vertex, Edge edge);
void addVertex(Vertex vertex);
void containsVertex(Vertex vertex);
void containsEdge(Vertex vertex, EdgeLabel label);
void wait(long time);
void setStop();
boolean isStopped();
void setException(Exception e);
Exception getException();
void increment(); // 全局计数器加1
void decrement(); // 全局计数器减1
void isZero(); // 检测全局计数器是否为0
}
其中,协调器能够存储初始化全局边映射集合、全局顶点属性集合、查询异常信息集合、初始查询时间和查询关闭条件。
本申请实施例中,执行任务的代码逻辑实现如下所示:
interface Job {
JobCoordinator coordinator();
void run();
}
interface VertexJob extends Job {
VertexJob(VertexLabel label, ID id);
}
interface EdgeJob extends Job {
EdgeJob(VertexLabel label, ID id, EdgeLabel edgeLabel);
}
本申请实施例中,执行任务初始化时,包含如下逻辑:
coordinator().increment();
其中,VertexJob执行逻辑如下所示:
void run() {
queryVertex();
coordinator().decrement();
if (coordinator().isZero()) {
coordinator().setStop();
}
}
其中,EdgeJob执行逻辑如下所示:
void run() {
queryEdge();
createChildrenEdgeJobs();
coordinator().decrement();
if (coordinator().isZero()) {
coordinator().setStop();
}
}
本申请实施例中,线程池的代码逻辑实现如下所示:
interface ThreadPool {
void submit(Job job);
}
本申请实施例中,该方法能够在分布式图数据库环境下对边和顶点进行多层异步查询,适用于图数据库中对多层边下溯查询的场景。通过这种方法,能实现在多层边查询时将对边和顶点的查询同时异步执行,并采用异步的传输方式将数据返回给查询端以实现高效及时的响应。
可见,实施本实施例所描述的基于图数据库的并行查询方法,能够实现在查询时并发执行边和顶点的查询任务,从而有利于提升查询效率。
实施例2
请参看图2,图2为本申请实施例提供的一种基于图数据库的并行查询装置的结构示意图。如图2所示,该基于图数据库的并行查询装置包括:
获取单元210,用于获取图数据库查询请求;以及获取图数据库查询请求中包括的待查询顶点;
第一构建单元220,用于遍历待查询顶点的相邻边,并根据相邻边构建边查询任务,以及将预先初始化的全局计数器进行加一操作;
第二构建单元230,用于根据待查询顶点,构建顶点属性查询任务,并将全局计数器进行加一操作;
查询单元240,用于在线程池中并行执行边查询任务和顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合;查询异常信息是在执行查询任务的过程中遇到异常所生成的信息。
作为一种可选的实施方式,基于图数据库的并行查询装置还包括:
初始化单元250,用于在获取图数据库查询请求之后,以及在获取图数据库查询请求中包括的待查询顶点之前,初始化全局边映射集合、全局顶点属性集合和查询异常信息集合,并根据图数据库查询请求,对初始查询时间和查询关闭条件进行配置。
作为一种可选的实施方式,查询单元240包括:
第一子单元241,用于在线程池中并行执行顶点属性查询任务,得到更新顶点属性集合和顶点查询异常信息;
第二子单元242,用于在线程池中并行执行边查询任务,得到更新边映射集合和边查询异常信息;
第三子单元243,用于汇总更新顶点属性集合、更新边映射集合、顶点查询异常信息以及边查询异常信息,得到查询异常信息、更新边映射集合和更新顶点属性集合。
作为进一步可选的实施方式,第一子单元241包括:
判断模块,用于在线程池中,根据查询关闭条件判断是否需要结束顶点属性查询任务;如果否,判断顶点属性查询任务中的待查询顶点是否属于全局顶点属性集合;
查询模块,用于当顶点属性查询任务中的待查询顶点不属于全局顶点属性集合时,查询待查询顶点的顶点属性;并将待查询顶点的顶点属性放入全局顶点属性集合,得到更新顶点属性集合,并对全局计数器进行减一操作。
作为一种可选的实施方式,第一构建单元220包括:
第四子单元221,用于遍历待查询顶点的相邻边,并根据相邻边构建初始边查询任务;
第五子单元222,用于根据全局边映射集合,对初始边查询任务进行筛选,得到边查询任务。
作为一种可选的实施方式,基于图数据库的并行查询装置还包括:
确定单元260,用于在线程池中并行执行所述边查询任务和所述顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合之后,将更新边映射集合和更新顶点属性集合,确定为全局边映射集合和全局顶点属性集合;
判断单元270,用于根据初始查询时间和查询关闭条件判断是否结束查询;
所述确定单元260,还用于当判断出未结束查询时,根据更新顶点属性信息,确定待查询顶点,并对全局计数器进行减一操作;并触发第一构建单元220遍历待查询顶点的相邻边,并根据相邻边构建边查询任务;
生成单元280,用于当判断出结束查询时,根据全局边映射集合、全局顶点属性集合以及查询异常信息生成图数据库查询结果。
本申请实施例中,对于基于图数据库的并行查询装置的解释说明可以参照实施例1中的描述,对此本实施例中不再多加赘述。
可见,实施本实施例所描述的基于图数据库的并行查询装置,能够实现在查询时并发执行边和顶点的查询任务,从而有利于提升查询效率。
本申请实施例提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行本申请实施例1中的基于图数据库的并行查询方法。
本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行本申请实施例1中的基于图数据库的并行查询方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (6)
1.一种基于图数据库的并行查询方法,其特征在于,包括:
获取图数据库查询请求;
初始化全局边映射集合、全局顶点属性集合、全局计数器和查询异常信息集合,并根据所述图数据库查询请求,对初始查询时间和查询关闭条件进行配置;
获取图数据库查询请求中包括的待查询顶点;
遍历所述待查询顶点的相邻边,并根据所述相邻边构建边查询任务,以及将预先初始化的全局计数器进行加一操作;
根据所述待查询顶点,构建顶点属性查询任务,并将所述全局计数器进行加一操作;
在线程池中并行执行所述边查询任务和所述顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合;所述查询异常信息是在执行查询任务的过程中遇到异常所生成的信息;
所述在线程池中并行执行所述边查询任务和所述顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合,包括:
在线程池中并行执行所述顶点属性查询任务,得到更新顶点属性集合和顶点查询异常信息,以及在线程池中并行执行所述边查询任务,得到更新边映射集合和边查询异常信息;
汇总所述更新顶点属性集合、所述更新边映射集合、所述顶点查询异常信息以及所述边查询异常信息,得到查询异常信息、更新边映射集合和更新顶点属性集合;
所述在线程池中并行执行所述顶点属性查询任务,得到更新顶点属性集合和顶点查询异常信息,包括:
在线程池中,根据所述查询关闭条件判断是否需要结束所述顶点属性查询任务;
如果否,判断所述顶点属性查询任务中的所述待查询顶点是否属于所述全局顶点属性集合;
当所述顶点属性查询任务中的所述待查询顶点不属于所述全局顶点属性集合时,查询所述待查询顶点的顶点属性;
将所述待查询顶点的顶点属性放入所述全局顶点属性集合,得到更新顶点属性集合,并对所述全局计数器进行减一操作。
2.根据权利要求1所述的基于图数据库的并行查询方法,其特征在于,根据所述相邻边构建边查询任务的步骤包括:
根据所述相邻边构建初始边查询任务;
根据所述全局边映射集合,对所述初始边查询任务进行筛选,得到边查询任务。
3.根据权利要求1所述的基于图数据库的并行查询方法,其特征在于,所述在线程池中并行执行所述边查询任务和所述顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合的步骤之后,所述方法还包括:
将所述更新边映射集合和所述更新顶点属性集合,确定为所述全局边映射集合和所述全局顶点属性集合;
根据所述初始查询时间和所述查询关闭条件判断是否结束查询;
如果否,根据更新顶点属性信息,确定待查询顶点,并对所述全局计数器进行减一操作;并执行所述的遍历所述待查询顶点的相邻边,并根据所述相邻边构建边查询任务的步骤;
如果是,根据所述全局边映射集合、所述全局顶点属性集合以及所述查询异常信息生成图数据库查询结果。
4.一种基于图数据库的并行查询装置,其特征在于,所述基于图数据库的并行查询装置包括:
获取单元,用于获取图数据库查询请求;以及获取图数据库查询请求中包括的待查询顶点;
第一构建单元,用于遍历所述待查询顶点的相邻边,并根据所述相邻边构建边查询任务,以及将预先初始化的全局计数器进行加一操作;
第二构建单元,用于根据所述待查询顶点,构建顶点属性查询任务,并将所述全局计数器进行加一操作;
查询单元,用于在线程池中并行执行所述边查询任务和所述顶点属性查询任务,得到查询异常信息、更新边映射集合和更新顶点属性集合;所述查询异常信息是在执行查询任务的过程中遇到异常所生成的信息;
所述基于图数据库的并行查询装置还包括:
初始化单元,用于在所述获取图数据库查询请求之后,以及在所述获取图数据库查询请求中包括的待查询顶点之前,初始化全局边映射集合、全局顶点属性集合、全局计数器和查询异常信息集合,并根据所述图数据库查询请求,对初始查询时间和查询关闭条件进行配置;
其中,查询单元包括:
第一子单元,用于在线程池中并行执行顶点属性查询任务,得到更新顶点属性集合和顶点查询异常信息;
第二子单元,用于在线程池中并行执行边查询任务,得到更新边映射集合和边查询异常信息;
第三子单元,用于汇总更新顶点属性集合、更新边映射集合、顶点查询异常信息以及边查询异常信息,得到查询异常信息、更新边映射集合和更新顶点属性集合;
其中,第一子单元包括:
判断模块,用于在线程池中,根据查询关闭条件判断是否需要结束顶点属性查询任务;如果否,判断顶点属性查询任务中的待查询顶点是否属于全局顶点属性集合;
查询模块,用于当顶点属性查询任务中的待查询顶点不属于全局顶点属性集合时,查询待查询顶点的顶点属性;并将待查询顶点的顶点属性放入全局顶点属性集合,得到更新顶点属性集合,并对全局计数器进行减一操作。
5.一种电子设备,其特征在于,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行权利要求1至3中任一项所述的基于图数据库的并行查询方法。
6.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行权利要求1至3任一项所述的基于图数据库的并行查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111638245.3A CN113987237B (zh) | 2021-12-30 | 2021-12-30 | 一种基于图数据库的并行查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111638245.3A CN113987237B (zh) | 2021-12-30 | 2021-12-30 | 一种基于图数据库的并行查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113987237A CN113987237A (zh) | 2022-01-28 |
CN113987237B true CN113987237B (zh) | 2022-04-12 |
Family
ID=79734861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111638245.3A Active CN113987237B (zh) | 2021-12-30 | 2021-12-30 | 一种基于图数据库的并行查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113987237B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679160A (zh) * | 2017-09-28 | 2018-02-09 | 深圳市华傲数据技术有限公司 | 基于图数据库的数据处理方法及装置 |
CN112925954A (zh) * | 2021-03-05 | 2021-06-08 | 北京中经惠众科技有限公司 | 用于在图数据库中查询数据的方法和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104123369B (zh) * | 2014-07-24 | 2017-06-13 | 中国移动通信集团广东有限公司 | 一种基于图形数据库的配置管理数据库系统的实现方法 |
CN105260374B (zh) * | 2015-07-17 | 2019-03-15 | 中国科学院计算技术研究所 | 异步流水线式的图查询方法及系统 |
US10552450B2 (en) * | 2016-08-05 | 2020-02-04 | International Business Machines Corporation | Distributed graph databases that facilitate streaming data insertion and low latency graph queries |
US10839012B2 (en) * | 2018-03-29 | 2020-11-17 | Sap Se | Adaptable adjacency structure for querying graph data |
CN109255055B (zh) * | 2018-08-06 | 2020-10-30 | 四川蜀天梦图数据科技有限公司 | 一种基于分组关联表的图数据存取方法和装置 |
US11216455B2 (en) * | 2019-08-24 | 2022-01-04 | International Business Machines Corporation | Supporting synergistic and retrofittable graph queries inside a relational database |
-
2021
- 2021-12-30 CN CN202111638245.3A patent/CN113987237B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679160A (zh) * | 2017-09-28 | 2018-02-09 | 深圳市华傲数据技术有限公司 | 基于图数据库的数据处理方法及装置 |
CN112925954A (zh) * | 2021-03-05 | 2021-06-08 | 北京中经惠众科技有限公司 | 用于在图数据库中查询数据的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113987237A (zh) | 2022-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4755639B2 (ja) | データベースシステムにおけるイベント−条件−動作の規則の管理 | |
JP4673075B2 (ja) | コンテキスト表現をモデル化するためのコンテキストモデラおよびコンテキスト表現のモデル化方法 | |
US20080059945A1 (en) | Generating a Business Document Model | |
US20090112908A1 (en) | Method and System for Generic Extraction of Business Object Data | |
TWI509543B (zh) | 由下而上最佳化搜尋系統及方法 | |
US20090150900A1 (en) | Workflow task re-evaluation | |
US9052972B2 (en) | Determining the processing order of a plurality of events | |
JP2020501235A (ja) | 系統メタデータの生成、アクセス、及び表示 | |
US10031814B2 (en) | Collection record location as log tail beginning | |
US8626799B2 (en) | Mapping data structures | |
CN113641338A (zh) | 一种动态生成视图组件的方法及装置 | |
EP2199905A1 (en) | Lifecycle management and consistency checking of object models using application platform tools | |
CN113987237B (zh) | 一种基于图数据库的并行查询方法及装置 | |
US6374249B1 (en) | Data structure and operations for time-varying variable in an enterprise model | |
GB2342732A (en) | Reevaluation of a Boolean function applicable to event driven transaction processing | |
US8818974B2 (en) | System and method for synchronously updating a hierarchy bridge table | |
US20160154860A1 (en) | Recursive Filter Algorithms on Hierarchical Data Models Described for the Use by the Attribute Value Derivation | |
KR102153259B1 (ko) | 데이터 도메인 추천 방법 및 추천된 도메인을 이용하여 통합 데이터 저장소 관리 시스템을 구축하는 방법 | |
US20130127863A1 (en) | Determining an optimal sequence of status transitions for business objects | |
US9262549B2 (en) | Modeled associations for business object data structures | |
CN114625515A (zh) | 一种任务管理方法、装置、设备及存储介质 | |
CN109491892B (zh) | 一种项目环境的配置方法和装置 | |
CN113031929A (zh) | 一种业务的实现方法及装置 | |
CN112347202A (zh) | 一种数据变更消息的通知方法及装置 | |
CN111209302A (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 |