- nebula 版本:2.6.1
- 部署方式:分布式
- 安装方式:RPM
- 硬盘 500G x 2
- CPU 16G x 2
- 内存 64G x 2
问题描述
问题背景
当前我们的图建模可以简单地用 A->B->C->D->E 这样的模型来表示,其中ABCDE分别为性质不同的集合,ABDE集合有约2w个节点,C集合大约有6w个节点,边一共有大约100w条。
问题
现在我们已知A的子集A’和E的子集E’,想要找到从A’所有点到E’所有点的所有路径,根据目前的图建模,每条路径的形式必定是A->B->C->D->E这样的形式,最终结果需要体现路径中的全部5个点的名称或标签。
我们使用GO 语句和管道符进行查询,但是返回的时长很长,无法满足我们的要求,我们通过文档了解到通过管道符返回大量数据可能造成延时,但从官网的实例中我们看不出如何使用并发解决我们想要返回整条路径的问题。请问有没有示例用代码供参考?我们使用的是Python的客户端,这似乎对并发的支持也不是非常好。
代码
GO 1 STEPS FROM 'A1', 'A2' OVER edge1
YIELD DISTINCT dst(edge) as B, src(edge) as A |
GO 1 STEPS FROM $-.B OVER edge2
YIELD DISTINCT dst(edge) as C, $-.A as A, $-.B as B |
GO 1 STEPS FROM $-.C OVER edge3
YIELD DISTINCT dst(edge) as D, $-.A as A, $-.B as B, $-.C as C |
GO 1 STEPS FROM $-.D OVER edge4
WHERE properties($$).vertex_code IN ['E1', 'E2']
YIELD DISTINCT $-.A as A, $-.B as B, $-.C as C, $-.D as D, dst(edge) as E
其中子集A‘和子集E’可能的数据量从10到万级不等