簡體   English   中英

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)。 此示例可以適用於其他 arrays。

我應該如何進行?

我正在考慮將這些大型 arrays 提取到新的 collections。

在所有喜歡的情況下(假設 userA 有 N 個來自其他用戶的喜歡)到userA ,將有 n 個文檔,其中每個文檔的字段 ' to ' 設置為userA id 和 ' from ' 字段設置給每個特定用戶喜歡用戶A。

在此處輸入圖像描述

這將解決巨大數組大小的問題,但可能會增加查詢特定用戶的復雜性。

這是正確的方法嗎? (我必須再制作 5 個 collections:likes_from_other_users、likes_other_users、dislikes_from_other_users、dislikes_other_users 和匹配項)並且可能會很慢。

此外,matches 集合將包含一對(數組)用戶,因此要查詢特定用戶的匹配項,我需要檢查此集合中的所有文檔並找到那些包含我正在查詢的特定用戶的文檔

在此處輸入圖像描述

這是正確的方法嗎?

我正在考慮將這些大型 arrays 提取到新的 collections。

這是唯一可擴展的解決方案。 Arrays 根本不可擴展; 集合中的單個文檔在 Firestore 中可以無限擴展。 這是否是“正確”的解決方案甚至都不是問題,它是使用 Firestore 時唯一可擴展的解決方案。

請注意,Firestore 並不總是給定應用程序的最佳數據庫。 如果您擔心特定問題的解決方案的成本或效率,那么 Firestore 可能並不是最好的解決方案。 每個數據庫都有其優勢,NoSQL 數據庫通常不擅長表達復雜的關系,例如 SQL 數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM