2013-02-27 43 views
1

我正在嘗試開發一個應用程序,用戶可以將其電子郵件導入並搜索其導入的電子郵件。由於這可能會被許多用戶(容易10k +)使用,數據庫設計至關重要。有了這些用戶數量,數據庫可能需要能夠保存10億行(電子郵件)。用於存儲億次電子郵件的數據庫模式

應用程序需要能夠在應用程序上發佈搜索查詢後快速返回記錄。數據庫將被嚴重搜索,我希望在創建數據庫表時創建一個高效的數據庫模式。我自己有很多關於MySQL的經驗,但我已經閱讀過某處我不應該那樣去尋找MongoDB或者其他東西?差異如此之大,還是有什麼辦法可以繼續使用MySQL?

  • 受試者
  • 日期(範圍)
  • 附件(名稱&類型只)
  • 消息內容
  • (可選)郵箱/文件夾結構

這些是可搜索的字段,當然所有的電子郵件都會有唯一的id和user_id的額外兩個「列」。我發現了幾個電子郵件的數據庫模式,但是我找不到任何可以使用超過10億行的模式的任何文檔。

+1

那是一千萬,還是一百萬? ':)'。如果你真的想達到這個水平,可以獲得一個外部服務來做到這一點 - 我懷疑必須有一個可以使用API​​與之交互的電子郵件存儲解決方案。這就是說,你需要的是現實的:這可能是不成熟的優化? – halfer 2013-02-27 10:37:42

+0

存儲1,000,000,000多封電子郵件。這個想法是在亞馬遜雲上運行(可擴展)。我的想法是將重要的(可搜索的)字段插入數據庫後,將電子郵件存儲到S3存儲中。 – Floris 2013-02-27 12:57:12

+0

Solr呢? – 2013-02-27 19:49:42

回答

1

如果網站確實有近十億條記錄,那麼如果需要的話,您可以將其移動到亞馬遜服務器或另一個雲主機(應該)允許表分區。

假設您不在具有限制的共享主機上,MySQL可以處理相當數量的數據。

所以,從簡單開始,不要優化一個還不存在的問題,並且看看它是如何發展的。

+0

是的,MySQL與分片可能是一個好的開始。 – halfer 2013-02-27 14:04:44

+0

好點,我會補充說,讓每個客戶創建一個單獨的表 - 因此你不會有一個超級表搜索,它不會永遠找到結果。 – ulkas 2013-02-27 14:08:44

+1

@ulkas如果正確使用分片,只需幾ms就可以查詢表 – Sammaye 2013-02-27 16:02:19

相關問題