最近,我被赋予了研究和提供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倍?
答案 0 :(得分:3)
我认为您正在与网络版进行比较?
使用客户端有很多开销 - 像OGM
(对象图形映射)之类的东西削弱了一些性能,然后你必须添加实际HTTP调用之类的开销。
网络上的客户(localhost:7474)不必与此抗衡。
您可能还注意到,Web客户端显示不同的内容 - API 不返回的内容。我想你会得到一张图表,显示所有Bank
都是通过良好的关系加在一起的 - 如果你运行查询并查看REST
响应 - 你会注意到那里没有关系数据,所以它一定是在调用别的东西。
我知道这不是一个理想的答案:/