NebulaGraph 3.8.0GO语句执行器深度剖析:从源码到多跳遍历的全链路解析
引言:问题界定与场景引入
本文将深入解析用户提出的“GO语句的执行器(Executor)是如何一步步遍历图的?其源码逻辑是怎样的?”这一核心问题。作为 NebulaGraph 中最基础、最高频的图遍历语句,GO的执行效率直接决定了整个图数据库在路径查询、关系发现等场景下的性能表现。
我们将聚焦于NebulaGraph 3.8.0版本,系统性地拆解GO语句从客户端请求到最终结果返回的完整生命周期,包括:
- 执行计划生成:
GO语句如何被解析并转换为可执行的计划树。 - 执行器调度:
GoExecutor如何被调度并驱动整个遍历过程。 - 多跳遍历机制:
GoExecutor如何通过循环调用GetNeighbors接口实现多跳遍历。 - 数据交互细节:
Graphd与Storaged之间 gRPC 调用的数据结构和通信模式。 - 源码级实现