我在AWS上部署了dynamodb-janusgraph-storage-backend,我试图弄清楚如何从Java连接到gremlin服务器。 我在我的项目中依赖dynamodb-janusgraph-storage-backend,但我不想使用作为我的java应用程序一部分运行的gremlin服务器。我需要它独立运行并将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代码中创建,获取和更新。
答案 0 :(得分:1)
目前无法通过远程驱动程序调用JanusGraph Schema API。如果您不想从应用程序中打开JanusGraph实例,则必须将模式构建为String并使用Client submit将其发送到Gremlin Server。您仍然可以使用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();