架构实战营 模块八作业
初始設計
表名
Queue,因為一開始數據量並不大,根據簡單原則設計,可以將所有消息隊列的數據都儲存在同一張表中。
字段
id: 是自增長、不可重複、數字類型字段,用以紀錄進入消息隊列的順序。
queueName: 字串類型字段,消息隊列的名稱。
read: 布林類型字段,default 為 false,被讀取過後會改為 true。
createDate: 日期類型字段,用以紀錄數據進入消息隊列的時間。
data: byte array 類型字段,用以儲存消息隊列的數據。
索引
id + queueName: 用於要刪除整個隊列的數據時
id + queueNmae + read: 真實使用情境上,只會想查特定消息隊列內、還沒被讀取過的數據。
id + queueName + createDate: 用於要刪除過期數據時
演化設計
表名
以隊列名稱
作為表名,一個隊列一張表。
因為每個隊列的數據量不一樣,當資料量成長到需要分表分庫的階段時,應根據演化原則,將所有隊列數據切分到不同表中,除了能避免表操作的影響外,查詢速度也可以加快。
字段
id: 是自增長、不可重複、數字類型字段,用以紀錄進入消息隊列的順序。
read: 布林類型字段,default 為 false,被讀取過後會改為 true。
createDate: 日期類型字段,用以紀錄數據進入消息隊列的時間。
data: byte array 類型字段,用以儲存消息隊列的數據。
索引
id + read: 真實使用情境上,只會想查特定消息隊列內、還沒被讀取過的數據。
id + createDate: 用於要刪除過期數據時
版权声明: 本文为 InfoQ 作者【孫影】的原创文章。
原文链接:【http://xie.infoq.cn/article/8f7a5ef739800acd3d749101c】。文章转载请联系作者。
评论