目前不少的短消息功能都容许群发。在群发数量大的状况下,该如何有效的处理呢?我在工做中遇到这样的问题,参考网上一些方案,想了几种设计方式,记录一下:数据库
1. 全写入
在点击发送时将发送给N个用户的信息以N条记录的方式写入数据库。
修改(已读标记)、删除单一。设计
2. 1+N条记录
因为是群发,所以文本内容都是相同的。因此设计表结构时分消息表和消息内容表。在提交的时候,先将内容记入消息内容表并获取其id,而后关联该内容id给N个用户分N条写入消息表。
修改单一。
删除:若是收到该消息的用户都删除了该消息的状况下,应该删除消息内容表中的数据。
对于该处目前想到两种方式:
1). 给消息内容表增长个计数,每一个用户删除时将计数减1,当计数为0时就能够删除该记录。
2). 删除在消息表中没有对应数据的消息内容。由计划任务定时处理(前种方式的实际数据删除也可采用这种方式)数据
3. 1+1+N条记录查询
一条消息内容+1条广播范围+多条receiver信息,查询未读消息时从广播表中查找,receiver信息接收人查看消息时记录。工作