DSE Graph with Java Driver,如何像Titan中那样使用Tinkerpop/Gremlin API构建图形?

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

我有一个目前依赖于tinkerpop&titan的应用程序。我想评估DSE 5.0提供的Graph特性,但我没有找到任何方法来使用DSE Graph java API示例化修补图。
对于titan,我使用了tinkerpop GraphFactory类:

  • org.apache.tinkerpop.gremlin.structure。Graph g=GraphFactory.open(configurationFile);
  • 参数中的配置文件指的是TitanFactory类,该类返回tinkerpop Graph接口的实现(gremlin.Graph=com.thinkaurelius.titan.core.TitanFactor)

DSE Graph API中是否有任何等效项?

q8l4jmvw

q8l4jmvw1#

2017年4月28日更新

现在,可以通过此依赖项使用图形流畅API功能:

<dependency>
    <groupId>com.datastax.dse</groupId>
    <artifactId>dse-java-driver-graph</artifactId>
    <version>1.2.3</version>
</dependency>

2016年10月28日更新

Gremlin fluent API的第一个实现是可用的,尽管它仍处于测试阶段(https://datastax-oss.atlassian.net/browse/JAVA-1250?focusedCommentId=35907&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-选项卡面板#comment-35907):

<dependency>
    <groupId>com.datastax.cassandra</groupId>
    <artifactId>dse-driver</artifactId>
    <version>1.1.1-beta1</version>
</dependency>
<dependency>
    <groupId>com.datastax.cassandra</groupId>
    <artifactId>java-dse-graph</artifactId>
    <version>1.0.0-beta1</version>
</dependency>

下面是一个小例子:

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

        GraphTraversal<Vertex,Vertex> gT = g.addV("User").property("uuid","testuuid");

        GraphStatement graphStatement =  DseGraph.statementFromTraversal(gT);
        GraphResultSet grs = dseSession.executeGraph(graphStatement.setGraphName(GRAPH_NAME));
        System.out.println(grs.one().asVertex());

原始职务

我试图将代码从Titan迁移到Datastax DSE。我正在寻找与您相同的API,我在java DSE驱动程序的github存储库中提出了一个问题:https://github.com/datastax/java-driver-dse/issues/42
随着不同语言平台之间的大量协调和优化工作的进行,它目前正在发挥作用。
我们确实计划开发一个更流畅的api。就像一些背景一样,大多数TinkerPop/gremlin驱动程序都采用基于String的方法,即将遍历String发送到服务器,然后服务器优化遍历并执行它。结果被发送回客户端并反序列化。
对于Titan,人们通常使用的是远程服务器模式,它允许访问Graph对象。从开发的Angular 来看,这很好,因为它提供了一个经过编译时检查的流畅api,并且可以完成代码。从实际的Angular 来看,它实际上效率较低,因为它是一个远程服务器,必须往返底层数据存储才能执行遍历。因此,当前基于String的方法实际上更有效。
不过,我们确实看到了流畅api的巨大价值。我们正在研究解决方案。它可能采用RemoteGraph的形式,因此您将拥有一个类似于遍历的图形对象。我们还在TINKERPOP-1278社区中工作,以使遍历跨语言更加地道。因此,需要一点时间才能获得更好的体验的原因是,我们正在努力确保1)高效完成,2)从修补流行音乐基金会到DSE Graph都能正确完成。
结合用于遍历的RemoteGraph接口,我们将有一个流畅的api来进行更新。
您可以在这里查看完整的讨论并跟踪问题:https://github.com/datastax/java-driver-dse/issues/42(移至Jira)
https://datastax-oss.atlassian.net/browse/JAVA-1250
不幸的是,您要么需要坚持使用gremlin qraph查询将所有内容作为String查询,要么继续使用Titan,直到Datastax DSE API准备就绪。

相关问题