9
一个非常简单的设计问题。假设我想构建Facebook Messenger。假设约翰和玛丽在聊天,这是一个更好的方法?MongoDB:消息应用的最佳设计
1)每会话1文件,messages
是消息对象的阵列
{ participants: ['john', 'marry'],
messages: [
{ sender: 'john', content: 'howdy', time_created: new Date() },
{ sender: 'marry', content: 'good u', time_created: new Date() },
...
]
}
2)每个消息
{ participants: ['john', 'marry'], sender: 'john', message: 'howdy', time_created: new Date() } // document 1
{ participants: ['john', 'marry'], sender: 'marry', message: 'good u', time_created: new Date() } // document 2
....
哪种方法具有在以下方面更好的性能1文件插入新消息(更新对话与创建新文档)?
还是有没有更好的方法(如我的第二种方法,我不知道是否是一个好的设计来指定每个文档中的参与者字段)?
谢谢!
更新每个新消息的2个集合是很多数据库写入? –
您只会更新每条新消息的消息收集。对话集合仅在有新参与者或新对话开始时创建/更新。您的应用程序可以保留对话ID(很像会话)。 –
,但如果您不更新每条新消息的对话集(以存储上次更新的时间),那么当用户打开应用程序时,如何获取从最近到最近排序的所有对话? –