Gremlin-Server REST API 中的查询比 Gremlin Shell 慢
Query in Gremlin-Server REST API is slower vs Gremlin Shell
我正在使用 tinkerpop3 gremlin 服务器。
我执行一个简单的查询(使用标准 REST api)来获取顶点的边。
g.traversal().V(123456).outE('label')
当结果较多时(2000-3000条左右),查询很慢,20多秒才得到JSON-results响应。
有趣的是,当我使用 gremlin shell、运行 相同的查询时,接收边缘对象结果大约需要 1 秒!
我不确定,但我怀疑 gremlin-server 的 JSON 解析器(我正在使用 GraphSon)有问题(可能非常慢)。
有什么想法吗?
谢谢
这看起来确实很慢,但它在内存中构建了一个可能很大的结果集并且序列化图形元素(例如整个顶点或边)有点 "heavy" 因为它试图匹配一般结构Vertex/Edge API 层次结构。我们已经看到,只需将查询更改为:
,您就可以在何处获得更快的序列化时间
g.V(123456).outE('label').valueMap()
或者如果您还需要 id/label:
g.V(123456).outE('label').valueMap(true)
以这种方式,Vertex/Edge 的层次结构被扁平化为一个简单的 Map,它具有更少的序列化开销。简而言之,限制客户端实际需要的数据量以提高性能。
我正在使用 tinkerpop3 gremlin 服务器。
我执行一个简单的查询(使用标准 REST api)来获取顶点的边。
g.traversal().V(123456).outE('label')
当结果较多时(2000-3000条左右),查询很慢,20多秒才得到JSON-results响应。
有趣的是,当我使用 gremlin shell、运行 相同的查询时,接收边缘对象结果大约需要 1 秒!
我不确定,但我怀疑 gremlin-server 的 JSON 解析器(我正在使用 GraphSon)有问题(可能非常慢)。
有什么想法吗? 谢谢
这看起来确实很慢,但它在内存中构建了一个可能很大的结果集并且序列化图形元素(例如整个顶点或边)有点 "heavy" 因为它试图匹配一般结构Vertex/Edge API 层次结构。我们已经看到,只需将查询更改为:
,您就可以在何处获得更快的序列化时间g.V(123456).outE('label').valueMap()
或者如果您还需要 id/label:
g.V(123456).outE('label').valueMap(true)
以这种方式,Vertex/Edge 的层次结构被扁平化为一个简单的 Map,它具有更少的序列化开销。简而言之,限制客户端实际需要的数据量以提高性能。