Neo4j,哪一个更好:多个关系还是一个有属性的关系?

Neo4j,哪一个更好:多个关系还是一个有属性的关系?,neo4j,Neo4j,我是neo4j的新手,我正在建立一个社交网络。为了解决这个问题,我的图由user和event节点组成,它们之间有关系 用户可以被邀请、加入、参加或主持一个事件,每个事件都是之前事件的子集 我是否应该为每个状态创建多个关系,或者创建一个与属性的关系来存储当前状态?据我所知,图形类型查询在关系类型上比属性更容易/更有效 一种关系,但另一种关系类型如何 您可以使用Cypher查询与管道的几种类型的关系(如果您不想在查询中获取与事件的其他关系) 更新--添加控制台示例: 或者,您可以将旧的关系留在那里,

我是neo4j的新手,我正在建立一个社交网络。为了解决这个问题,我的图由
user
event
节点组成,它们之间有关系

用户可以被邀请、加入、参加或主持一个事件,每个事件都是之前事件的子集


我是否应该为每个状态创建多个关系,或者创建一个与属性的关系来存储当前状态?据我所知,图形类型查询在关系类型上比属性更容易/更有效

一种关系,但另一种关系类型如何

您可以使用Cypher查询与管道的几种类型的关系(如果您不想在查询中获取与事件的其他关系)

更新--添加控制台示例:


或者,您可以将旧的关系留在那里,而不必构建稍微复杂一些的查询,但这对于这个用例来说有点浪费。

如果可能,在查询图表时,在属性限定的单一类型上选择不同的关系类型会对性能产生显著的积极影响。前者的速度至少是后者的2倍。当数据位于高级缓存中并且使用本机Java API查询图形时,第一种方法比单跳遍历快8倍以上


来源:

我认为为了简单的编程代码,您应该使用一种关系类型(例如“事件”)及其属性(例如“状态:出席”)。但是,如果您确实必须达到最大速度,请使用下面建议的关系类型,仅当关系没有属性时,但当它包含属性时,性能如何?您知道这种性能差异今天是否仍然存在吗?我有8种不同的关系,每种关系有5个等级。我是否应该创建40种不同的关系类型,而不是8种具有“值”属性的关系类型?是的。在缓存和存储中,关系类型基本上是索引的方式。如果你只有8种不同的关系,那并不重要,但是如果你(在给定的节点上)有几千个事件参与者关系和100个事件主机关系(按这个例子),指定EnvithHOST,它甚至不会考虑其他关系类型。当你拥有更多的人际关系时,这将更加重要。