如何从远程gremlin服务器获取具有事务支持的图形?

时间:2017-11-15 13:02:04

标签: tinkerpop gremlin-server janusgraph

我有下一个配置:使用Janus GraphDB的远程Gremlin服务器(TinkerPop 3.2.6)

我在remote.yaml中有gremlin-console(带janus插件)+ conf: hosts: [10.1.3.2] # IP og gremlin-server host port: 8182 serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}

所以我想通过gremlin-server建立连接(不是直接通过graph = JanusGraphFactory.build().set("storage.backend", "cassandra").set("storage.hostname", "127.0.0.1").open();连接到JanusGraph)并获得支持事务的图形?

有可能吗?因为我看到所有TinkerFactory图表都不支持交易

3 个答案:

答案 0 :(得分:1)

据我所知,通过gremlin服务器使用Janus图,你应该:

在gremlin-console的配置文件中定义ip& port:

conf/remote.yaml

通过Gremlin-console连接到gremlin服务器:

: remote connect tinkerpop.server conf/remote.yaml
==> Configured localhost/10.1.23.113: 8182

...并以远程模式工作(使用:>:remote console),即将所有命令(或@script)发送到gremlin-server。

:> graph.addVertex(...)

:remote console
==>All scripts will now be sent to Gremlin Server - [10.1.2.222/10.1.2.222:818]
graph.addVertex(...)

您不需要为图表和trawersal定义变量,而是使用

graph. - for the graph
g. - for the traversal

在这种情况下,您可以使用JanusGraphDB提供的所有图形功能。

答案 1 :(得分:1)

Tinkerpop提供了Cluster对象来保持连接的配置。使用集群对象可以生成graphTraversalSource对象。

this.cluster = Cluster.build()
                .addContactPoints("192.168.0.2","192.168.0.1")
                .port(8082)
                .credentials(username, password)
                .serializer(new GryoMessageSerializerV1d0(GryoMapper.build().addRegistry(JanusGraphIoRegistry.getInstance())))
                .maxConnectionPoolSize(8)
                .maxContentLength(10000000)
                .create();
        this.gts = AnonymousTraversalSource
                .traversal()
                .withRemote(DriverRemoteConnection.using(cluster));

gts对象是线程安全的。使用远程时,每个查询将在单独的事务中执行。理想情况下,gts应该是一个单例对象。

请确保在应用程序关闭时调用gts.close()和cluster.close(),否则可能导致连接泄漏。

答案 2 :(得分:0)

我相信使用withRemote()将Java应用程序连接到正在运行的gremlin服务器将不支持事务。我也很难找到与此有关的信息,但是据我所知,如果您除了阅读图形还想做任何事情,则需要使用“嵌入式janusgraph”并将远程托管的持久性数据存储在“存储后端”中。就像您在问题下半部分所描述的那样,从应用程序连接到“”。 https://groups.google.com/forum/#!topic/janusgraph-users/t7gNBeWC844 我在这里找到的一些讨论^^提到了它在远程模式下自动提交单个事务,但是当我尝试时似乎并没有这样做。