与Gremlin Shell相比,Gremlin-Server REST API中的查询速度较慢

时间:2016-02-01 09:22:19

标签: titan gremlin tinkerpop tinkerpop3 gremlin-server

我正在使用tinkerpop3 gremlin服务器

我执行一个简单的查询(使用标准的REST api)来获取顶点的边缘。

g.traversal().V(123456).outE('label')

当有很多结果(约2000-3000)时,查询非常慢,超过20秒才能获得JSON结果响应。

有趣的是,当我使用gremlin shell时,运行相同的查询,接收边缘对象结果大约需要1秒钟!

我不确定,但我怀疑gremlin-server的JSON解析器(我正在使用GraphSon)可能存在问题(可能非常慢)。

有什么想法吗? 感谢

1 个答案:

答案 0 :(得分:2)

这看起来确实很慢,但它正在内存中构建一个可能很大的结果集,并且序列化一个图元素,例如整个Vertex或Edge有点“沉重”,因为它试图匹配Vertex的一般结构/边缘API层次结构。我们已经看到,只需将查询更改为:

,即可获得更快的序列化时间
g.V(123456).outE('label').valueMap()

或者如果你还需要id /标签:

g.V(123456).outE('label').valueMap(true)

以这种方式,Vertex / Edge的层次结构被展平为一个简单的Map,它具有较少的序列化开销。简而言之,限制客户端实际需要的数据量以提高性能。