如何 运行 多个 gremlin 命令作为一个事务?
How to run multiple gremlin commands as a single transaction?
在 Amazon Neptune 中,我想 运行 Java 中的多个 Gremlin 命令作为单个事务。该文件说 tx.commit() 和 tx.rollback() 不受支持。它暗示了这一点——由分号 (;) 或换行符 (\n) 分隔的多个语句包含在单个事务中。
文档中的示例显示 Java 支持 Gremlin,但我不明白如何 "Multiple statements separated by a semicolon"
GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(簇));
// Add a vertex.
// Note that a Gremlin terminal step, e.g. next(), is required to make a request to the remote server.
// The full list of Gremlin terminal steps is at https://tinkerpop.apache.org/docs/current/reference/#terminal-steps
g.addV("Person").property("Name", "Justin").next();
// Add a vertex with a user-supplied ID.
g.addV("Custom Label").property(T.id, "CustomId1").property("name", "Custom id vertex 1").next();
g.addV("Custom Label").property(T.id, "CustomId2").property("name", "Custom id vertex 2").next();
g.addE("Edge Label").from(g.V("CustomId1")).to(g.V("CustomId2")).next();
你说的doc是使用"string"方式提交查询。在您的方法中,您通过使用图形遍历源("g" 对象)的远程实例来使用 "bytecode" 模式。相反,您应该通过客户端对象提交字符串脚本
Client client = gremlinCluster.connect();
client.submit("g.V()...iterate(); g.V()...iterate(); g.V()...");
您还可以使用 SessionedClient,它会 运行 在 close() 时同一事务中的所有查询。
获取集群对象后,
String sessionId = UUID.randomUUID().toString();
Client client = cluster.connect(sessionId);
client.submit(query1);
client.submit(query2);
.
.
.
client.submit(query3);
client.close();
当你 运行 .close() 时,所有的突变都会被提交。
您还可以捕获来自查询的响应 reference。
List<Result> results = client.submit(query);
results.stream()...
在 Amazon Neptune 中,我想 运行 Java 中的多个 Gremlin 命令作为单个事务。该文件说 tx.commit() 和 tx.rollback() 不受支持。它暗示了这一点——由分号 (;) 或换行符 (\n) 分隔的多个语句包含在单个事务中。
文档中的示例显示 Java 支持 Gremlin,但我不明白如何 "Multiple statements separated by a semicolon"
GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(簇));
// Add a vertex.
// Note that a Gremlin terminal step, e.g. next(), is required to make a request to the remote server.
// The full list of Gremlin terminal steps is at https://tinkerpop.apache.org/docs/current/reference/#terminal-steps
g.addV("Person").property("Name", "Justin").next();
// Add a vertex with a user-supplied ID.
g.addV("Custom Label").property(T.id, "CustomId1").property("name", "Custom id vertex 1").next();
g.addV("Custom Label").property(T.id, "CustomId2").property("name", "Custom id vertex 2").next();
g.addE("Edge Label").from(g.V("CustomId1")).to(g.V("CustomId2")).next();
你说的doc是使用"string"方式提交查询。在您的方法中,您通过使用图形遍历源("g" 对象)的远程实例来使用 "bytecode" 模式。相反,您应该通过客户端对象提交字符串脚本
Client client = gremlinCluster.connect();
client.submit("g.V()...iterate(); g.V()...iterate(); g.V()...");
您还可以使用 SessionedClient,它会 运行 在 close() 时同一事务中的所有查询。
获取集群对象后,
String sessionId = UUID.randomUUID().toString();
Client client = cluster.connect(sessionId);
client.submit(query1);
client.submit(query2);
.
.
.
client.submit(query3);
client.close();
当你 运行 .close() 时,所有的突变都会被提交。
您还可以捕获来自查询的响应 reference。
List<Result> results = client.submit(query);
results.stream()...