【问题标题】:Proper Design in Cloud Firestore Document DatabaseCloud Firestore 文档数据库中的正确设计
【发布时间】:2018-11-18 20:48:59
【问题描述】:

我对 NoSQL 有点陌生,当不同的文档有关系时,我很难理解如何设计数据库。我已经阅读了一些关于 NoSQL 设计模式的文章,但我似乎得到了相互矛盾的信息。这是我面临的情况。

我有一组用户,每个用户都有一组他们练习的活动。它看起来像这样:

[Collection] Users
  - [Doc] usr10343
     name: Bob
     age: 27
  - [Doc] usr19282
     name: Jenny
     age: 32

[Collection] Activities
  - [Doc] act19203
     name: Warmup Jog
     description: {...}
     duration: 10m
  - [Doc] act28301
     name: Burpies
     description: {...}
     duration: 8m

现在,所有用户的活动名称、持续时间和描述都相同,但还有额外的用户特定数据,例如他们进行该活动的次数或上次活动的时间。我正在为每个用户的活动创建一个子集合,但我看到了两种创建它的模式。复制所有活动数据,以便子集合中的每个文档如下所示:

   - [Doc] instance39201
     name: Warmup Jog
     description: {...}
     duration: 10m
     numberOfTimes: 8
     lastCompleted: 10/18/2017

如果我想更新名称或描述,这似乎是很多重复和真正的麻烦。或者,我可以使用这样的参考:

   - [Doc] instance39201
     activity: act19203
     numberOfTimes: 8
     lastCompleted: 10/18/2017

这感觉就像我在使用关系数据库而没有 SQL 的好处。我是不是错过了什么。有没有更好的方法来解决这个我没有找到的方法?谢谢。

【问题讨论】:

    标签: firebase nosql google-cloud-firestore document-database


    【解决方案1】:

    没有一种“一种真正的方法”可以在 nosql 数据库中为所有时间的所有数据建模。您的建模应该适合您打算对其进行的查询。如果您不了解您的查询,那么您不一定知道有效的建模。这一切都与功效有关。如果模型不适合您的应用程序的需求,它就不是“正确的”。

    【讨论】:

      猜你喜欢
      • 2018-04-15
      • 2021-04-22
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 2019-07-22
      • 2023-02-02
      相关资源
      最近更新 更多