写点什么

架构作业 -8

作者:梁山伯
  • 2023-03-01
    四川
  • 本文字数:1242 字

    阅读完需:约 4 分钟

作业

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

【作业要求】

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

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

3. 一页 PPT 即可。

【提示】

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

需求分析

假设:该消息队列是用于工业场景下的消息信息传输。主要是对生产工艺流程过程中的问题以及作业进行信息同步。工作共有 10 个厂房,每个厂房由 2-3 条生产线,每个生产线由 25-30 个工艺流程。产品在不同工厂时间由流转。单个产品的生产时间大概在 6 个月左右。

业务场景:

  1. 报警消息。结构: rowid,报警内容,报警时间,报警部件/部件。数据产生量:每日小于 100 条数据。

  2. 通知消息。结构:rowid,消息内容,消息时间,发布服务/流程。数据产生量:每日小于 100 条数据。

消息存储设计

介于消息整体体量并不是很大,且以后可能会有对于消息的统计类的需求。故可将消息队列的数据存放如一张表中。表字段的设计如下。

表明:message_sort_list

字段:

| 中文名称 | 字段名称 | 字段类型 | 说明 |

| 消息数据 id | rowid | int | 自增 id key |

| 消息编号 | code | string | 消息的编号 |

| 消息内容 | context | string | 消息的内容 |

| 消息队列 | queue | string | 记录其是那个消息队列发送的消息 |

| 消息队列的类型 | queueType | string | 记录消息队列的类型(kafka activeMQ RabbiteMQ mqtt)|

| ip | ip | string | 这个消息是从那个 ip 地址发送出来的 |

| 消息发送时间 | sendtime | timestamp | 记录消息是什么时间产生的 |

| 消息类型 | type | string | 消息的类型(message/error) |

| 产生消息的服务 | prividerService | string | 消息是由那个服务产生的 |

| 发送者类型 | providerType | string | 消息发送者的类型(system/user) |

| 发送者 | provider | string | 消息的产生者 格式:(system/userName)|

索引:

  1. 消息类型(type),产生消息的服务(providerService),发送者类型(prividerType),发送者(provider)。 组合索引:用于精细查询某个业务的消息统计信息。

  2. 发送时间(sendtime)。单个索引:用于查询过某个时间段的消息信息。


发布于: 刚刚阅读数: 7
用户头像

梁山伯

关注

还未添加个人签名 2019-07-16 加入

还未添加个人简介

评论

发布
暂无评论
架构作业-8_梁山伯_InfoQ写作社区