从 Neptune 删除单个图(不是所有节点!)

问题描述 投票:0回答:1

我在 Neptune 实例上有不同的、独立的图表。 我只需要删除其中之一。我的想法是指定该图的节点的 id,然后删除可以从那里访问的所有节点,沿着两个方向的弧,因为许多节点(我将它们定义为“反向节点”)都绑定到图传出边缘(指向图形)。 我找不到正确的查询;这个删除除“反向节点”之外的所有节点:

g.V(source.getId()).emit().repeat(out()).drop().iterate();

gremlin amazon-neptune
1个回答
0
投票

如果您需要两个方向的顶点(没有循环),这应该可行:

g.V(source.getId()).emit().repeat(both().simplePath()).drop().iterate();

需要考虑的一些事项:

  • 如果大规模执行此操作,您可以考虑首先获取子图中的所有顶点和边。然后删除所有边

    g.E(<list of edge ids>).drop()
    ,然后删除所有顶点
    g.V(<list of vertex ids>).drop()
    ,因为通过 ID 直接删除它们会导致更窄的锁定。

  • Neptune 中的突变查询是单线程的,因此单个删除查询只能使用单个查询执行线程(半个 vCPU)运行。

  • 如果采取分别丢弃边和顶点的方法,还可以并行运行批量边和并行批量顶点,以加快整体丢弃速度。

© www.soinside.com 2019 - 2024. All rights reserved.