国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

單系統站內信數據庫設計思路

G9YH / 2709人閱讀

摘要:第一版設計需求單用戶之間通信融合了用戶反饋需求數據庫設計內容和收發者存在一張表中表這里一條存兩次,類似郵件服務。參考群發站內信的實現群發站內信的實現續兩年后,再議站內信的實現百萬級用戶量的站內信群發數據庫設計

第一版設計
需求 :單用戶之間通信(融合了用戶反饋需求)
數據庫設計:Message內容和收發者存在一張表中

message表:
這里一條Message存兩次,類似郵件服務。

status:已讀、未讀、已刪

每當發信者發消息時,就向數據庫中寫入兩條數據,相當于推送式。

推送式:
    優勢:在用戶量(百、千)和消息量較少時,數據庫操作效率高,無需聯表查詢;
    劣勢:不適合群發,重復保存文本內容。
比方說,Message字段有100個漢字,占用200個字節,那么5萬條,就占用200×50000=10000000個字節=10M。簡單的一份站內信,就占用10M,這還讓不讓人活了。
第二版設計
需求:增加*企業管理員*和*系統管理員*的通知功能,即特殊用戶的一對多功能
數據庫設計:兩張表,message保存消息內容,messagelog保存關系

message表


type:private:單對單 、 public:企業通知、 global:系統通知;
from_id:保存了發信者的userid,因為信的發送者是固定的,和發送日期、信息內容一樣是固有信息可以放在一起,若放在messagelog中冗余。
from_status:message在發送者處的狀態。同樣是三種。

messagelog表

單用戶間發件處理:
發送郵件,插入message和messagelog表各一條記錄。(推送式)

企業或者系統發件處理(通知):
發送郵件,插入message一條記錄,在用戶讀取收件箱時從message中拉取通知。(拉取shi)

拉取式:
    優點:“不用一次性插入N條,且不會產生無效的記錄”。只有活躍用戶才保存收取通知的記錄,發件后再未登錄的用戶不會保存。
    缺點:聯表查詢,時間復雜度更高

顯示一個用戶的收件箱內容流程:

通過userid取到用戶信息(所屬企業id、注冊時間);

查詢rec_id=userid的記錄,取message_id和rec_status;

(處理通知)查詢messagelog表中,符合條件(type=GLOBAL or (type=PUBLIC and company_id= user.company )) and create_time > user.registertime 這些notice,把這些notice和2中的message_id集取交集,非交集中的notice顯示未讀狀態,其他信息按2中讀取的rec_status顯示。

以上還有messag可見有效期的簡單處理,用戶注冊前的通知不可被用戶收到;

其他

1.考慮當用戶的company字段變更時對之前那些收到的company通知處理,個人認為在轉企時變更用戶其他信息時,也把原company的通知也同步到用戶的messagelog記錄中;也可以不管那些未讀的原comopany通知;也可以把已處理的原company通知從messagelog中刪除。這個得看業務要求,而且轉企這種請求很少發生。
2.考慮普通用戶下的1->N,當N不大時,可仍然按單對單的推送式處理;N很大時,就按通知處理方法。

參考

群發“站內信”的實現
群發“站內信”的實現(續)
兩年后,再議“站內信”的實現
百萬級用戶量的站內信群發數據庫設計

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69088.html

相關文章

  • 系統內信據庫設計思路

    摘要:第一版設計需求單用戶之間通信融合了用戶反饋需求數據庫設計內容和收發者存在一張表中表這里一條存兩次,類似郵件服務。參考群發站內信的實現群發站內信的實現續兩年后,再議站內信的實現百萬級用戶量的站內信群發數據庫設計 第一版設計 需求 :單用戶之間通信(融合了用戶反饋需求) 數據庫設計:Message內容和收發者存在一張表中 message表: 這里一條Message存兩次,類似郵件服務。...

    Achilles 評論0 收藏0
  • 系統內信設計概述

    摘要:也可以在凌晨系統不是那么繁忙的時候操作。總結一下少量用戶設計簡單,但浪費空間,冗余高中量用戶設計較簡單,對表的操作壓力大大量用戶這不是增加幾個表能解決的問題 基本功能 點到點的消息傳送: 用戶給用戶 管理員給用戶 點到面的消息傳送 管理員給用戶群 少量用戶(10-999) 對于用戶非常少的情況,沒有必要深入的考慮數據庫的優化,采用簡單的表設計: 如表message ...

    Rainie 評論0 收藏0
  • 基于workerman實現的web消息推送內信功能

    摘要:客戶端訪問后端,確認是否有發送給自己的站內信,如有,播放消息提示音,并更改頁面站內信未讀數。登陸請求成功,服務器監聽程序會以作為用戶的連接標識。調用上述的服務將信息推送到服務器監聽程序。 流程說明 使用 web-msg-sender 作為 服務器監聽程序。 客戶端(瀏覽器)通過websocket連接 服務器監聽程序。 服務器應用程序(后端) 通過curl訪問 服務器監聽程序,將需...

    YFan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<