【发布时间】:2013-03-12 11:19:44
【问题描述】:
在参加了一个非常有趣的以 Cypher 为重点的教程后,我对 Cypher 查询语言的声明性感到惊喜。在我看来,这是从 Neo4J 检索数据的一种非常自然的方式。
在此之前,我只使用过原生 API。虽然这不是声明性的,但你会在一段时间后习惯它。复杂的结构都非常相似,仅在我的具体项目的细节上有所不同。
不过,Cypher 对我来说看起来更自然,所以我正在考虑构建我的应用程序的第二个版本,主要使用 Cypher 查询来与我的数据库交互。但是我遇到了一个问题。
有很多方法可以将我的应用程序转换为 Cypher,在尝试了几个可能的查询后,所有查询都达到了预期的结果,即使是最快的查询似乎仍然比原生 API 慢 20 倍。
现在,我不介意为了声明性而放弃一些性能,但是对于一个已经在性能上苦苦挣扎的应用程序,20 倍对我来说有点过分了。是否有解决此问题的方法,还是我只需要坚持使用本机 API?
【问题讨论】:
-
您能分享一些您的疑问吗?也许你的数据集?很想看看,应该不会那么慢。您使用的是哪个 Neo4j 版本?
-
数据集因用户上传的文件而异。我使用的是 1.9.M05 atm,但我也尝试过使用最新的稳定版本。今晚我会发布一些我的查询,但问题是我在 Cypher 中不够具体。使用 Core API,我可以仔细控制每一步,并且了解我的数据库结构,这意味着我不必处理大量无用的关系,而在 Cypher 中我必须这样做。