DSE 5.0 Graph with Java真的需要executeGraph()吗?

u4dcyp6a  于 2022-09-27  发布在  Java
关注(0)|答案(1)|浏览(131)

在这两种方法中,似乎都存储了顶点,并且可以在以后正确检索。
通用配置:

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
ukdjmx9f

ukdjmx9f1#

看起来您正在使用java-dse-graph,是吗?这是一个相对较新的API(仍处于测试阶段),它允许您在幕后使用DataStax Enterprise Java驱动程序制作带有Apache修补程序的Gremlin Traversals。
方法1的好处是,您可以确保为一个遍历形成了有效的遍历,尽管您也可以通过statementFromTraversal实现这一点(您也可以将StringGraphStatement传递到executeGraph中,在这一点上,您无法确保执行的是有效遍历)。此外,您可以编写与供应商无关的代码,因为您使用的是修补程序API,而不是数据税驱动程序。嗯,您仍然在使用它,但一旦您从DseSession中获得了GraphTraversalSource,就不能直接使用它。
方法2有一些方法1(目前)没有的优点:
1.如果您熟悉数据税驱动程序,您可以使用许多您熟悉的API(ResultSetStatement等)。
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驱动程序接口的好处)。

相关问题