架构实战营 - 模块八 - 作业
一、题目描述
作业:设计消息队列存储消息数据的 MySQL 表格
【作业要求】
1. 包括表名、字段、索引;
2. 用文字描述设计思路和理由,例如:为什么设计某个索引?
3. 一页 PPT 即可。
【提示】
1. 需要考虑每个消息队列一张表,还是所有消息放一张表,里面加一个“队列名称”的字段。
二、题目解答
基于数据量的考虑,一张表保存所有的队列数据,数据量会很大,所以设计按照队列拆分表,表的名称为 topic_xxx,xxx 表示队列的具体含义。如:topic_log,日志队列。
2.1 表结构
如下所示:
字段说明,见表格即可。其中 status 这个字段是决定这个消息有没有被成功建立、成功消费、或者可能由于某种原因,消费失败或者需要重试做个标记。
2.2 索引说明
idx_status(status):方便按照队列的状态查询数据。
idx_producer(producer_id):方便按照生产者查询。
idx_consumer(consumer_id):方便按照消费者进行查询。
评论