我正在计划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)如何执行其数据库架构以实现最佳性能和可伸缩性?
任何帮助,我将不胜感激。