如何通过 Java 的 gremlin 解决查询 janusgraph 需要太多时间?
How to solve query janusgraph by gremlin with Java takes too much time?
我在使用 janusgraph 创建的远程图中有 500 个顶点和 400 个边,我使用 tinkerpop.gremlin 进行搜索。但是打开一个GraphTraversalSource和关闭它往往是时间consuming.For例如,如果一个neo4j的查询需要200ms,那么在janusgraph中相应的操作大约需要4分钟。
我搜索了 Google 和官方文档,但没有找到任何可以解决我面临的问题的东西。
这是一个示例代码:
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 打开和关闭连接需要很多时间。我们如何才能提高性能?
与服务器的连接的创建和销毁是昂贵的。我认为您无法做任何事情来专门加速这两个过程中的任何一个。当然,您真的不应该有规律地建立和破坏联系。您应该在应用程序的生命周期内创建并重新使用与服务器建立的连接。也就是说,即使打开和关闭连接也需要四分钟,这似乎超出了我通常预期的执行时间,因此可能还有其他问题在起作用。
我在使用 janusgraph 创建的远程图中有 500 个顶点和 400 个边,我使用 tinkerpop.gremlin 进行搜索。但是打开一个GraphTraversalSource和关闭它往往是时间consuming.For例如,如果一个neo4j的查询需要200ms,那么在janusgraph中相应的操作大约需要4分钟。
我搜索了 Google 和官方文档,但没有找到任何可以解决我面临的问题的东西。
这是一个示例代码:
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 打开和关闭连接需要很多时间。我们如何才能提高性能?
与服务器的连接的创建和销毁是昂贵的。我认为您无法做任何事情来专门加速这两个过程中的任何一个。当然,您真的不应该有规律地建立和破坏联系。您应该在应用程序的生命周期内创建并重新使用与服务器建立的连接。也就是说,即使打开和关闭连接也需要四分钟,这似乎超出了我通常预期的执行时间,因此可能还有其他问题在起作用。