【发布时间】:2011-05-03 08:50:23
【问题描述】:
我有这个架构来支持站内消息传递:
当我向其他成员发送消息时,消息会保存到消息表中;一条记录被添加到 MessageSent 表中,并且每个收件人的一条记录被添加到 MessageInbox 表中。 MessageCount 用于跟踪收件箱/发送文件夹中的消息数量,并使用 MessageInbox/MessageSent 上的插入/删除触发器填充 - 这样我总是可以知道成员有多少消息,而无需进行昂贵的“选择计数( *)" 查询。
另外,当我查询成员的消息时,我加入到成员表以获取成员的名字/姓氏。
现在,我将把应用程序迁移到 MongoDB,但我不太确定集合模式应该是什么。因为 MongoDB 中没有可用的连接,所以我必须对其进行完全非规范化,所以我将拥有带有完整消息信息的 MessageInbox、MessageDraft 和 MessageSent 集合,对吗?
然后我不确定以下内容:
如果用户更改了他的名字/姓氏怎么办?它将被非规范化存储为某些消息中的发送者,作为其他消息中的接收者的一部分 - 我如何以最佳方式更新它?
如何获取消息计数?同时会有大量的请求,所以它必须表现良好。
非常感谢任何想法、cmets 和建议!
【问题讨论】: