nebula 版本:3.5.0
部署方式:目前单机,后面可能分布式部署
安装方式:二进制版本
是否上生产环境:N
以前使用neo4j能查询出来,数据量大概在80万左右,现在切换nebula数据库,用studio后台查询时,nebula服务器直接崩了。
需求:通过一系列查询得到with g1,g2,以及连接点gIds,linkIds两个id集合,两个id集合有且只有一条路径将g1,g2连接起来。
个人方案:
1 MATCH (g1:Geo)-[e:connected]-(l:Link) WHERE id(g1)=‘xxx’ and dst(e) in linkIds RETURN l.Link;
得到连接g1的下一个点 l1,然后在linkIds集合中去除l1;
2 MATCH (l1:Link)-[e:connected]-(g3:Geo) WHERE id(l1)=‘xxx’ and dst(e) in gIds RETURN g3.Geo;
得到连接l1的下一个点g3,然后在gIds集合中去除g3;重复第一步;
if(id(g3)==id(最终点g2)) break;到了终点; 用一个集合记录走过的点,就是一条完整的路径path;
if(linkIds = 空集合 或者 gIds = 空集合 ) break;
缺陷:频率的数据库 i/o,估计50-80次数据库查询;性能改如何优化;
各位大佬帮忙看看,有啥比较好的方案,谢谢啦