我正在使用Gremlin语言查询JanusGraph(和其他数据库系统),并且通常使用traversal
op processor以ByteCode
格式发送查询。但是,对于某些查询,我需要事务处理(又名会话)来批处理多个读/写操作,为此,我应该使用session
op processor。
问题-traversal
处理器以gremlin字节码接受查询,而session
op处理器以gremlin字符串接受查询。我可以通过任何方式进行事务性查询(因为我需要一系列读和写的倍数)并以ByteCode
的形式发送?
我主要问的是,因为我发现通过traversal
处理器以ByteCode身份运行的查询的开销时间明显少于与其他处理器作为字符串运行的相同查询(相差约30ms)。
谢谢!
答案 0 :(得分:1)
您不能在会话中使用基于字节码的请求,将来也无意支持该请求。实际上,通常会针对与工具开发相关的非常特定的用例(例如Gremlin Console(以及类似的图形可视化应用程序))提供会话,并且可能会在某些时候弃用(并在TinkerPop 4.x中完全删除)。最好不要依赖它。 TinkerPop在很大程度上将交易定义为一次遍历。
我发现通过遍历处理器以ByteCode运行的查询的开销时间比在其他处理器中以字符串形式运行的查询要低得多
我无法解释性能上的差异。通常,字节码请求比基于脚本的请求要快,但是有时脚本缓存和特定的遍历模式有时会表现出更好的性能,但这与大多数已完成的常规测试相反。