模块 8 作业
设计消息队列的 mysql 表格
要求:
包括表明、字段、索引
用文字描述设计思路和理由,例如:为什么设计某个索引
解答:
因为我工作中对 mysql 使用较少,因此换用我用的较多的 postgrel 进行设计,总体思路和实现逻辑基本一致。
每个消息队列建一张表,这样利于隔离数据、提高读写型性能
表字段包括 id、消息写入时间、分区 id、消息 key、消息内容、消息状态、消费时间。
其中 id 为自增逻辑主键、消息写入时间为写入消息的事件戳、分区 id 为对应 shard 的 id、消息 key 为消息关键字、消息内容为消息文本、消息状态为记录的消费状态、消费时间为消息被处理的时间。
索引包含:id(主键自带索引);消息写入/消费时间,运营功能需要按照时间进行查询和排序;分区 id,回溯问题需要追踪到具体消息分到了哪个 shard,同时管理功能也需要按照分区进行数据拆选;消息状态,管理功能需要按照状态进行筛选
分表:postgrel 可自动按照定义逻辑创建分表,因此可以按照 id 进行分表。postgrel 建议单表存储不超过 10g,而消息占用存储较大,因此单表设定大小为 20w 条数据,超过则自动拆分分表
评论