一般Cypher的表现

时间:2013-03-12 11:19:45

标签: neo4j cypher

参加了一个非常有趣的教程,重点关注Cypher,我对Cypher查询语言的声明性感到惊喜。在我看来,这是从Neo4J中检索数据的一种非常自然的方式。

在此之前,我只使用了原生API。虽然这不那么具有说服力,但是过了一段时间你会习惯它。复杂的结构都非常相似,只在我的具体项目的细节上有所不同。

然而,Cypher对我来说看起来更自然,所以我正在考虑构建我的应用程序的第二个版本,主要是Cypher查询与我的数据库进行交互。但我遇到了一个问题。

有许多方法可以将我的应用程序转换为Cypher,并且在尝试了几个可能的查询后,所有查询都具有所需的结果,即使是最快的查询仍然比本机API慢20倍。

现在,我不介意放弃声明性的一些性能,但是对于我已经在性能上挣扎的应用程序来说,20次对我来说有点太多了。是否有针对此问题的解决方法,或者我是否必须坚持使用本机API?

1 个答案:

答案 0 :(得分:2)

你的结论对我来说非常熟悉。当我一起使用Neo4j和Spring Data Neo4j时,我也遇到了性能问题。在性能真正重要的部分,我切换到核心Traversal API,它现在明显快于Cypher的平均查询速度。这与没有处理查询以及控制遍历的每个方面这一事实有很大关系。 Cypher只能猜测最优策略是什么。我相信它会在(近)未来获得速度,但如果性能真的很重要,我会坚持使用核心API。

此外,如果您将使用java和spring数据neo4j,请考虑使用高级映射模式(AspectJ),它比简单映射模式快得多。