Neo4J用户个人资料数据建模

时间:2019-11-30 11:00:59

标签: neo4j modeling

我需要设计一个数据模型,该模型存储用户个人资料信息。用户节点可以包含名称,地址,电话作为属性。预计用户数量将急剧增加。 同时,我想存储每个用户在个人资料创建过程中输入的技能和爱好。
一个用户可以输入多种技能和爱好。当然,多个用户可以共享某种爱好或技能。

我们还要求按技能或爱好过滤用户。也就是说,如果给出了爱好(羽毛球),我们需要找到所有喜欢羽毛球的用户。

  1. 将爱好和技能作为节点进行创造是否有意义?我的理解是,这将提高查询性能,但是,用户偶然输入的兴趣爱好和技能数量可能会增加数据库中的节点数量。
  2. 将技能和爱好存储为用户节点的属性会好吗?我的理解是,在整个用户群中按属性进行搜索会降低查询性能。

请告知。 谢谢。

1 个答案:

答案 0 :(得分:2)

答案是您对问题的措辞。

  • 技能和爱好在用户之间共享
  • 找到所有喜欢羽毛球的用户

这清楚地表明技能/爱好是实体或节点。无需过早优化,结点的数量会增加,但会保持一定水平(技能和爱好的数量不是无限的)。同样,查询的性能与图的总大小无关,因此,图的大小增长可能并不重要-性能将取决于所触摸的子图的大小。除非您查看的节点数为10或1000亿,否则将技能和爱好添加为节点是非常安全的,并且在此阶段不必担心性能。