簡體   English   中英

使用Java的Datastax DSE 5.0 Graph中是否真的不需要executeGraph()?

[英]executeGraph() is not really needed in Datastax DSE 5.0 Graph with Java?

似乎在兩種方法中都存儲了頂點,以后可以正確地對其進行檢索。

常用配置:

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();

方法二:

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

看起來您正在使用java-dse-graph ,對嗎? 這是一個相對較新的API(仍處於beta版),使您可以使用幕后的DataStax Enterprise Java驅動程序通過Apache Tinkerpop進行Gremlin遍歷。

方法1的好處是,盡管您也可以通過statementFromTraversal獲得有效的遍歷,但是您可以確保對一個遍歷進行有效遍歷(也可以將StringGraphStatement傳遞給executeGraph ,此時您不能確定自己正在執行有效遍歷)。 此外,由於您使用的是Tinkerpop API,而不是datastax驅動程序,因此您可以編寫與供應商無關的代碼。 好吧,您仍在使用它,但是一旦從DseSession獲得GraphTraversalSource ,就不會直接使用它。

方法2有一些好處,但尚無法在方法1中獲得:

  1. 如果您熟悉datastax驅動程序,則可以使用許多自己喜歡的相同API( ResultSetStatement等)。
  2. TinkerPop( TINKERPOP-1490 )的異步API是最近添加的,我不確定它是否可以與java-dse-graph (尚未嘗試過)。 使用statementFromTraversal ,可以將生成的GraphStatement傳遞到DseSession.executeAsync進行異步。
  3. DSE Graph的架構API不屬於Gremlin。 因此,您不能僅憑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驅動程序的接口)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM