【问题标题】:Flutter (Firebase) dating app, relationships between documents from the same collectionFlutter(Firebase)约会应用,来自同一集合的文档之间的关系
【发布时间】:2022-01-24 01:51:55
【问题描述】:

我正在尝试创建一个以 Firebase 作为我的 NoSQL 后端的约会应用程序。 然而,由于我是 NoSQL 概念的新手,我遇到了几个问题,包括关于文档大小和查询的优化。

users:
       user_id
       name
       age
       gender
       location
       matches: [user1_id, user2_id, ...]
       likes_from_other_users: [user1_id, user2_id, ...]
       likes_other_users: [user1_id, user2_id, ...]
       dislikes_from_other_users: [user1_id, user2_id, ...]
       dislikes_other_users: [user1_id, user2_id, ...]

假设一个名为 UserA 的用户有很多来自其他用户的点赞,因此数组 likes_from_other_users 的大小将超过文档的最大大小(1 MB)。此示例可以应用于其他数组。

我应该如何进行?

我正在考虑将这些大型数组提取到新集合中。

在对userA的所有点赞(假设userA有N个其他用户点赞)的情况下,会有n个文档,每个文档都有字段'to' 设置为 userA id 和 'from' 字段设置为每个喜欢 userA 的特定用户。

这将解决庞大的数组大小的问题,但可能会增加查询特定用户的复杂性。

这是正确的方法吗? (我必须另外创建 5 个集合:likes_from_other_users、likes_other_users、dislikes_from_other_users、dislikes_other_users 和匹配项)并且可能会很慢。

此外,matches 集合将包含一对(数组)用户,因此要查询特定用户的匹配项,我需要检查此集合中的所有文档并找到包含我的特定用户的文档m 查询

这是正确的方法吗?

【问题讨论】:

    标签: database mongodb firebase flutter nosql


    【解决方案1】:

    我正在考虑将这些大型数组提取到新集合中。

    这是唯一可扩展的解决方案。数组根本不可扩展;集合中的单个文档在 Firestore 中可以无限扩展。这是否是“正确”的解决方案甚至都不是问题,它是使用 Firestore 时唯一可扩展的解决方案。

    请注意,Firestore 并不总是适合给定应用程序的最佳数据库。如果您担心特定问题的解决方案的成本或效率,那么 Firestore 可能并不是最好的解决方案。每个数据库都有其优势,NoSQL 数据库通常不擅长表达 SQL 数据库那样的复杂关系。

    【讨论】:

      猜你喜欢
      • 2015-08-08
      • 2020-08-28
      • 2020-08-31
      • 2019-04-11
      • 2017-10-17
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 2021-05-02
      相关资源
      最近更新 更多