2015-01-15 88 views
1

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

的查询是多步,像这样的例子:

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

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

回答

0

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

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

以上所有适用于TinkerPop 2.x.期待TinkerPop 3.x(尚未发布),您将拥有Gremlin Server,它取代了Rexster,并允许将结果更高效地传输回呼叫客户端。它还使供应商有机会优化遍历,就像您提供的例子一样,在实现的过程中效率更高。目前还没有看到这可能适用于远程配置,但想想这个领域可能有哪些可能是有趣的。