为什么通过代码查询的速度比Neo4j客户端慢10倍?

时间:2016-02-29 08:20:37

标签: neo4j neo4jclient

最近,我被赋予了研究和提供NoSQL数据库效果概念证明的任务。我已选择Neo4j作为此.NET应用程序的NoSQL数据库。

事情是......当我使用Neo4j客户端执行查询时,它在10-20毫秒内运行,这太棒了。每当我通过代码执行该查询时,它需要150-200毫秒,这是巨大的差异。

查询如下(Bank是数据库的荷兰语等价物)

我想要达到的目标是让每个银行都有自己的子女(以获得整个等级):

var query = client.Cypher.Match("(bank:Bank)-[:PARENT_OF]->(child:Bank)") .Return((bank, child) => new { Bank = bank.As<Bank>(), Children = child.CollectAs<Bank>() }); var list = query.Results

这是我用来执行查询的代码。

{{1}}

我的问题是:与Neo4j客户端相比,为什么查询的代码要慢10倍?

1 个答案:

答案 0 :(得分:3)

我认为您正在与网络版进行比较?

使用客户端有很多开销 - 像OGM(对象图形映射)之类的东西削弱了一些性能,然后你必须添加实际HTTP调用之类的开销。

网络上的客户(localhost:7474)不必与此抗衡。

您可能还注意到,Web客户端显示不同的内容 - API 返回的内容。我想你会得到一张图表,显示所有Bank都是通过良好的关系加在一起的 - 如果你运行查询并查看REST响应 - 你会注意到那里没有关系数据,所以它一定是在调用别的东西。

我知道这不是一个理想的答案:/