站內(nèi)消息-數(shù)據(jù)設計

簡單的站內(nèi)消息

分表來設計。把msg內(nèi)容存另一張表
表msg_send:
ID、發(fā)送者ID、接收者ID、msg_id(消息內(nèi)容ID)、閱讀狀態(tài)、delete_time(是否刪除)

表msg_content:
msg_id、title、content

適合群發(fā)不規(guī)則用戶的站內(nèi)消息

如群發(fā)不是所有人,不是某類人,而是根據(jù)有訂單或積分>200的不規(guī)則用戶,適合此項
表msg_send:
ID、發(fā)送者ID、所有接收者IDS、msg_id(消息內(nèi)容ID)、date

表msg_content:
msg_id、title、content

表msg_status:
用戶id、msg_id、del刪除狀態(tài)

查詢用戶A的所有消息ID
$send_ids=查詢msg_send表,條件: 接收者IDS like ',uid,', 返回:msg_send的ID列

根據(jù)A的所有消息ID,查詢消息內(nèi)容
查詢msg_content表

根據(jù)A的所有消息ID,查詢消息狀態(tài)
查詢msg_status表關(guān)聯(lián)msg_content表,條件msg_id in $send_ids and 用戶id=uid and del=0
返回結(jié)果都是已讀,對比后自然得出已讀未讀狀態(tài)

這樣的好處是群發(fā)一條100W人的消息,msg_send和msg_content都只各一條數(shù)據(jù),msg_status已讀一人加一條,僵尸用戶不增加數(shù)據(jù)
msg_send存入所有接收者IDS格式為json的'[0,12,16,0]'

百萬級用戶量的站內(nèi)信設計

2個表:消息表、用戶消息容器表
管理員發(fā)一條站內(nèi)信,系統(tǒng)往站內(nèi)信表插入一條數(shù)據(jù),其中發(fā)送方式區(qū)分接收的對象(0為全體發(fā)送,1為只發(fā)送給注冊會員,2為只發(fā)送給企業(yè)會員,3為指定會員發(fā)送),這樣,發(fā)送給全體會員的一條站內(nèi)信暫時只生成了一條數(shù)據(jù)。

前臺會員登陸或的時候,根據(jù)會員自身的會員類型(普通會員,企業(yè)會員)查詢站內(nèi)信表中屬于自己的最新消息(根據(jù)自己所持消息的最新時間與消息表的發(fā)送時間做 比對)或(是否存在做對比),往消息容器中插入自身與所持消息的關(guān)聯(lián)數(shù)據(jù),默認未未讀。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容