在这两种方法中,似乎都存储了顶点,并且可以在以后正确检索。
通用配置:
DseCluster dseCluster = DseCluster.builder()
.addContactPoint("192.168.1.43")
.build();
DseSession dseSession = dseCluster.connect();
GraphTraversalSource g = DseGraph.traversal(
dseSession, new GraphOptions().setGraphName("graph")
);
方法1:
Vertex v = g.addV("User").property("uuid","testuuid231").next();
方法2:
GraphStatement graphStatement = DseGraph.statementFromTraversal(
g.addV("User").property("uuid","testuuid231")
);
GraphResultSet grs = dseSession.executeGraph(graphStatement.setGraphName("graph"));
Vertex v = grs.one().asVertex() // as(Vertex.class) is not allowed after 1.1
1条答案
按热度按时间ukdjmx9f1#
看起来您正在使用
java-dse-graph
,是吗?这是一个相对较新的API(仍处于测试阶段),它允许您在幕后使用DataStax Enterprise Java驱动程序制作带有Apache修补程序的Gremlin Traversals。方法1的好处是,您可以确保为一个遍历形成了有效的遍历,尽管您也可以通过
statementFromTraversal
实现这一点(您也可以将String
或GraphStatement
传递到executeGraph
中,在这一点上,您无法确保执行的是有效遍历)。此外,您可以编写与供应商无关的代码,因为您使用的是修补程序API,而不是数据税驱动程序。嗯,您仍然在使用它,但一旦您从DseSession
中获得了GraphTraversalSource
,就不能直接使用它。方法2有一些方法1(目前)没有的优点:
1.如果您熟悉数据税驱动程序,您可以使用许多您熟悉的API(
ResultSet
、Statement
等)。1.TinkerPop的异步API(TINKERPOP-1490)是最近添加的,我不确定它是否适用于
java-dse-graph
(尚未尝试)。使用statementFromTraversal
,可以将生成的GraphStatement
传递到DseSession.executeAsync
中进行异步。1.DSE Graph具有不属于Gremlin的架构API。因此,不能仅使用TinkerPop更改模式。JAVA-1061将引入一个模式API,用于使用
java-dse-graph
执行此操作。在此之前,您必须使用executeGraph(String|GraphStatement)
。1.您可以使用方法2执行完整的groovy/gremlin代码。这允许您在一个调用中执行事务管理和多次遍历等操作,而目前使用方法1无法做到这一点。
我预计
java-dse-graph
(方法1)将成为未来与DSE Graph交互的更为惯用的方式。statementFromTraversal
提供了一种很好的方法,可以充分利用这两个世界(Apache TinkerPop+DataStax java驱动程序接口的好处)。