【发布时间】:2012-08-02 16:52:10
【问题描述】:
我们正在开发一个基于 neo4j 和 php 的应用程序,其中包含大约 200k 个节点,每个节点都有一个类似 type='user' 或 type='company' 的属性来表示一个特定的实体我们的应用程序。我们需要获取图中特定类型的所有节点的计数。
我们为每个实体创建了一个索引,例如 users、companies,其中包含该属性的节点。所以在users 索引中存在130K 个节点,其余的在companies。
使用 Cypher,我们可以像这样查询。
START u=node:users('id:*')
RETURN count(u)
结果是
Returned 1 row.Query took 4080ms
服务器配置为默认值,稍作调整,但 4 秒也满足我们的需要。认为数据库会在 1 个月内增长 20K,所以我们非常非常需要这个查询执行。
有没有其他方法可以做到这一点,也许使用 Gremlin,或者使用其他一些服务器插件? 我会缓存这些结果,但我想知道是否可以对此进行调整。
非常感谢,抱歉我的英语不好。
【问题讨论】:
-
Neo4j 1.8.M06,3GB 内存,SSD 120GB
-
您是否尝试过 return count(*) 并测量了第一个或后续查询?
-
我做到了,使用 * 或某些字段似乎不会改变响应时间。我的第一次跑步是 8.52 秒。当 lucene/neo 缓存查询时,响应时间下降到 4.08 秒
标签: neo4j php indexing neo4j gremlin cypher