应用场景探讨

nebula 团队 你们好,

对于 TAG 对 TAG 之间存在千万级别的 EDGE,这种查询场景,效率上怎么解决

如:

点与数量级

TAG_A: 500W
TAG_B: 10
TAG_C: 10
边及数据量

EDGE_B_to_A : 数量边,百万级别
EDGE_C_to_A : 数量边,百万级别
伪代码查询语句

(
go from hash(“B”) over EDGE_B_to_A YIELD EDGE_B_to_A._dst AS id
INTERSECT
go from hash(“C”) over EDGE_C_to_A YIELD EDGE_C_to_A._dst AS id
) | yield count(*)
这种场景,我们公司在实践中,发现查询IO超时( i/o timeout )

对于这种场景,nebula 团队有什么好建议,优化参数,或者方案吗

在此,先十分感觉你们对于开源社区的贡献

mark

像py-client 可以设置timeout等于-1来避免超时,不知道是不是类似问题

看起来类似于求共同好友个数,这个地方优化关键是把distinct下推,这样在求交集的时候数据量会小很多。

两个处理点:
A:对于百万级别的边,在nebula 中查询效率上不是很理想,超过百万取交集,基本就IO超时
B: 将上述交集汇总输出 ,效率上怎么处理

你好,critical27 ,请问下,对于上述的的查询场景, 在nebula能做到秒级别吗

秒级现在应该不行,百万数据量的磁盘和网络开销并不小,优化关键我之前说了,把distinct下推之后,数据规模应该会大幅下降,之后再求交集的开销会小很多。