Neo4j 图结构和性能问题
Neo4j graph structure and performance issue
在我的 Neo4j/SDN 应用程序中,我 运行 遇到了获取 VoteGroup
节点的性能问题,该节点包含与节点的关系 - Decision
和 Criterion
。
此处描述的详细信息 -
在我的应用程序中,每对 Decision
和 Criterion
都有一个 Vote
的列表。每个 Vote
有 weight
(double
).
我需要根据每对 Decision
和 Criterion
上所有 Vote
的平均值执行一些数学运算。
以前每个 Vote
都包含对节点的引用 - Decision
和 Criterion
(现在像 VoteGroup
)。
为了提高在每对 Decision
和 Criterion
上获取所有 Vote
的平均值的性能,我引入了包含关系的新中间节点 VoteGroup
到节点 - Decision
和 Criterion
,为此 Decision
和 Criterion
预先计算的 avgWeight
所有 Vote
并且还包含对所有这些 [= =14=]。
现在我在获取 VoteGroup
:
时遇到了性能问题
MATCH (d:Decision)<-[:VOTED_FOR]-(vg:VoteGroup)-[:VOTED_ON]->(c:Criterion)
WHERE id(d) = {decisionId} AND id(c) = {criterionId}
RETURN vg
我不知道哪里出了问题..可能是我创建了错误的图形结构或其他东西..
请帮我解决这个问题。
首先 - 使用内部 id
不是个好主意。考虑使用您自己的 id
属性(并且不要忘记在其上添加索引)。
其次 - 您可以尝试分析查询以找出查询中的弱点 (info)。
长话短说;博士; - 在查询前添加 PROFILE
。
第三 - 您可以重写查询以帮助数据库以更优化的方式工作。
示例:
MATCH (d:Decision) WHERE id(d) = {decisionId}
MATCH (c:Criterion) WHERE id(c) = {criterionId}
WITH d, c
MATCH (d)<-[:VOTED_FOR]-(vg:VoteGroup)-[:VOTED_ON]->(c)
RETURN vg
此处的关键部分是 WITH
关键字 (info)。
希望对您有所帮助。
我已转移到新的 Neo4j 2.2.4 和 SDN 3.4.0.RC1,问题消失了
在我的 Neo4j/SDN 应用程序中,我 运行 遇到了获取 VoteGroup
节点的性能问题,该节点包含与节点的关系 - Decision
和 Criterion
。
此处描述的详细信息 -
在我的应用程序中,每对 Decision
和 Criterion
都有一个 Vote
的列表。每个 Vote
有 weight
(double
).
我需要根据每对 Decision
和 Criterion
上所有 Vote
的平均值执行一些数学运算。
以前每个 Vote
都包含对节点的引用 - Decision
和 Criterion
(现在像 VoteGroup
)。
为了提高在每对 Decision
和 Criterion
上获取所有 Vote
的平均值的性能,我引入了包含关系的新中间节点 VoteGroup
到节点 - Decision
和 Criterion
,为此 Decision
和 Criterion
预先计算的 avgWeight
所有 Vote
并且还包含对所有这些 [= =14=]。
现在我在获取 VoteGroup
:
MATCH (d:Decision)<-[:VOTED_FOR]-(vg:VoteGroup)-[:VOTED_ON]->(c:Criterion)
WHERE id(d) = {decisionId} AND id(c) = {criterionId}
RETURN vg
我不知道哪里出了问题..可能是我创建了错误的图形结构或其他东西..
请帮我解决这个问题。
首先 - 使用内部 id
不是个好主意。考虑使用您自己的 id
属性(并且不要忘记在其上添加索引)。
其次 - 您可以尝试分析查询以找出查询中的弱点 (info)。
长话短说;博士; - 在查询前添加 PROFILE
。
第三 - 您可以重写查询以帮助数据库以更优化的方式工作。 示例:
MATCH (d:Decision) WHERE id(d) = {decisionId}
MATCH (c:Criterion) WHERE id(c) = {criterionId}
WITH d, c
MATCH (d)<-[:VOTED_FOR]-(vg:VoteGroup)-[:VOTED_ON]->(c)
RETURN vg
此处的关键部分是 WITH
关键字 (info)。
希望对您有所帮助。
我已转移到新的 Neo4j 2.2.4 和 SDN 3.4.0.RC1,问题消失了