【问题标题】:Tinkerpop/Gremlin and a remote serverTinkerpop/Gremlin 和远程服务器
【发布时间】:2015-01-15 17:48:37
【问题描述】:

我使用 Tinkerpop/Gremlin 查询远程图形数据库(OrientDB 或 Neo4J,选择仍不清楚)。

查询是多步骤的,如下例:

g.v(1).out('likes').in('likes').out('likes').groupCount(m)

我想知道:Gremlin 查询的每一步是否都有网络往返?或者,Gremlin 查询是否“编译”成我后端的本地查询语言,然后本地查询通过网络发送一次,结果从服务器流式传输回客户端?

【问题讨论】:

    标签: neo4j orientdb gremlin tinkerpop


    【解决方案1】:

    假设您使用的是Neo4jHaGraph,那么它将按照您描述的网络调用工作,因为每个步骤都需要它们(即整个语句未编译并发送到服务器)。我不确定OrientGraph 远程配置的最新功能,尽管我怀疑它以类似的方式工作,在每一步都根据需要进行网络调用。

    开发Rexster 的原因之一是允许将 Gremlin 脚本发送到服务器,以便它可以在 Graph 的嵌入式实现上执行(例如Neo4jGraph)。通过这种方式,网络往返将减少,因为遍历的执行将发生在同一个 JVM 中。

    以上所有内容都适用于 TinkerPop 2.x。期待 TinkerPop 3.x(尚未发布),您将拥有 Gremlin Server,它取代了 Rexster,并允许更有效地将结果流式传输回调用客户端。它还使供应商有机会优化遍历,例如您提供的示例,以便在实现时更有效。这将如何应用于远程配置还有待观察,但想想在该领域可能会发生什么是很有趣的。

    【讨论】:

      【解决方案2】:

      Sqlg 优化了一些查询以减少往返次数。

      【讨论】:

        猜你喜欢
        • 2017-12-27
        • 2019-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-30
        • 2018-11-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多