2015-05-13 81 views
0

我正在爲一個項目構建一個類似於消息傳遞應用程序的小電子郵件,其中用戶將通過諸如會議時間等信息向另一個人發送消息,並且我想知道如何存儲所有交換的消息。 我的問題是:如何在數據庫中的用戶之間存儲消息?

  • 我應該存儲所有用戶之間的所有信息在一個數據庫表(它會是昂貴讓每個登錄時,用戶的信息)?或者每個用戶都應該爲他/她的消息提供個人桌子(桌子太多了)?
  • 我還需要存儲用戶接受的事件。再次,如果這些在一個表中的所有用戶或每個單獨的表(我需要經常檢索這些)?

我在網站上搜索了其他類似的問題,但大多數似乎關注於實時消息傳遞或特定的實現技術。

感謝您的幫助!

+0

當您做出您的設計決定時,我們可以協助您,除非您正在尋找一種方法與另一種方法。它的簡單直接的發展。我通常會保留歷史記錄,並在一年之內刪除一些東西。 – Fallenreaper

+0

嗨,歡迎來到StackOverflow!這對於網站來說並不是一個真正適合的問題 - 對於「幫助,我堅持[編程問題的細節]」多種多樣的問題,SO更適用於這些問題。這就是說,你的問題很容易回答:除非你有足夠的理由去用很多表 - 不要。如果由於用戶數量龐大而成爲一個大問題,您可以稍後以各種方式進行優化。 –

回答

1

每個用戶的表是一個壞主意。這意味着每個查詢都會有所不同,並且對於每個新用戶,您都需要修改數據庫。這很難構建,很難維護,而且對於數據庫來說效率低下。

所以,只需將它存儲在一張表中。如果您有適當的索引(和適當的硬件),那麼數千萬行將不會成爲問題。

如果您擔心性能不佳,可能會刪除非常舊的消息。或者你可以將它們移動到「存檔」表格中。如果用戶想要查看最近的消息(過去一年左右),他們可以從普通表中獲取消息,而舊消息可以從另一個消息中獲取。通常情況下,挖掘檔案的速度會慢一些,所以如果這個表格變得非常大,這可能是可以的。

這就是說,你已經提到了電子郵件。我會認真考慮檢查實際電子郵件的可能性以及隨附的郵箱。有許多現有的實現,它是一個強大的協議,從互聯網拂曉以來一直存活下來,所以也許你不應該重新發明輪子。

電子郵件可以具有標題(自定義標題)以及多個部分,因此即使「普通」電子郵件不足以滿足您的要求,仍然可以使用電子郵件作爲傳輸層消息。

相關問題