执行计划(buildPlan)咨询

在nebula-graph和nebula-storage的代码中都要生成了一个执行计划,请问query执行中,二者怎么工作的?nebula是把执行计划下推到存储层吗?nebula-storage向上提供了什么样的接口?

没有,现在query-engine的计划和storage的计划是分开的,都只是各自用的。

请问,那比如在博客所提到的算子下推(https://nebula-graph.com.cn/posts/nebula-query-engine-introduction/):


nebula-graph获取邻居顶点,它是会直接调用存储层的GetNeighborsProcessor定义的执行计划吗?

不会,你可以去看graphd和storaged的接口定义,传给storaged的数据都在接口上有说明

获取邻居的接口是 GetNeighborsRequest

1 个赞

1、graph的 执行计划 和 storage层的执行计划 没有关联,
2、graph和 storage 是通过 thrift 定义好的接口互相传数据,
3、graph的执行计划 是对用户输入的nGQL 进行解析,优化,生成对应的 查询计划, 这个计划中会有很多算子,比如getNeighbor , getProps, 等, 在执行的时候,通过thrift生成的接口去storage层取数据, 比如getNeighbor 算子,storage通过接口接收到数据后,要收集 从指定点拓展的边的信息, 这时候storage也会自己制定一个执行计划,然后把数据捞出来,通过thrift接口 回传给 graph层的 getNeighbor

2 个赞