2

似乎在这两种方法中,顶点都被存储并且可以在以后正确检索。

常用配置:

DseCluster dseCluster = DseCluster.builder()
        .addContactPoint("192.168.1.43")
        .build();
DseSession dseSession = dseCluster.connect();
GraphTraversalSource g = DseGraph.traversal(
    dseSession, new GraphOptions().setGraphName("graph")
);

方法一:

Vertex v = g.addV("User").property("uuid","testuuid231").next();

方法二:

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
4

1 回答 1

4

看起来你正在使用java-dse-graph,对吗?这是一个相对较新的 API(仍处于测试阶段),它允许您使用幕后的 DataStax Enterprise Java 驱动程序使用 Apache Tinkerpop 制作 Gremlin Traversals。

方法 1 的好处是您可以确定您正在为一个人形成有效的遍历,尽管您也可以通过statementFromTraversal(您也可以通过 aStringGraphStatement进入executeGraph,此时您不能确定您正在执行有效的遍历) . 此外,您可以编写更多与供应商无关的代码,因为您使用的是 Tinkerpop API 而不是 datastax 驱动程序。好吧,您仍在使用它,但在您GraphTraversalSourceDseSession.

方法 2 有一些方法 1 中没有的好处(目前):

  1. 如果您熟悉 datastax 驱动程序,则可以使用许多您熟悉的相同 API(ResultSetStatement等)。
  2. TinkerPop ( TINKERPOP-1490 ) 的异步 API 是最近添加的,我不确定它是否可以使用java-dse-graph(还没有尝试过)。使用statementFromTraversal,您可以将生成的数据传递GraphStatementDseSession.executeAsync执行异步操作。
  3. DSE Graph 有一个不属于 Gremlin 的模式 API。因此,您不能单独使用 TinkerPop 进行架构更改。 JAVA-1061将引入一个模式 API 来使用java-dse-graph. 在此之前,您将不得不使用executeGraph(String|GraphStatement).
  4. 您可以使用方法 2 执行完整的 groovy/gremlin 代码。这使您可以在一次调用中执行事务管理和执行多个遍历等操作,而您目前无法使用方法 1 执行这些操作。

我希望java-dse-graph(方法 1)将来会成为与 DSE Graph 交互的更惯用的方式。 statementFromTraversal提供了一种两全其美的好方法(Apache TinkerPop 的好处 + DataStax java 驱动程序的接口)。

于 2016-12-19T22:49:17.290 回答