为什么蓝图堆栈中的RexsterGraph不适用于高性能图遍历:
https://github.com/tinkerpop/blueprints/wiki/Rexster-Implementation
有什么限制? 然后我应该回避执行gremlin抛出一个简单的字符串进行评估吗?
答案 0 :(得分:1)
RexsterGraph
使用Rexster REST API,它是Blueprints API的RESTful表示形式。因此,RexsterGraph
中调用的每个Blueprints方法都转换为HTTP调用。
这里有一个例子,说明为什么这对于高性能的遍历"有害。以toy graph为例。让我们说我想用RexsterGraph
做一些简单的事情:g.v(1).out.filter{it.name=='josh'}.name
。这将转换为以下HTTP调用:
v(1)
v(1)
正如您所看到的,它效率不高。它是Blueprints API与Rexster REST API的一对一映射。就是这样。可以提高效率吗?可能......我们可能会考虑缓存属性值或其他东西,但对于高性能遍历来说它仍然会非常健谈#34;尝试提高效率的其他问题是处理序列化闭包的机制,以便可以在服务器上执行。
最后,很久以前就确定这不是一个好方法,我们开始建议不要使用RexsterGraph
来支持服务器端DSL和RexPro / REST Gremlin扩展。