【问题标题】:Which data model is better?哪种数据模型更好?
【发布时间】:2021-04-18 07:15:45
【问题描述】:

我正在处理一个项目,并试图为其创建数据模型。我们有一个用例,用户可以在其中主持活动并向其添加成员。

class Event {
   event_name: String
}

class User {
   username: String
}

我想知道以下哪种方式将事件成员存储在 Event 类中。

//v1
class Event {
   event_name: String,
   event_members: Array<String> // List of usernames
}

//v2
class Event {
   event_name: String,
   event_members: Array<User> // List of user objects
}

通过使用 v2,我觉得我能够将获取用户信息的逻辑从数据库、客户端转移到我的服务器。

延迟也是我正在考虑的问题。如果我使用 v1,那么我需要多次调用服务器以获取有关事件成员的所有信息,从而导致等待时间增加。而在 v2 中,响应负载正在增加,这可能会影响我们的网络调用。

我想知道在两者之间存储我的模型的更好方法,如果有不同且更有效的方法,请告诉我。

【问题讨论】:

    标签: node.js database react-native performance google-cloud-firestore


    【解决方案1】:

    这里没有单一的“更好”的数据模型。在 NoSQL 数据库中建模数据时,它始终取决于您的用例。随着您向应用添加更多用例,您将扩展和修改数据模型以满足您的需求。

    也就是说,我通常存储多对多关系的两个方向,因此 v1 v2。这允许在两个方向上快速查找相关项目,但代价是一些额外的存储空间 - 因此是典型的时间与空间权衡。

    但如前所述:没有单一的最佳数据模型,当您刚刚开始时,我通常会专注于让简单模型快速运行,并确保对数据的访问安全。

    对于一般主题的良好介绍,我建议阅读 NoSQL data modeling,对于 Firestore,请特别观看 Todd 出色的 Getting to know Cloud Firestore 系列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-29
      • 2021-04-03
      • 2021-09-11
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 2011-01-02
      相关资源
      最近更新 更多