架构实战营模块八消息队列 mysql 数据库设计
【作业要求】
1. 包括表名、字段、索引;2. 用文字描述设计思路和理由,例如:为什么设计某个索引?3. 一页 PPT 即可。
【提示】
1. 需要考虑每个消息队列一张表,还是所有消息放一张表,里面加一个“队列名称”的字段。
1、分析
每一个消息队列放一张表,增加队列的时候可以在程序中动态的创建消息队列表。表中必须包含主键,创建时间。创建时间可以作为范围查询。比如现在存在一个 user_message_queue 可以在管理后台中动态创建表结构
设计消息队列类型: 一对一发布订阅 、 发布和多个订阅
2、表结构
消息队列表:
订阅表:
消息队列和订阅者关系表:
索引: queue_id 字段增加索引。这个表订阅者不需要查询 。
注意:每次发布消息的时候,先查询消息队列对应的订阅者是谁,判断类型进行新增数据。
发布订阅表:
发布订阅表可以增加联合索引,顺序是 subscribe_id, create_time.。 为什么这么设计,因为订阅者在查询消息的时候肯定是需要根据自己本身订阅者 id 查询消息。有可能查询时间范围,所以这里使用联合查询,而不使用单独的索引。
评论