3

我在 AWS 上部署了 dynamodb-janusgraph-storage-backend,我试图弄清楚如何从 Java 连接到 gremlin 服务器。我的项目中有 dynamodb-janusgraph-storage-backend 的 sbt 依赖项,但我不想使用 gremlin 服务器作为我的 java 应用程序的一部分运行。我需要它独立运行并将java应用程序连接到它。

我研究了多个选项,例如使用 Cluster (gremlin-java) 和 withRemote (gremlin-driver),但两者都有局限性。我想使用 Java Gremlin API,如果我使用 Cluster,我就无法使用。使用 withRemote 方法,我无法弄清楚如何初始化图形实例。

gremlin docs 上的示例显示了EmptyGraph.instance()如果我想使用 JanusGraph API 则无法使用。我需要这部分来使用 Janusgraph:

Cluster cluster = Cluster.open("conf/remote-objects.yaml"); // this has hosts and ports to gremlin server running in AWS
graph = EmptyGraph.instance();
graph.traversal().withRemote(DriverRemoteConnection.using(cluster))

我需要graph对象是 JanusGraph 类型,以便我可以使用openManagement()其他方法。此外,使用高级 Graph 类型,我无法添加新顶点。我需要能够从我的 java 代码中创建、获取、更新。

4

1 回答 1

1

目前无法通过远程驱动程序调用 JanusGraph Schema API。如果您不想从应用程序中打开 JanusGraph 实例,则必须将模式构建为字符串并使用客户端提交将其发送到 Gremlin 服务器。您仍然可以使用带有远程驱动程序的遍历源来构建和查询图形。

Cluster cluster = Cluster.open("conf/remote-objects.yaml");

// use client to create the schema
Client client = cluster.connect();
String schema = "mgmt=graph.openManagement();";
schema += "mgmt.makeVertexLabel(\"person\").make();";
schema += "mgmt.makeVertexLabel(\"person\");";
schema + "mgmt.makePropertyKey(\"name\").dataType(String.class).make();"
schema += "mgmt.commit(); true";
CompletableFuture<List<Result>> results = client.submit(schema).all();

// use traversals only to interact with the graph
Graph graph = EmptyGraph.instance();
GraphTraversalSource g = graph.traversal().withRemote(DriverRemoteConnection.using(cluster));
Vertex v = g.addV("person").property("name", "pepe").next();
List<Vertex> vlist = g.V().toList();
于 2017-09-07T14:09:59.333 回答