[发明专利]一种图数据库遍历方法、装置、设备及存储介质有效
申请号: | 202010043990.2 | 申请日: | 2020-01-15 |
公开(公告)号: | CN111259205B | 公开(公告)日: | 2023-10-20 |
发明(设计)人: | 张海平;汪洋;陈曦;王益飞 | 申请(专利权)人: | 北京百度网讯科技有限公司 |
主分类号: | G06F16/901 | 分类号: | G06F16/901;G06F16/903 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 孟金喆 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据库 遍历 方法 装置 设备 存储 介质 | ||
1.一种图数据库遍历方法,其特征在于,包括:
获取输入的图遍历语句,确定所述图遍历语句包含的至少两个算子和各算子的执行顺序,为各算子分别分配线程,并为每两个相邻算子分别创建缓冲队列;
对于每两个相邻算子,通过所述两个相邻算子中前一算子对应的线程,执行前一算子的操作,并将前一算子的执行结果数据写入所述两个相邻算子对应的缓冲队列中;以及,通过所述两个相邻算子中后一算子对应的线程,并行从所述缓冲队列中读取所述两个相邻算子中前一算子的执行结果数据,以用于执行后一算子的操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按照各算子的执行顺序,将令牌数据在各算子对应的线程间传递,以使接收到令牌数据的线程开始执行本线程对应算子的操作,并将所述令牌数据传递至下一算子对应的线程。
3.根据权利要求2所述的方法,其特征在于,为各算子分别分配线程,包括:
根据可用线程的数量,按照各算子的执行顺序,为各算子分别分配线程。
4.根据权利要求3所述的方法,其特征在于,若所述可用线程的数量小于算子的数量,在按照各算子的执行顺序,将令牌数据在各算子对应的线程间传递时,所述方法还包括:
接收到所述令牌数据的线程判断下一算子是否具有对应的线程;
若接收到所述令牌数据的线程判断下一算子不具有对应的线程,则在出现满足预设条件的已分配线程时,将所述已分配线程重新分配给所述下一算子,并将所述令牌数据传递至所述已分配线程,以使所述已分配线程执行所述下一算子的操作;
其中,所述预设条件为所述已分配线程已执行完本线程对应的算子的操作。
5.根据权利要求1所述的方法,其特征在于,为各算子分别分配线程,并为每两个相邻算子分别创建缓冲队列,包括:
为各算子分别分配本地计算机设备的线程,并为每两个相邻算子在所述本地计算机设备分别创建缓冲队列;或者,
针对各算子,从至少两个计算机设备中确定用于执行所述算子的计算机设备,并为所述算子分配所确定的计算机设备的线程;
针对每两个相邻算子,从至少两个计算机设备中确定用于创建缓冲队列的计算机设备,并在所确定的计算机设备中创建所述两个相邻算子对应的缓冲队列。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
针对第一个算子,将用于保存所述第一个算子的执行结果数据的缓冲队列的地址信息发送至用于执行所述第一个算子的计算机设备,以使执行所述第一个算子的计算机设备基于接收到的所述地址信息定位对应的缓冲队列;
针对除所述第一个算子以外的任一目标算子,将用于保存所述任一目标算子的前一算子的执行结果数据的第一缓冲队列的地址信息和用于保存所述任一目标算子的执行结果数据的第二缓冲队列的地址信息,发送至用于执行所述任一目标算子的计算机设备,以使执行所述任一目标算子的计算机设备基于接收到的地址信息定位对应的所述第一缓冲队列和所述第二缓冲队列。
7.根据权利要求6所述的方法,其特征在于,若所述缓冲队列创建于队列集群中,则所述缓冲队列的地址信息包括队列标识;
若所述缓冲队列创建于计算机设备中,则所述缓冲队列的地址信息包括队列所在计算机设备的设备标识、端口信息和队列标识中的至少一个。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:
在除第一个算子以外的任一目标算子对应的线程确定满足算子执行终止条件时,执行预设操作以通知所述任一目标算子之前的各算子对应的线程终止对应算子的操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京百度网讯科技有限公司,未经北京百度网讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010043990.2/1.html,转载请声明来源钻瓜专利网。