我正在使用應該嵌入聊天的Firebase開發Android應用程序。Firebase聊天應用程序:查詢消息,優化應該是OR的查詢,或者改進NoSQL db結構
我的問題是,要獲取郵件,我需要查詢所有有我的uid在發件人或收件人字段中的郵件。這在MySQL中非常容易,但在Firebase中(我必須堅持到Firebase)看起來有點痛苦。
我不能就這樣過濾它們。當我使用類似firebase.myapp.io/chat的Firebase網址時,我甚至無法僅僅過濾它們。
因此,在這個模型中唯一的可能的解決方案,是獲取所有的聊天記錄和客戶過濾他們。這是完成這項工作的好方法。而且,當信息會很多時,如果他們應該的話,一切都會變得非常緩慢。
所以我想到了不同的方式來實現結果:
- 我得到了聊天對應用戶的UID鍵。在這些價值觀,我得到的聊天記錄但從用戶的角度,還是我得到了我的接收器的鍵作爲值和消息
但是這裏面我不喜歡這種非常,因爲它可以是非常多餘的,因爲每個消息都應該在數據庫中插入兩次。
另一種方式是將消息鍵記憶到另一個對象中,例如chatmessages,在裏面我將用戶uid作爲值,並將其作爲包含聊天消息鍵的鍵。
什麼是最好的NoSQL方式來管理多個私人聊天對話?
複製數據在NoSQL數據庫中非常常見。請參閱http://stackoverflow.com/questions/33540479/best-way-to-manage-chat-channels-in-firebase,爲聊天室建模提供一種方式。 –
所以我應該創建對象chat_uid1_uid2和chat_uid2_uid1?在內部,我應該把對話正確(帶有時間和文字的消息對象以及最終的其他內容)? – BlackBox
我經常發現自己在數據庫中建模,我在屏幕上看到了什麼。所以如果你想要個人聊天室,我建模個人聊天室。究竟哪種最適合你,取決於許多我不知道的因素(而且你可能還不知道)。如果您想閱讀更多內容,我推薦[這篇關於NoSQL數據建模的文章](https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)。 –