電商系統百萬級站內信系統設計(主要資料庫設計)

2021-09-01 18:54:45 字數 1230 閱讀 3318

大家知道,電商系統都是百萬級以上的使用者活動量,如果用正常的思路設計的程式,肯定是有很多漏洞和效能無法滿足系統的需求,那麼為了解決這個問題,本人特意寫下部落格給有需要的或者正在開發的新人一點設計思路。寫的好的地方請借鑑, 不好的地方請指正

設計兩張表,一張是訊息表,另一張是訊息狀態表。

傳送站內公告的時候,系統只需要傳送一條記錄,但是每個人都能看到的一條記錄(用某個標誌表示清楚,下面有設計),當a這個人檢視訊息的時候,其實看到的是公共訊息,只有他點進去的時候,在另一張狀態表裡面插進一條記錄,並且在這個表裡面的已讀欄位設定為true,這樣,下次在取資料的時候,關聯查詢,即可排除該站內信是否已讀,同樣刪除操作也是同樣的道理,刪除只需要更改狀態表裡面的是否已刪除的字段就可表明是否已讀和是否刪除

一、資料庫

兩張表:

1、訊息表(見圖1)

1、狀態表(見圖2)

查詢sql:

查詢我的訊息:

select

count(id)

from (訊息表) b1

where 條件

and

ifnull(b1.public_id,0)

not in

(select public_id from (狀態表) b2

where b2.member_id= #receiverid:bigint# and b2.is_remove = true)

這句話是說:從訊息表裡面選出我的公告,條件是在狀態表裡面是沒有刪除和未讀的,即我的公告

刪除我的訊息

update (狀態表)

set

is_remove = 1 ,

is_read =1

where

member_id = #memberid:bigint#

and

public_id=#publicid:bigint#

站內信系統的設計思路

站內信是很多系統中的必備模組,結構設計也是老生常談的問題。設計如下,其中mail表示使用者 使用者之間的站內訊息,notice表示系統 使用者之間的系統通知 兩者結構基本一致,由於訊息體本身可能包含text這種大容量的資料內容,因此將訊息體獨立儲存在乙個表中,再將訊息體與收件方關聯,是更加高效一些的...

電商秒殺系統設計

秒殺場景一般會在電商 舉行一些活動或者節假日在12306 上搶票時遇到。對於電商 中一些稀缺或者 商品,電商 一般會在約定時間點對其進行限量銷售,因為這些商品的特殊性,會吸引大量使用者前來搶購,並且會在約定的時間點同時在秒殺頁面進行搶購。限流 鑑於只有少部分使用者能夠秒殺成功,所以要限制大部分流量,...

系統設計 電商排名

銷售排名 大型電子商務公司希望列出最暢銷的產品,整體和類別。例如,一款產品可能是整體銷量排名第1056位的產品,但在 運動器材 一欄中排名第13位,在 安全 一欄中排名第24位。描述你將如何設計這個系統。1.分析步驟 步驟2 做出合理的假設 步驟3 繪製主要元件 步驟4 確定關鍵問題 要獲得每個類別...