我正在計劃node.js中的TCP/IP聊天服務器,並且我想包括Facebook/gmail聊天的幾乎所有功能。Facebook喜歡mongodb中的聊天數據庫模式
我對數據庫架構兩個想法 -
首先 -
1)當用戶1開始與用戶2和用戶3聊天我會檢查的是這些用戶之前已經聊數據庫(有沒有爲這些用戶創建空間?)如果不是,那麼我會爲這些用戶創建一個空間。
2)我會保存聊天消息中收集在一個單獨的文件每個聊天味精的消息,我想保存這些細節與聊天味精味精 sender_user 房間 時間戳 附件
問題與這種方法 -
1)我檢查如果用戶1,用戶2和用戶3之前聊過(是否有任何空間創建這些之前)在查詢中需要「$全部」,這是緩慢的,並沒有太大的可擴展性看到我以前的問題 - Search in Array in mongodb)。這個搜索有沒有更好的方法?
二 -
1)當用戶1開始與用戶2和用戶3我會爲這個聊天創建一個集合(軟一間),並在此集合,我會保存在文檔
聊天聊封郵件問題與這種方法 -
1)我應該如何決定收集名稱?我應該將它命名爲「user1,user2,user3」嗎? 2)我將如何檢查由於「user1,user2,user3」與「user2,user3,user1」不同而已爲user2,user3,user 1創建的收藏(房間)?
我也在尋找更多的想法,因爲我不完全滿意我的方法。大型巨頭(Facebook,Gmail)如何執行其數據庫架構以實現最佳性能和可伸縮性?
任何幫助,我將不勝感激。