【问题标题】:What is the best way to store collection data in a realation?在关系中存储集合数据的最佳方式是什么?
【发布时间】:2019-07-20 12:47:16
【问题描述】:

我会创建一个 react-native 应用程序。现在我不确定,在集合中构建数据的最佳方式是什么。

按照我的情况: 我有两个集合公司用户。两个收藏都有会员合同。那么存储数据的最佳方式是什么?

方法一:

{
  users: [
    "id": 1,
    "firstName": "John",
    "lastName": "Smith",
    "gender": "man",
    "age": 32,
    "subcollection_company": [
      {
        "id": 1,
        "name": "Company LLC",
        "membership_status": "REQUESTD",

      }
    ],

  ],
  companies: [
    "id": 1,
    "name": "Company LLC",
    "subcollection_users": [
      {
        "id": 1,
        "firstName": "John",
        "lastName": "Smith",
        "membership_status": "REQUESTED",
      }
    ],

  ],

}

方法2(数组代替子集合):

{
  users: [
    "id": 1,
    "firstName": "John",
    "lastName": "Smith",
    "gender": "man",
    "age": 32,
    "array_company": [
      {
        "id": 1,
        "name": "Company LLC",
        "membership_status": "REQUESTED",
      }
    ],

  ],
  companies: [
    "id": 1,
    "name": "Company LLC",
    "array_users": [
      {
        "id": 1,
        "firstName": "John",
        "lastName": "Smith",
        "membership_status": "REQUESTED",

      }
    ],
  ],

}

方法3(像sql这样的老方法):

{
  users: [
    "id": 1,
    "firstName": "John",
    "lastName": "Smith",
    "gender": "man",
    "age": 32,
  ],
  companies: [
    "id": 1,
    "name": "Company LLC",
  ],
  user_comany: [
    {
      userref: 'users/1',
      companyref: 'companies/1',
      "membership_status": "REQUESTD",
    }
  ]
}

【问题讨论】:

    标签: mongodb firebase google-cloud-firestore nosql


    【解决方案1】:

    在我看来方法1是最好的方法。

    对于非常大的数据集,方法 2 将失败。假设一家公司拥有数十万用户,那么单个文档的 16mb 限制将被突破,您将无法向其添加更多用户。

    MongoDB 对连接没有太多优化,在方法 3 中,您需要在两个级别连接才能获取信息。

    【讨论】:

    • 对于方法 1:我将有很多对 firestore 数据库的请求。我不确定这是否正确。因为我加载了子集合中的每个文档。
    • 对于方法 2:我认为我的数据集不会那么大。顺便说一下,firestore 每个文档有 1mb 的限制。
    • 对不起,我没有明白你的意思。你能解释一下firebase db是如何出现的吗
    • 如果您确定一家公司不会有太多用户,反之亦然,那么方法 2 是最快的方法。但请记住,在更新(比如用户)时,您需要更新多个(所有拥有该用户的公司)。如果更新很少,那么您可以选择方法 2。基本上没有适合所有情况的单一方法
    猜你喜欢
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2016-08-09
    • 2021-05-06
    • 1970-01-01
    • 2013-07-22
    相关资源
    最近更新 更多