从数据库表导入图谱,如果点结构的vid 对应的数据库字段搞错了,已经导入的数据和边怎么删除?

老师,我们现在的场景是从数据库表导入图谱,如果点结构的vid 对应的数据库字段搞错了,已经导入的数据和边怎么删除?

我移动到了新的帖子,请问你的情况里没有错误的 VID 的列表么?有的话直接构造删除语句就可以,值得注意的是,DELETE 语句支持多条(bulk),建议不要一条一条去删,把多条构造成一句。

vid是通过数据库查询的,可能每次查询的数据都不一样,所以并不能准确的知道要删除的vid列表

我们这边清空是通过 LOOKUP ON %s | DELETE VERTEX $-.VertexID

2 个赞

从删库到。。

2 个赞

如果不是线上数据库,LOOKUP | DELETE 还不敢保证清理干净的话,不知道应该删除哪些数据的话,可能只能删 space 保证没有错误残留了呢。

哈哈哈!吴老师这个情况是不是没有更好的办法了哈(删 space / 不是跑路)?

老师,你说的 DELETE 语句支持多跳,建议不要一条一条去删,把多条构造成一句。
这个怎么实现的?语句怎么写

抱歉,是我打字错误,就是多条,不是多跳。

DELETE VERTEX <vid> [, <vid> ...];
DELETE VERTEX "player100", "player101";

类似sql 中in的操作;关键我们不知道具体的vid,可能不适合

老师,如果图谱内的点很多 假设有千万级 ,我通过LOOKUP ON %s | DELETE VERTEX $-.VertexID 这种方式删除,大概耗时多久,需要修改下面的配置吗

删库吧

2 个赞

这个超时时间是 GraphD RPC call StorageD 的,具体时间可以用小的 LOOKUP 试一下估算时间。

不过还有一个问题是,有可能在 LOOKUP 数据太大的情况,把 GraphD 内存撑爆(现在 LIMIT 也不能缓解,因为非 getNeighbors 的 LIMIT 下推到存储还没做),所以尽量把 LOOKUP 条件限制一下批量去这么执行。

这个错误的场景真的不能删 Space 吗?

space有很多tag,只想删除某个错误导入的tag的点数据和关联边数据

老师,遇见你之前说的问题了,有什么好的解决办法

数据量 4万左右

是超时了还是内存不足了?如果是超时了调大超时的 timer ,如果是内存不足了,可否改变 LOOKUP 条件缩小范围呢?如果不行的话(内存爆掉了 graphD),只能选择在更大的机器上运行 graphD去执行这操作(未来我们的 limit 下推可以解决这个问题,只需要 limit 过大的 lookup/match 就可以防止爆掉)。

应该是超时了

limit的解决方案 预计什么时间可以实现

如果是超时造成,limit 下推有了也不一定能缓解这个问题哈(query 里 graphd → storaged 的调用可能可能还是会超时)

预计下半年我们会优化这一块哈