1

我有下一个配置:带有 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 建立连接(而不是直接通过 JanusGraph graph = JanusGraphFactory.build().set("storage.backend", "cassandra").set("storage.hostname", "127.0.0.1").open();)并获取支持事务的图形?

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

4

3 回答 3

1

Tinkerpop provides Cluster object to keep the config of connection. Using Cluster object graphTraversalSource object can be spawned.

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 object is thread safe. With remote each query will be executed in separate transaction. Ideally gts should be a singleton object.

Make sure to call gts.close() and cluster.close() upon shutdown of application else it may lead to connection leak.

于 2020-02-06T08:56:00.630 回答
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

...并在远程模式下工作(使用:>or :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(...)

您不需要为图形和拖曳定义变量,而是使用

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

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

于 2017-11-17T09:50:54.117 回答
-1

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

于 2019-11-28T04:01:09.340 回答