Neo4j关系设计

Neo4j关系设计,neo4j,cypher,Neo4j,Cypher,长期缺席后再次访问Neo4j。我已经读了很多文章,但仍然发现我有一些问题让我重新开始 双向关系 我有一个“连接到”类型的场景,其中两个节点相互连接。事实上,这个想法是对一种流进行建模。然而,两个方向的流量并不总是相同的。我不确定使用的最佳方法是:1个具有2个属性的关系还是2个不同的关系 前者感觉像是一个舒适的选择,但在对实际事实建模方面并不自然——例如:属性的名称,因为从每个节点的角度来看,流入和流出都没有意义。我还想知道在这种情况下,属性与关系的性能——这些值需要更新 代表时间 现在我想更进一

长期缺席后再次访问Neo4j。我已经读了很多文章,但仍然发现我有一些问题让我重新开始

  • 双向关系 我有一个“连接到”类型的场景,其中两个节点相互连接。事实上,这个想法是对一种流进行建模。然而,两个方向的流量并不总是相同的。我不确定使用的最佳方法是:1个具有2个属性的关系还是2个不同的关系 前者感觉像是一个舒适的选择,但在对实际事实建模方面并不自然——例如:属性的名称,因为从每个节点的角度来看,流入和流出都没有意义。我还想知道在这种情况下,属性与关系的性能——这些值需要更新

  • 代表时间 现在我想更进一步,表示特定时间节点之间的流,或者更准确地说,表示特定时间节点之间的流。所以在下午2点到3点之间#1和#2之间的流量是x
  • 如何以最佳方式实现这一点?每个连接的每个时间段的关系似乎…冗长。将时间框架表示为节点是否有价值

  • 有没有Cypher的最大流量样本? 特别对push relabel max flow问题解决感兴趣

  • 感谢您提供的任何建议。

    虽然您确实对您的问题进行了一些思考,但问题有点不清楚。这似乎是一个关于图形数据模型的问题。您想知道如何最好地组织模型来表示复杂的关系。如果尝试跟踪两个节点之间的“流”,请将权重特性指定给单向边

    应仔细考虑双向关系。Neo4j处理它们的速度与处理单向关系的速度一样快。关于使用双向关系的引用:

    Neo4j中的关系可以以相同的速度在两个方向上遍历。此外,方向可以完全忽略。因此,如果一个节点暗示另一个节点,则无需在节点之间创建两种不同的关系

    我相信通过更好地理解图形数据模型,您的问题可以得到缓解。在这一点上,查看一些不同的模型并理解why将比理解cypher语法更有帮助。我建议由智利大学的2位教授进行题为“图形数据库模型的调查”的阅读。5月21日的“超级节点”模型对你特别感兴趣,因为这听起来像是在试图对一个复杂的循环对象建模。第二十一页

    超节点可用于表示简单(平面)和复杂对象(层次、复合和循环)以及映射和记录。一个关键特性是它固有的封装信息的能力


    希望这些信息能帮助您建立复杂关系的模型。

    如果关系包含不同的数据,那么它们可能是不同的关系。你有方向性的询问吗?一段感情是双向的,所以如果你只想要“东西连接到东西”,也许一段感情更好。如果您按方向查询,那么最好有两个。您是想用Cypher解决最大流量问题,还是简单地用Neo4j建模最大流量?