已读消息和未读消息设计
“站内信”有两个基本功能:
- 点到点的消息传送。用户给用户发送站内信,管理员给用户发送站内信。
- 点到面的消息传送。管理员给用户(指定满足某一条件的用户群)群发消息
这两个功能实现起来也很简单{如图}。只需要设计一个消息内容表和一个用户通知表,当创建一条系统通知后,数据插入到消息内容表。消息内容包含了发送渠道,根据发送渠道决定后续动作。如果是站内渠道,在插入消息内容后异步的插入记录到用户通知表。

这个方案看起来没什么问题,但实际上,我们把所有用户通知的消息全部放在一个表里面,如果有 10W 个用户,那么同样的消息需要存储 10W 条。
很明显,会带来两个问题:
- 随着用户量的增加&