Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 通用密码性能_Neo4j_Cypher - Fatal编程技术网

Neo4j 通用密码性能

Neo4j 通用密码性能,neo4j,cypher,Neo4j,Cypher,在参加了一个非常有趣的教程,重点是Cypher之后,我对Cypher查询语言的声明性感到惊喜。在我看来,这是从Neo4J检索数据的一种非常自然的方式 在此之前,我只使用了本机API。虽然这不是什么陈述性的东西,但过一段时间你就会习惯了。这些复杂的建筑都非常相似,只是在我的具体项目细节上有所不同 尽管如此,Cypher在我看来更自然,因此我正在考虑使用Cypher查询构建第二个版本的应用程序,以便与数据库交互。但我遇到了一个问题 有很多方法可以将我的应用程序转换为Cypher,在尝试了几个可能的查

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

在此之前,我只使用了本机API。虽然这不是什么陈述性的东西,但过一段时间你就会习惯了。这些复杂的建筑都非常相似,只是在我的具体项目细节上有所不同

尽管如此,Cypher在我看来更自然,因此我正在考虑使用Cypher查询构建第二个版本的应用程序,以便与数据库交互。但我遇到了一个问题

有很多方法可以将我的应用程序转换为Cypher,在尝试了几个可能的查询之后,都得到了预期的结果,即使是最快的查询也比本机API慢20倍左右


现在,我不介意为了声明性而放弃一些性能,但是对于一个已经在性能上挣扎的应用程序来说,乘以20对我来说有点太多了。这个问题有解决办法吗,还是我必须坚持使用本机API?

我对你的结论很熟悉。当我同时使用Neo4j和Spring数据Neo4j时,我也遇到了性能问题。在性能真正重要的部分,我切换到核心遍历API,它现在比一般的密码查询要快得多。这与这样一个事实有很大关系,即不需要处理查询,而且您可以控制遍历的各个方面。Cypher只能猜测最理想的策略是什么。我相信它在不久的将来会提高速度,但如果性能真的很重要,我会说坚持使用核心API


也可以,如果你想使用java和Spring数据NeN4J,考虑使用比简单映射模式快得多的高级映射模式(AspectJ)。实际上,在我做的一些测试中,添加的Spring数据层也会减慢我的应用程序。因此,我制作了自己的接口,以最有效的方式直接与数据库进行对话,以满足我的特定应用程序的需要。我想将该接口的实现转换为Cypher,但我不知道这会破坏我的性能。尽管Cypher可能总是比使用核心API慢,但您可以尝试调整Cypher语句。这是一个伟大的资源,帮助了我很多:这是另一个伟大的阅读:。它比较了核心API、遍历API和多个密码版本的速度。但我的问题远没有皮克哈特先生的复杂。尽管如此,在无休止地优化我的查询之后,它们仍然没有接近本机api的速度。我只能想象当你使用更复杂的查询时会有什么不同。也许蓝图项目的Gemlin也可以作为一个选项,但据我所知,它与Neo4j的结合使用并不广泛。你能分享一些你的查询吗?也许你的数据集呢?我很想看看,它不应该那么慢。您使用的是哪个Neo4j版本?数据集因用户上载的文件而异。我使用的是1.9.M05 atm,但我也尝试了最新的稳定版本。今晚我将发布我的一些疑问,但问题是我不能在Cypher中足够具体。有了核心API,我可以小心地控制每一步,有了数据库结构的知识,这意味着我不必遍历大量无用的关系,我必须在Cypher中这样做。