一种图数据库遍历方法、装置、设备及存储介质制造方法及图纸

技术编号:24456449 阅读:33 留言:0更新日期:2020-06-10 15:41
本申请公开了一种图数据库遍历方法、装置、设备及存储介质,涉及智能搜索技术领域。具体实现方案为:获取输入的图遍历语句,确定图遍历语句包含的至少两个算子和各算子的执行顺序,为各算子分别分配线程,并为每两个相邻算子分别创建缓冲队列;对于每两个相邻算子,通过两个相邻算子中前一算子对应的线程,执行前一算子的操作,并将前一算子的执行结果数据写入两个相邻算子对应的缓冲队列中;以及,通过两个相邻算子中后一算子对应的线程,并行从缓冲队列中读取两个相邻算子中前一算子的执行结果数据,以用于执行后一算子的操作。本申请实施例的技术方案实现了算子的并行执行,从而提高了遍历操作的执行效率和系统资源利用率。

A method, device, device and storage medium for traversing graph database

【技术实现步骤摘要】
一种图数据库遍历方法、装置、设备及存储介质
本申请涉及计算机技术,尤其涉及智能搜索

技术介绍
在图数据库中,遍历操作是最基本的操作。现有技中,在获取到用户输入的图遍历语句后,会根据图遍历语句中所包含的多个算子之间的嵌套调用、或者按照各算子的执行顺序对前一算子的执行结果依次筛选,最终得到目标元素。然而,上述两种方式在大规模数据并发的情况下,目标元素查询效率较低,导致系统资源利用率低下。
技术实现思路
本申请实施例提供了一种图数据库遍历方法、装置、设备及存储介质,以提高对图数据库中目标元素的查询效率和系统资源利用率。第一方面,本申请实施例提供了一种图数据库遍历方法,包括:获取输入的图遍历语句,确定所述图遍历语句包含的至少两个算子和各算子的执行顺序,为各算子分别分配线程,并为每两个相邻算子分别创建缓冲队列;对于每两个相邻算子,通过所述两个相邻算子中前一算子对应的线程,执行前一算子的操作,并将前一算子的执行结果数据写入所述两个相邻算子对应的缓冲队列中;以及,通过所述两个相邻算子中后一算子对应的线程,并行从所述缓冲队列中读取所述两个相邻算子中前一算子的执行结果数据,以用于执行后一算子的操作。本申请实施例通过获取输入的图遍历语句,确定图遍历语句包含的至少两个算子和各算子的执行顺序,为各算子分别分配线程,并为每两个相邻算子分别创建缓冲队列;对于每两个相邻算子,通过两个相邻算子中前一算子对应的线程,执行前一算子的操作,并将前一算子的执行结果数据写入两个相邻算子对应的缓冲队列中;以及,通过两个相邻算子中后一算子对应的线程,并行从缓冲队列中读取两个相邻算子中前一算子的执行结果数据,以用于执行后一算子的操作。上述技术方案通过在每两个相邻算子之间创建缓冲队列,使得在两个相邻算子中的前一算子产生执行结果数据并被写入缓冲队列中后,即可开始读取缓冲队列中的数据以执行后一算子,从而实现了算子的并行执行,提高了遍历操作的执行效率和系统资源利用率。可选的,所述方法还包括:按照各算子的执行顺序,将令牌数据在各算子对应的线程间传递,以使接收到令牌数据的线程开始执行本线程对应算子的操作,并将所述令牌数据传递至下一算子对应的线程。上述申请中的一个可选实施方式,通过令牌数据在各算子对应的线程间的传递,关联触发下一算子对应的线程的启动,缩短了相邻算子对应的线程之间的等待时间,进而提高了执行效率。可选的,为各算子分别分配线程,包括:根据可用线程的数量,按照各算子的执行顺序,为各算子分别分配线程。上述申请中的一个可选实施方式,根据可用线程的数据以及各算子的执行顺序为各算子分别分配线程,完善了线程的分配机制,为算子的并行执行提供保障。可选的,若所述可用线程的数量小于算子的数量,在按照各算子的执行顺序,将令牌数据在各算子对应的线程间传递时,所述方法还包括:接收到所述令牌数据的线程判断下一算子是否具有对应的线程;若接收到所述令牌数据的线程判断下一算子不具有对应的线程,则在出现满足预设条件的已分配线程时,将所述已分配线程重新分配给所述下一算子,并将所述令牌数据传递至所述已分配线程,以使所述已分配线程执行所述下一算子的操作;其中,所述预设条件为所述已分配线程已执行完本线程对应的算子的操作。上述申请中的一个可选实施方式,在可用线程数量小于算子的数量时,为已执行完本线程对应的算子操作的已分配线程重新分配下一算子,完善了可用线程无法一次覆盖所有算子时的线程分配机制,为算子的并行执行提供了保障。可选的,为各算子分别分配线程,并为每两个相邻算子分别创建缓冲队列,包括:为各算子分别分配本地计算机设备的线程,并为每两个相邻算子在所述本地计算机设备分别创建缓冲队列;或者,针对各算子,从至少两个计算机设备中确定用于执行所述算子的计算机设备,并为所述算子分配所确定的计算机设备的线程;针对每两个相邻算子,从至少两个计算机设备中确定用于创建缓冲队列的计算机设备,并在所确定的计算机设备中创建所述两个相邻算子对应的缓冲队列。上述申请中的各个可选实施方式,通过在本地计算机设备中为各算子进行线程分配,以及为每两个相邻算子创建缓冲队列;或者,通过在至少两个计算机设备中为各算子进行线程分配,以及为每两个相邻算子创建缓冲队列,使得通过单个计算机设备实现对图数据库的遍历操作,活着通过多个计算机设备联合实现对图数据库的遍历操作。可选的,所述方法还包括:针对第一个算子,将用于保存所述第一个算子的执行结果数据的缓冲队列的地址信息发送至用于执行所述第一个算子的计算机设备,以使执行所述第一个算子的计算机设备基于接收到的所述地址信息定位对应的缓冲队列;针对除所述第一个算子以外的任一目标算子,将用于保存所述任一目标算子的前一算子的执行结果数据的第一缓冲队列的地址信息和用于保存所述任一目标算子的执行结果数据的第二缓冲队列的地址信息,发送至用于执行所述任一目标算子的计算机设备,以使执行所述任一目标算子的计算机设备基于接收到的地址信息定位对应的所述第一缓冲队列和所述第二缓冲队列。上述申请中的一个可选实施方式,通过在执行算子操作的计算机设备中保存所需前一算子的执行结果数据的第一缓冲队列的地址信息,以及用于存储本算子的执行结果数据的第二缓冲队列的地址信息,以便执行算子操作的线程能够实现队列的准确定位,为图数据库的遍历操作提供保障。可选的,若所述缓冲队列创建于队列集群中,则所述缓冲队列的地址信息包括队列标识;若所述缓冲队列创建于计算机设备中,则所述缓冲队列的地址信息包括队列所在计算机设备的设备标识、端口信息和队列标识中的至少一个。上述申请中的一个可选实施方式,通过细化在不同位置所创建的缓冲队列对应的地址信息,体现了缓冲队列创建位置的多样性,同时为图数据库的遍历操作提供支撑。可选的,所述方法还包括:在除第一个算子以外的任一目标算子对应的线程确定满足算子执行终止条件时,执行预设操作以通知所述任一目标算子之前的各算子对应的线程终止对应算子的操作。上述申请中的一个可选实施方式,通过在后一算子在确定满足终止条件时,执行预设操作以通知前面所有算子终止执行,从而通过反馈机制消除了潜在的大量无效计算。可选的,执行预设操作以通知所述任一目标算子之前的各算子对应的线程终止对应算子的操作,包括:将所述任一目标算子作为当前算子;将用于保存当前算子的前一算子的执行结果数据的缓冲队列的读端状态关闭,以使前一算子对应的线程在检测到该缓冲队列的读端状态被关闭时,停止向该缓冲队列写入数据并关闭该缓冲队列的写端状态,以终止前一算子的执行;将前一算子作为新的当前算子,并返回执行将用于保存当前算子的前一算子的执行结果数据的缓冲队列的读端状态关闭的操作,直至所述第一个算子的执行被终止;或者,在预设全局信息表上登记终止信息,以使所述任一目标算子之前的各算子对应的线程读取到所述终止信息时,终止执行对应算子的操作。上本文档来自技高网...

