【发布时间】:2017-05-26 05:43:09
【问题描述】:
我正在开始我的第一个 neo4j 项目。我想创建一个可以为您提供有关足球比赛的统计信息的应用程序。我想出了这个模型,我想看看你对它的看法。
在我看来,这样做——每个统计数据都是一个节点——我可以很容易地回答诸如谁助攻更多之类的问题。或者每个团队的总体统计数据是什么。
我的问题是关于规模的。这个规模如何?球队和球员最终会有很多 stat_of 类型的关系。
【问题讨论】:
标签: neo4j
我正在开始我的第一个 neo4j 项目。我想创建一个可以为您提供有关足球比赛的统计信息的应用程序。我想出了这个模型,我想看看你对它的看法。
在我看来,这样做——每个统计数据都是一个节点——我可以很容易地回答诸如谁助攻更多之类的问题。或者每个团队的总体统计数据是什么。
我的问题是关于规模的。这个规模如何?球队和球员最终会有很多 stat_of 类型的关系。
【问题讨论】:
标签: neo4j
事实上,随着统计数据的增加和玩的游戏越来越多,您可能会遇到麻烦,因为您将要搜索基于多个维度的统计数据,并且最终可能需要一些重要的过滤得到你想要的所有尺寸。
例如,有一个 similar question 具有类似的模型和要求:找出最近 5 场比赛中进球最多的前 5 名球员。
这需要匹配每个球员的最后 5 场比赛(通过他们的团队节点和排序),然后匹配最后 5 场比赛的目标,并将每个球员的总和。
因此,为了加快速度,您可能希望在模型中添加中间节点,以简化这些遍历。
例如,每个球队的每个球员的 :PlayerStats 节点和与目标和助攻有关系的比赛(如果您想继续保持从 :Goal 和 :Assist 节点到 :Player 和:团队节点)。虽然它使模型有点复杂,并且需要更多相邻节点之间的关系,但它可以加快某些查询的遍历,因为它可以更轻松地对每个玩家、团队和游戏的统计数据进行分组,从而避免遍历具有不相关维度的统计数据。
我还建议使用 :ASSISTED 和 :SCORED 来处理与相关节点的关系,而不是 :STAT_OF,因为这样可以让您从节点使用 degrees of relationships 进行查询,而不必为某些查询扩展到节点。
还可能值得考虑删除 :Assist 节点并将它们替换为仅与相关 :Goals 的 :ASSISTED 关系。
【讨论】: