Neo4j cypher通过中心节点上的REST查询性能

时间:2012-04-12 14:28:49

标签: neo4j cypher

我还是neo4j的新手。我写了一个小的RESTFUL服务,它通过REST作为PoC将节点插入neo4j db(服务器)。结构看起来像这样:root - [NODES] - > n - > [NODE] - >节点

n节点是“居中”的节点。我计划将其他中心节点添加为不同的节点类型(例如产品/类别/文档/属性/用户......)

在我的第一个例子中,我添加了约。 1.000个节点。现在我尝试增​​加节点的数量并查询该节点。现在我面临着一种表现“问题”。这是我的查询,在neo4j(1.6.1)Web控制台上执行

START x = node(0)MATCH PATH =(x - [:NODES] - >居中 - [:NODE] - >节点)返回节点ORDER BY node.id LIMIT 10

START x = node(0)MATCH PATH =(x - [:NODES] - >居中 - [:NODE] - >节点)返回计数(*)

我需要查询分页。第一个应该选择要显示的元素,第二个应该选择计算页面。

查询时间: 1.000个节点:~120ms 4.000个节点:~200 - 300ms 6.000个节点:~250 - 500ms

密码查询时间正在快速增长(在我看来)。我计划以这种方式添加~2.000.000个节点。我的查询有什么问题吗?有可能让它们更快吗? (我已经将我的neo4j堆大小设置为100M,对于10k节点应该没问题)

提前致谢!

2 个答案:

答案 0 :(得分:1)

您可以做的第一件事是删除路径分配 - 您没有使用路径PATH,因此无需创建它。

除此之外,你似乎没有做错任何事。

这种类型的查询的Cypher性能在1.7比1.6更好。我们昨天发布了1.7.M03,你可以把它拿出去,如果你没有被限制在1.6。

答案 1 :(得分:0)

如果它们只是后续节点的描述符,那么根本没有“居中”节点可能会有所帮助。如果您只使用带标签的索引节点来描述节点类型(例如products / categories / documents / attributes / users ......),我认为它会更快更好地组织。见labels