【发布时间】:2013-10-10 07:20:18
【问题描述】:
我正在 node.js 中计划一个 TCP/IP 聊天服务器,我想包含 Facebook/gmail 聊天的几乎所有功能。
我对数据库架构有两个想法 -
第一 -
1) 当 user1 开始与 user2 和 user3 聊天时,我会在数据库中检查这些用户之前是否聊天(是否为这些用户创建了任何房间?)如果没有,那么我将为这些用户创建一个房间.
2) 我会将聊天消息保存在消息集合中,并将每个聊天消息保存在单独的文档中,我正在考虑保存与聊天消息相关的这些详细信息 味精 发件人用户 房间 时间戳 附件
这种方法的问题 -
1) 我检查 user1、user2 和 user3 之前是否聊天的方式(之前是否为这些创建了任何房间)在查询中需要“$all”,这很慢而且没有太大的可扩展性(请参阅我之前的问题 - @ 987654321@)。这个搜索有没有更好的方法?
第二-
1) 当 user1 开始与 user2 和 user3 聊天时,我将为此聊天创建一个集合(房间软),并在此集合中将聊天消息保存在文档中
这种方法的问题 -
1) 我应该如何决定收藏名称?我应该将其命名为“user1,user2,user3”吗? 2)我如何检查是否已经为用户2、用户3、用户1创建了一个集合(房间),因为“用户1,用户2,用户3”与“用户2,用户3,用户1”不同?
我也在寻找更多想法,因为我对自己的方法并不完全满意。大型巨头(Facebook、Gmail)如何使用他们的数据库架构来实现最高性能和可扩展性?
如果有任何帮助,我将不胜感激。
【问题讨论】:
标签: node.js mongodb chat mongodb-query facebook-chat