【问题标题】:Most optimal gremlin query for getting all related vertices获取所有相关顶点的最佳 gremlin 查询
【发布时间】:2018-11-15 13:33:29
【问题描述】:

我需要获取与起始顶点相关的任意数量关系的所有顶点。我有一个有效的查询,但是在几百条边和图形的复杂性之后它开始显着变慢。有没有更有效的获取相关顶点的方法?

g.V(id)
 .emit()
 .repeat(both())
 .until(cyclicPath())
 .unfold()
 .dedup()
 .toList()

对于具有 202 个顶点、259 条边的子图,我们注意到了性能崩溃的一个示例。运行配置文件后,它似乎发出了 1,444,439 次遍历,大约花费了 80 秒。

附加信息:这来自使用 AWS Neptune 1.0.1.0.200258.0 运行

【问题讨论】:

    标签: amazon-web-services gremlin tinkerpop tinkerpop3 amazon-neptune


    【解决方案1】:

    看起来您只想找到以某种方式连接到初始顶点的所有顶点。试试这个查询(它不启用路径跟踪,因此应该更快):

    g.V(id).emit().repeat(both().dedup())
    

    【讨论】:

    • 这确实看起来更快。我遇到的问题是初始顶点包含两次,所以我必须在最后添加另一个dedup()
    • 保留一个 dedup(),但将 emit() 移到 repeat() 后面。这只会成为一个问题,如果初始顶点根本没有边,在所有其他情况下它会做你想要的。
    • 是的,我们希望查询返回单个顶点(如果存在),因此需要在 repeat() 之前添加 emit()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    相关资源
    最近更新 更多