2015-01-15 84 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,並允許將結果更高效地傳輸回呼叫客戶端。它還使供應商有機會優化遍歷,就像您提供的例子一樣,在實現的過程中效率更高。目前還沒有看到這可能適用於遠程配置,但想想這個領域可能有哪些可能是有趣的。