目前不少的短消息功能都容許羣發。在羣發數量大的狀況下,該如何有效的處理呢?我在工做中遇到這樣的問題,參考網上一些方案,想了幾種設計方式,記錄一下:數據庫
1. 全寫入
在點擊發送時將發送給N個用戶的信息以N條記錄的方式寫入數據庫。
修改(已讀標記)、刪除單一。設計
2. 1+N條記錄
因爲是羣發,所以文本內容都是相同的。因此設計表結構時分消息表和消息內容表。在提交的時候,先將內容記入消息內容表並獲取其id,而後關聯該內容id給N個用戶分N條寫入消息表。
修改單一。
刪除:若是收到該消息的用戶都刪除了該消息的狀況下,應該刪除消息內容表中的數據。
對於該處目前想到兩種方式:
1). 給消息內容表增長個計數,每一個用戶刪除時將計數減1,當計數爲0時就能夠刪除該記錄。
2). 刪除在消息表中沒有對應數據的消息內容。由計劃任務定時處理(前種方式的實際數據刪除也可採用這種方式)數據
3. 1+1+N條記錄查詢
一條消息內容+1條廣播範圍+多條receiver信息,查詢未讀消息時從廣播表中查找,receiver信息接收人查看消息時記錄。工作