写点什么

架构实战 - 模块 8 作业

作者:mm
  • 2023-01-28
    北京
  • 本文字数:660 字

    阅读完需:约 2 分钟

作业:设计消息队列存储消息数据的 MySQL 表格

【作业要求】

1. 包括表名、字段、索引;

2. 用文字描述设计思路和理由,例如:为什么设计某个索引?

3. 一页 PPT 即可。

【提示】

1. 需要考虑每个消息队列一张表,还是所有消息放一张表,里面加一个“队列名称”的字段。


作业内容


每个消息队列一张表。

好处:

  1. 消息量大的时候各种消息读写速度不相互影响

  2. 针对一个消息队列的数据处理和定位容易

坏处:

  1. 需要先找到消息队列表,再定位消息数据

  2. 消息队列很多时,会产生很多表


队列表

表名:queue

字段:

queue_id        int    				 队列id, 			唯一非空 primary key queue_name      varchar(50)    队列名称      非空create_time     timestamp      创建时间      非空
复制代码


索引 1: queue_id 为主键 有唯一索引

索引 2: queue_name 创建唯一索引

消息表


表名:message_{queue_id}

字段:

msg_sid     long           消息sequence id,		 在队列中唯一非空 primary keymsg_type    char(1)        消息类型			非空msg_length  int            消息长度			非空msg_content varchar(2048)  消息内容			非空prod_id			int						 生产者id		 非空create_time timestamp      消息生成时间		非空
复制代码


索引 1:msg_sid 为主键 有唯一索引

索引 2:create_time 创建索引


消息消费表

表名: message_consumeroffset_{queue_id}

字段:

consumer_id 	varchar(50)    消费者				非空 		 primary keymsg_sid      	long           消息id				 非空			primary keyconsumer_time timestamp    	 消息消费时间		 非空
复制代码


索引:consumer_id + msg_sid 联合主键索引


用户头像

mm

关注

还未添加个人签名 2018-08-21 加入

还未添加个人简介

评论

发布
暂无评论
架构实战 - 模块 8 作业_消息队列_mm_InfoQ写作社区