【问题标题】:TinkerPop: Adding Vertex Graph API v/s Traversal APITinkerPop:添加 Vertex Graph API v/s Traversal API
【发布时间】:2018-05-07 06:38:33
【问题描述】:

背景

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. 如果两者相同,那么为什么会有性能差异?

【问题讨论】:

    标签: tinkerpop tinkerpop3


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,我希望 TinkerPop 在他们的文档中添加类似的节点文本。 (或者我错过了警告)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 2022-10-04
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多