我们有一个基本的消息传递系统,具有以下数据库设计
当系统向系统上的100万用户发送电路板投射消息时,将创建消息以及MESSAGE_READ中的100万条记录也为接收消息的每个用户创建,并且标记为未读(即ReadDate =空值)。
当10万用户读取电路板转换消息时,这10万用户消息被标记为正在读取(ReadDate = currentdate)
当系统发出更新的电路板投射消息时,MESSAGE_READ记录中的100万条记录将被更新并标记为未读。 (同样的事情发生在有人回复消息时,每个人都将MESSAGE_Read更新为未读,直到阅读它为止)
如何使这个系统更有效率?反正是为了避免创建/更新记录,一直将它们标记为已读/未读记录????? (我不这么认为?)
答案 0 :(得分:1)
这是我想到的一个建议:
如何动态创建Message_Read实例。我的意思是,当您发布消息时,不要为任何用户创建任何Message_Read。当用户登录系统时检查他是否有一条未读取的消息(没有读取消息)并提醒用户阅读它们。当用户阅读消息时,会为他创建Message_Read记录,以防止系统再次显示相同的警报。 每当更改消息的状态并且您想要提醒更改时,您可以删除其Message_Read实例,也可以将它们移动到存档表以便在必要时保留历史记录,因此该消息没有Message_Read,将通知用户再读一遍。