在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 个赞