- nebula 版本:3.0.2
- 部署方式:分布式
- 是否为线上版本:Y
之前数据插入有异常数据,导致出现了大量的悬挂边(黑点),从而在实际应用中出现一些异常情况
有没有什么办法可以批量清理图库中的悬挂边
之前数据插入有异常数据,导致出现了大量的悬挂边(黑点),从而在实际应用中出现一些异常情况
有没有什么办法可以批量清理图库中的悬挂边
1)目前没有好的办法把悬挂边查询出来。
2)你是有部分的点没有插入进去吧?可以把这部分失败的点再插入一次。
需要知道边的类型,并在边上创建索引。以 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
上面语句没有考虑有 rank 的情况。
这个在数据量大的时候会不会容易把图库搞崩?图库里目前节点跟关系的数据量都是几千万
应该不会。改成 yield distinct id($$)
会省很多内存。