1

我正在使用 tinkerpop3 gremlin server

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

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

当有很多结果(大约 2000-3000)时,查询很慢,20 多秒才能得到 JSON-results 响应。

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

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

有任何想法吗?谢谢

4

1 回答 1

2

这看起来确实很慢,但它正在内存中构建一个可能很大的结果集,并且序列化一个图形元素(例如整个 Vertex 或 Edge)有点“繁重”,因为它试图匹配 Vertex/Edge API 层次结构的一般结构. 我们已经看到只需将查询更改为以下内容即可获得更快的序列化时间:

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

或者如果您还需要 id/label:

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

通过这种方式,顶点/边的层次结构被扁平化为一个简单的映射,它的序列化开销更少。简而言之,限制您在客户端实际需要的数据量以提高性能。

于 2016-02-01T12:40:16.467 回答