2

有没有人做过 Neo4J Java Native APIs、Traversal APIs 和 Cypher 的性能评估。从性能的角度来看,上述三个选项中的哪一个会给我带来更好的结果?另外,对于写操作,我应该使用 Native java APIs 还是 cypher。是否有可能在本机 API 中批量执行数据库操作,以便它只访问数据库一次,而不是每次创建节点/关系。

4

1 回答 1

2

你会对这篇文章感兴趣。但他们测试的主要收获是

  • 核心 API 能够回答大约 2000 个朋友的朋友查询(我不得不承认在一个非常稀疏的网络上)。
  • Traverser 框架比 Core API 慢 25%
  • 最糟糕的是 cypher,它至少慢一个数量级,每秒只能回答大约 100 个类似 FOAF 的查询。我很震惊,所以我和来自 neo4j 的 Andres Taylor 交谈,他主要为 cypher 工作。他问我用的是哪个neo4j 版本,我说是1.7。他告诉我我应该检查 1.9。因为 Cypher 变得更加高效。所以我在 neo4j 1.8 和 neo4j 1.9 上运行了基准测试,不幸的是 Cypher 在新的 neo4j 版本中变得更慢。

但是,除非在高性能情况下,否则我建议使用 Cypher。(基本上,它越难使用,它可以越快。平衡开发工作与性能取决于您。)此外,这些数据是旧的,并且 Neo4j 的每次重大更新都带有 Cypher 规划器可以使用的新技巧用于更有效地查询。因此 Cypher 的性能将非常基于 DB 内容和 Neo4j 版本(无论好坏)

另外,Traversal API 建立在 Core API 之上,Cypher 建立在 Traversal API 之上;所以你可以在 Cypher 中做的任何事情都可以用其他 2 来完成。

于 2017-05-18T13:39:01.650 回答