写点什么

架构训练营模块八作业

作者:gigifrog
  • 2023-03-22
    贵州
  • 本文字数:446 字

    阅读完需:约 1 分钟

作业要求

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

详细需求

  • 包括表名、字段、索引

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

设计方案

  • 整体采用一个 Topic 一张表的设计原则。

  • 每张表可以有自己的维护策略(数据保留最近 3 个月/12 个月)

  • 根据业务需求不同可以,有些部署在本地数据中心,有些需要多个数据中心

  • 可以用脚本为每个新 Topic 创建对应的表

  • 一共有如下三种表

  • TOPIC_LIST --- 全局唯一的表,每个 Topic 对应一条记录。记录 Topic 名称、数据维护周期、最近维护日期等

  • TOPIC_<Topic Name> --- 每个 Topic 对应一张独立的表。记录每条消息的具体内容

  • SUBSCRIBER_<Topic Name> --- 每个 Topic 对应一张独立的表。记录订阅的用户和最后消费的消息 ID

TOPIC_LIST 表

Index

  • name

  • name + state + last_purge_time --- 查询需要清理过期信息的 Topic 列表

TOPIC_<Topic Name> 表

Index

  • id + group_id --- 查询某条消息后所以消息列表

  • group_id + create_time --- 查询某时间点后的消息列表

SUBSCRIBER_<Topic Name>表

Index

  • state + last_ack_id --- 某条消息开始,没有收到 ack 的订阅者 ID 列表

用户头像

gigifrog

关注

还未添加个人签名 2018-01-17 加入

还未添加个人简介

评论

发布
暂无评论
架构训练营模块八作业_架构训练营_gigifrog_InfoQ写作社区