我开始使用我的第一个neo4j项目。我想创建一个可以为您提供足球比赛统计数据的应用。我想出了这个模型,我想看看你对它的看法。
我看待它的方式,这样做 - 每个统计数据都是一个节点 - 我可以轻松回答诸如谁做出更多助攻之类的问题。或者每个团队的总统计数是多少。
我的问题是关于规模。这个规模如何?团队和玩家最终将拥有很多类型为stat_of的关系。
答案 0 :(得分:2)
实际上,随着统计数据的增加以及更多游戏的播放,您可能会遇到麻烦,因为您将要根据多个维度搜索统计数据,并且最终可能需要进行一些非平凡的过滤得到你想要的所有尺寸。
例如,有一个similar question具有相似的模型和要求:找到在过去5场比赛中得分最多的前5名球员。
这需要匹配每个玩家的最后5场比赛(通过他们的球队节点和排序),然后匹配过去5场比赛中的目标,并将每个球员的总数加起来。
因此,为了加快速度,您可能希望在模型中添加中间节点,以便更轻松地进行这些遍历。
例如,a:每个球队每个球员的PlayerStats节点以及与目标和助攻有关系的游戏(如果你想继续保持直接关系,由你决定:目标和:协助节点:玩家和:团队节点)。虽然它使模型复杂化,并且需要相邻节点之间的更多关系,但它可以加快某些查询的遍历,因为它允许更容易地对每个玩家,团队和游戏的统计数据进行分组,从而使您无法遍历具有不相关维度的统计数据。
我还建议使用:ASSISTED和:SCORED用于与相关节点的关系,而不是:STAT_OF,因为它可以让您从节点使用degrees of relationships进行查询,而不必为某些查询扩展到节点。
可能还值得考虑删除:协助节点并将其替换为:有问题的关系:相关目标。