【问题标题】:Neo4J Java Native APIs vs Traversal APIs vs CypherNeo4J Java Native APIs vs Traversal APIs vs Cypher
【发布时间】:2017-04-24 15:41:08
【问题描述】:
有没有人做过 Neo4J Java Native APIs、Traversal APIs 和 Cypher 的性能评估。
从性能的角度来看,上述三个选项中的哪一个会给我带来更好的结果?
另外,对于写操作,我应该使用本机 java API 还是密码。是否有可能在本机 API 中批量执行数据库操作,以便它只访问数据库一次,而不是每次创建节点/关系。
【问题讨论】:
标签:
neo4j
cypher
neo4j-java-api
neo4j-traversal-api
【解决方案1】:
您会对此article 感兴趣。但他们测试的主要收获是
- 核心 API 能够回答大约 2000 个朋友的朋友查询
(我不得不承认在一个非常稀疏的网络上)。
- Traverser 框架是
比核心 API 慢约 25%
- 最差的是密码,它的速度较慢
至少一个数量级只能回答大约 100 个 FOAF
每秒查询数。我很震惊,所以我和安德烈斯·泰勒(Andres Taylor)交谈
neo4j 主要为 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 来完成。