【技术保护点】
1.一种图数据库遍历方法,其特征在于,包括:/n获取输入的图遍历语句,确定所述图遍历语句包含的至少两个算子和各算子的执行顺序,为各算子分别分配线程,并为每两个相邻算子分别创建缓冲队列;/n对于每两个相邻算子,通过所述两个相邻算子中前一算子对应的线程,执行前一算子的操作,并将前一算子的执行结果数据写入所述两个相邻算子对应的缓冲队列中;以及,通过所述两个相邻算子中后一算子对应的线程,并行从所述缓冲队列中读取所述两个相邻算子中前一算子的执行结果数据,以用于执行后一算子的操作。/n

【技术特征摘要】
1.一种图数据库遍历方法,其特征在于,包括:
获取输入的图遍历语句,确定所述图遍历语句包含的至少两个算子和各算子的执行顺序,为各算子分别分配线程,并为每两个相邻算子分别创建缓冲队列;
对于每两个相邻算子,通过所述两个相邻算子中前一算子对应的线程,执行前一算子的操作,并将前一算子的执行结果数据写入所述两个相邻算子对应的缓冲队列中;以及,通过所述两个相邻算子中后一算子对应的线程,并行从所述缓冲队列中读取所述两个相邻算子中前一算子的执行结果数据,以用于执行后一算子的操作。


