写点什么

模块 8 作业

用户头像
方堃
关注
发布于: 2 小时前

设计消息队列的 mysql 表格

要求:

  1. 包括表明、字段、索引

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

解答:

因为我工作中对 mysql 使用较少,因此换用我用的较多的 postgrel 进行设计,总体思路和实现逻辑基本一致。

  1. 每个消息队列建一张表,这样利于隔离数据、提高读写型性能

  2. 表字段包括 id、消息写入时间、分区 id、消息 key、消息内容、消息状态、消费时间。

其中 id 为自增逻辑主键、消息写入时间为写入消息的事件戳、分区 id 为对应 shard 的 id、消息 key 为消息关键字、消息内容为消息文本、消息状态为记录的消费状态、消费时间为消息被处理的时间。

  1. 索引包含:id(主键自带索引);消息写入/消费时间,运营功能需要按照时间进行查询和排序;分区 id,回溯问题需要追踪到具体消息分到了哪个 shard,同时管理功能也需要按照分区进行数据拆选;消息状态,管理功能需要按照状态进行筛选

  2. 分表:postgrel 可自动按照定义逻辑创建分表,因此可以按照 id 进行分表。postgrel 建议单表存储不超过 10g,而消息占用存储较大,因此单表设定大小为 20w 条数据,超过则自动拆分分表

用户头像

方堃

关注

还未添加个人签名 2019.02.11 加入

还未添加个人简介

评论

发布
暂无评论
模块8作业