【问题标题】:Neo4J user profile data modelingNeo4J 用户资料数据建模
【发布时间】:2019-12-01 02:23:43
【问题描述】:

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

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

  1. 将爱好、技能作为节点来创建有意义吗?我的理解是,这会提高查询性能,但是,用户碰巧输入的不同爱好、技能的数量可能会增加数据库中的节点数。
  2. 将技能和爱好存储为用户节点的属性会更好吗?我的理解是,按属性搜索所有用户群会降低查询性能。

请指教。 谢谢。

【问题讨论】:

    标签: neo4j modeling


    【解决方案1】:

    答案就在你对问题的措辞中。

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

    这清楚地表明技能/爱好是实体或节点。无需过早优化,节点数量会增加但一定程度稳定(技能和爱好的数量不是无限的)。此外,查询的性能与图的总大小无关,因此图的大小是否增长可能并不重要——性能将取决于所触及的子图的大小。除非你正在查看数十亿个或数百个节点,否则将技能和爱好添加为节点是相当安全的,并且无需担心现阶段的性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多