作业八:设计消息队列存储消息数据的 MySQL 表格
【作业要求】
1. 包括表名、字段、索引;
2. 用文字描述设计思路和理由,例如:为什么设计某个索引?
3. 一页 PPT 即可。
【提示】1. 需要考虑每个消息队列一张表,还是所有消息放一张表,里面加一个“队列名称”的字段。
思路:
使用一个消息队列对应一张表,原因是:
a)这里我们假设需要处理大量的消息,如果放在同一张表会影响性能。
b)避免来自不同的消息队列操作互相干扰,例如要删除历史数据,可能会影响同一张的写入。
c)一般不需要同时读取不同的消息队列数据,所以可以分成不同的表,因为不需要去执行不同 table 的 join。
表格设计
消息表:
这里创建时间和生产者的 ID 都有索引,方便 consumer 查询需要消费的消息。
消费表:
这里记录客户端读取消息的记录。为了方便过后查询历史记录,所以 message_id,consumer_id 和 consumed_status 都做了索引。
评论