架构实战营 - 第 6 期 模块八课后作业
1、消息队列表,表名:message_queue
设计思路:消息队列本身数量不会太大,所以消息队列表为一个表即可,主要存放消息队列自身的一些属性,如图所示,
queue_id:该字段不能重复,创建为主键索引,自增即可。
queue_name:消息队列名称也不能重复,全局唯一,故设置唯一索引,方便日后查询。
type:消息队列类型字段创用来查询不同类型的消息队列信息,常作为 where 条件的子句,且值可重复,故设置为普通索引。
2、消息队列内容表,表名:message_queue_content_XXX (XXX=queue_id)
设计思路:每个消息队列,都是单独存在的,跟别的消息队列不存在任何关系,且每个消息队列里面的数据,通常是巨量的,所以为每个消息队列,都单独创建一个消息内容表,表名的后缀为消息队列的 queue_id。
content_id:消息内容 id 在单个消息队列内容表中是唯一的,所以可以为其创建主键索引,自增即可。
producer_source:有时候会查询某个消息队列里面,某个生产者来源所生产的消息内容,所以可以为生产者来源创建一个普通索引。
3、消费信息表,表名:consumer_info
设计思路:用来存储某个消费者消费某些消息队列,以及消息到哪个内容位置;每个消息队列都可以被多个消费者消费。
consumer_name:创建普通索引,用来查询某个消费者所有消费的消息队列已经对应的内容
queue_id:创建普通索引,用来查询某个消息队列被多少个消费者消费。
consumer_name,queue_id,content_id:创建联合索引,用来查询某个消费者,对于某个消息队列,消费到那个消息内容了,把 content_id 加上,可以索引覆盖,不用回表。
consumer_name,create_time:创建联合索引,用来查询某个消费者,在某个时间段内消费的数据信息。
版权声明: 本文为 InfoQ 作者【乐邦】的原创文章。
原文链接:【http://xie.infoq.cn/article/095a2797ed098cea35fb3d885】。未经作者许可,禁止转载。
评论