TinkerPop:添加Vertex Graph API v / s Traversal API

时间:2018-05-07 06:38:33

标签: tinkerpop tinkerpop3

背景

在其中一个SO posts中,建议使用Traversal API而非Graph API进行变异。所以我尝试了一些测试,发现Graph API似乎更快,我完全相信这个建议,但我试图了解它的更好。

我确实尝试使用谷歌搜索,但没有找到类似的帖子

测试

查询1 :在0.19734525680541992秒内执行

g.addV('Test').property('title1', 'abc').property('title2', 'abc')

查询2 :在0.13838958740234375秒内执行

graph.addVertex(label, "Test", "title1", "abc", "title2", "abc")

问题

  1. 哪一个更好,为什么?
  2. 如果两者相同则为什么性能差异?

1 个答案:

答案 0 :(得分:2)

Graph API适用于图形提供程序,Traversal API(实际上是Gremlin语言)适用于用户。您绝对会使用Graph API降低代码的可移植性。那里的“服务器图形”,如亚马逊海王星,DSE图形,CosmosDB等,提供的环境不允许您访问Graph API,因此如果您愿意,您将永远无法切换到那些。您还开始围绕两个API构建应用程序,从而为您的开发创建一个非统一的方法(即在某些情况下,您将传递Graph API的Graph对象,在某些情况下GraphTraversalSource遍历API)。

我不知道你是如何执行你的测试的,但是我认为微观基准测试中的性能差异很小并不令我感到惊讶。 Traversal API有一些成本,但TinkerPop在该领域继续改进 - 考虑最近关闭的TINKERPOP-1950作为最近的一些例子。我不确定这会对您的特定基准有所帮助,因为基准是棘手的事情,但重点是我们并没有停止尝试在该领域进行优化。

最后,如果TinkerPop社区的讨论继续朝着过去一年的方向发展,我完全希望看到Graph API在TinkerPop 4.x中消失。此版本没有时间表,只是在讨论阶段,但我想如果您打算让您的应用程序在未来许多年内存在,那么您可能会对此信息感兴趣。