2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按照各算子的执行顺序,将令牌数据在各算子对应的线程间传递,以使接收到令牌数据的线程开始执行本线程对应算子的操作,并将所述令牌数据传递至下一算子对应的线程。


3.根据权利要求2所述的方法,其特征在于,为各算子分别分配线程,包括:
根据可用线程的数量,按照各算子的执行顺序,为各算子分别分配线程。


4.根据权利要求3所述的方法,其特征在于,若所述可用线程的数量小于算子的数量,在按照各算子的执行顺序,将令牌数据在各算子对应的线程间传递时,所述方法还包括:
接收到所述令牌数据的线程判断下一算子是否具有对应的线程;
若接收到所述令牌数据的线程判断下一算子不具有对应的线程,则在出现满足预设条件的已分配线程时,将所述已分配线程重新分配给所述下一算子,并将所述令牌数据传递至所述已分配线程,以使所述已分配线程执行所述下一算子的操作;
其中,所述预设条件为所述已分配线程已执行完本线程对应的算子的操作。


5.根据权利要求1所述的方法,其特征在于,为各算子分别分配线程,并为每两个相邻算子分别创建缓冲队列,包括:
为各算子分别分配本地计算机设备的线程,并为每两个相邻算子在所述本地计算机设备分别创建缓冲队列;或者,
针对各算子,从至少两个计算机设备中确定用于执行所述算子的计算机设备,并为所述算子分配所确定的计算机设备的线程;
针对每两个相邻算子,从至少两个计算机设备中确定用于创建缓冲队列的计算机设备,并在所确定的计算机设备中创建所述两个相邻算子对应的缓冲队列。


6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
针对第一个算子,将用于保存所述第一个算子的执行结果数据的缓冲队列的地址信息发送至用于执行所述第一个算子的计算机设备,以使执行所述第一个算子的计算机设备基于接收到的所述地址信息定位对应的缓冲队列;
针对除所述第一个算子以外的任一目标算子,将用于保存所述任一目标算子的前一算子的执行结果数据的第一缓冲队列的地址信息和用于保存所述任一目标算子的执行结果数据的第二缓...

【专利技术属性】
技术研发人员:张海平汪洋陈曦王益飞
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1