【问题标题】:How to solve query janusgraph by gremlin with Java takes too much time?java - 如何通过gremlin用Java解决查询janusgraph需要太多时间?
【发布时间】:2019-09-03 08:15:23
【问题描述】:

我在使用 janusgraph 创建的远程图中有 500 个顶点和 400 条边,我使用 tinkerpop.gremlin 进行搜索。但是打开一个GraphTraversalSource再关闭它往往比较耗时。比如一个neo4j的查询需要200ms,那么janusgraph中对应的操作大概需要4分钟左右。

我搜索了谷歌和官方文档,但没有找到任何可以解决我面临的问题的东西。

这是一个示例代码:

public class ALittleTest {
    public static void main(String[] args) throws Exception{

        double startTime =  System.currentTimeMillis();

        String objectID = "xxxxxxxxxxxxxxx";

        // open graph
        Graph graph = EmptyGraph.instance();
        GraphTraversalSource g = graph.traversal().withRemote("remote-graph.properties");

        double makeGraphTime =  System.currentTimeMillis();
        // query
        Vertex rootVertex = g.V().has("ID", objectID).next();
        double queryGraphTime =  System.currentTimeMillis();

        // close graph
        g.close();
        double endTime =  System.currentTimeMillis();

        double queryTime = (queryGraphTime - makeGraphTime)/1000.00;
        double usedTime = (endTime - startTime)/1000.00;

        System.out.println(queryTime);
        System.out.println(usedTime);
    }
}

上面代码的结果是:

"queryTime":0.538,"usedTime":4.307. 

似乎打开与 gremlin-server 的连接并关闭它需要很多时间。我们如何提高性能?

【问题讨论】:

    标签: java graph-databases gremlin janusgraph


    【解决方案1】:

    创建和销毁与服务器的连接是昂贵的。我认为您无法做任何事情来专门加快这些过程中的任何一个。当然,你真的不应该有规律地创建和破坏连接。您应该在应用程序的整个生命周期内创建并重用您与服务器建立的连接。也就是说,即使打开和关闭连接也需要四分钟,这似乎超出了我通常预期的执行时间,因此可能还有其他问题在起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多