站内短消息的数据库设计

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

目前很多的短消息功能都允许群发。在群发数量大的情况下,该如何有效的处理呢?我在工作中遇到这样的问题,参考网上一些方案,想了几种设计方式,记录一下:

1. 全写入
在点击发送时将发送给N个用户的信息以N条记录的方式写入数据库。
修改(已读标记)、删除单一。

2. 1+N条记录
由于是群发,因此文本内容都是相同的。所以设计表结构时分消息表和消息内容表。在提交的时候,先将内容记入消息内容表并获取其id,然后关联该内容id给N个用户分N条写入消息表。
修改单一。
删除:如果收到该消息的用户都删除了该消息的情况下,应该删除消息内容表中的数据。
对于该处目前想到两种方式:
1). 给消息内容表增加个计数,每个用户删除时将计数减1,当计数为0时就可以删除该记录。
2). 删除在消息表中没有对应数据的消息内容。由计划任务定时处理(前种方式的实际数据删除也可采用这种方式)

3. 1+1+N条记录

一条消息内容+1条广播范围+多条receiver信息,查询未读消息时从广播表中查找,receiver信息接收人查看消息时记录。

转载于:https://my.oschina.net/u/168061/blog/52946

你可能感兴趣的:(数据库,python)