Neo4J性能权衡-使用更多节点与关系
假设我有3种不同类型的节点、计划、大想法和想法 现在,每个计划可以包含0+大创意和0+创意,以及这些关系的权重(投票)。大创意也可以由创意创造 例如,给定计划ANeo4J性能权衡-使用更多节点与关系,neo4j,cypher,Neo4j,Cypher,假设我有3种不同类型的节点、计划、大想法和想法 现在,每个计划可以包含0+大创意和0+创意,以及这些关系的权重(投票)。大创意也可以由创意创造 例如,给定计划A A -[:HAS_BIG_IDEA {Weight: 30}] -> B (Big-Idea) A -[:HAS_IDEA {Weight: 10}] -> C (Idea) A -[:HAS_BIG_IDEA {Weight: 1}] -> D (Big-Idea) -[:IS_MADE_OF {PlanID, Da
A -[:HAS_BIG_IDEA {Weight: 30}] -> B (Big-Idea)
A -[:HAS_IDEA {Weight: 10}] -> C (Idea)
A -[:HAS_BIG_IDEA {Weight: 1}] -> D (Big-Idea) -[:IS_MADE_OF {PlanID, Date, Weight}] -> E (Idea)
计划每天都在改变,投票也每天都在进行。最初,我决定为每种类型的计划添加一个节点,并每天添加新的关系,其中包含日期和权重的属性。问题是,随着想法和大想法的数量以百万计,关系的数量开始膨胀,基于日期和权重的过滤计划变得慢得多
例如,查询列出2017年7月7日投票数>100的所有想法需要更长时间才能执行。为了减少起始点的数量,我将Date属性转移到Plan节点,并为每种类型和每一天创建新的Plan节点。由于这减少了查询的起始点,因此加快了查询速度。缺点是创建更多节点
所以我想我的问题更多的是关于我的第二种方法是否是好的实践。我已经读到,在关系上使用传统索引提示重新设计图表,因此我不太热衷于在关系的日期/权重上添加索引