dynamodb-janusgraph-storage-backend 从 Java 远程连接

dynamodb-janusgraph-storage-backend connect remotely from Java

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

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

gremlin 文档上的示例显示了 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() 和其他方法。此外,使用高级图形类型,我无法添加新的顶点。我需要能够从我的 java 代码创建、获取、更新。

目前无法通过远程驱动程序调用 JanusGraph Schema API。如果您不想从应用程序中打开 JanusGraph 实例,则必须将架构构建为字符串并使用 Client submit to send it to the Gremlin Server. You can still use the traversal source with remote driver 构建和查询图形。

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();