0

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

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

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

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

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

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

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

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

提前致谢!

4

2 回答 2

1

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

除此之外,您似乎在这里没有做错任何事情。

这种查询的 Cypher 性能在 1.7 上比 1.6 好得多。我们昨天发布了 1.7.M03,如果你没有被 1.6 束缚,你可以把它拿出来试一试。

于 2012-04-12T15:06:32.567 回答
0

如果它们只是后续节点的描述符,则根本没有“居中”节点可能会有所帮助。我认为如果您只使用带有标签的索引节点来描述节点类型(例如产品/类别/文档/属性/用户......),它会更快更好地组织。见标签

于 2013-05-28T18:28:33.117 回答