Flutter (Firebase) 约会应用程序,来自同一集合的文档之间的关系
Flutter (Firebase) dating app, relationships between documents from the same collection
我正在尝试使用 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 和匹配)并且可能很慢。
此外,匹配集合将包含一对(数组)用户,因此要查询特定用户的匹配项,我需要检查该集合中的所有文档并找到包含特定用户的文档我正在查询
这是正确的方法吗?
I was thinking about extracting these large arrays to new collections.
这是唯一可扩展的解决方案。数组根本不可扩展;集合中的单个文档在 Firestore 中可以无限扩展。这是否是“正确”的解决方案甚至都不是问题,它是使用 Firestore 时唯一可扩展的解决方案。
请注意,对于给定的应用程序,Firestore 并不总是最好的数据库。如果您担心针对给定问题的解决方案的成本或效率,也许 Firestore 并不是真正的最佳解决方案。每个数据库都有其优势,没有SQL个数据库通常不擅长表达像SQL个数据库那样的复杂关系。
我正在尝试使用 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 和匹配)并且可能很慢。
此外,匹配集合将包含一对(数组)用户,因此要查询特定用户的匹配项,我需要检查该集合中的所有文档并找到包含特定用户的文档我正在查询
这是正确的方法吗?
I was thinking about extracting these large arrays to new collections.
这是唯一可扩展的解决方案。数组根本不可扩展;集合中的单个文档在 Firestore 中可以无限扩展。这是否是“正确”的解决方案甚至都不是问题,它是使用 Firestore 时唯一可扩展的解决方案。
请注意,对于给定的应用程序,Firestore 并不总是最好的数据库。如果您担心针对给定问题的解决方案的成本或效率,也许 Firestore 并不是真正的最佳解决方案。每个数据库都有其优势,没有SQL个数据库通常不擅长表达像SQL个数据库那样的复杂关系。