悬挂边(黑点)有没有什么办法批量删除

  • nebula 版本:3.0.2
  • 部署方式:分布式
  • 是否为线上版本:Y

之前数据插入有异常数据,导致出现了大量的悬挂边(黑点),从而在实际应用中出现一些异常情况
有没有什么办法可以批量清理图库中的悬挂边

1)目前没有好的办法把悬挂边查询出来。
2)你是有部分的点没有插入进去吧?可以把这部分失败的点再插入一次。

应该是之前关系的ID生成逻辑有问题导致的,但是是以前的数据了,现在找不到。就是想看看有没有什么办法可以在图里面处理掉这些悬挂边

需要知道边的类型,并在边上创建索引。以 like 类型边为例:

(
(
 (lookup on like yield like._src as srcId |go from $-.srcId over like yield id($$) as vid)
 minus 
 (lookup on like yield like._src as srcId | go from $-.srcId over like yield id($$) as dstId | fetch prop on * $-.dstId yield id(vertex) as vid)
)
  | go from $-.vid over * bidirect yield distinct id($^) as srcId, id($$) as dstId
) | delete edge like $-.srcId->$-.dstId

然后把 delete 语句反过来再执行一遍:

(
(
 (lookup on like yield like._src as srcId |go from $-.srcId over like yield id($$) as vid)
 minus 
 (lookup on like yield like._src as srcId | go from $-.srcId over like yield id($$) as dstId | fetch prop on * $-.dstId yield id(vertex) as vid)
)
  | go from $-.vid over * bidirect yield distinct id($^) as srcId, id($$) as dstId
) | delete edge like $-.dstId->$-.srcId
4 个赞

上面语句没有考虑有 rank 的情况。

这个在数据量大的时候会不会容易把图库搞崩?图库里目前节点跟关系的数据量都是几千万

应该不会。改成 yield distinct id($$) 会省很多内存。