2009-02-02 170 views
3

我正在構建一個Web應用程序,用於處理用戶和客戶端之間的內部電子郵件和其他頻繁的中小型文本塊。什麼是存儲這些數據的最佳方法?在數據庫(MySQL)或成千上萬的單個文件?怎麼樣壓縮它(PHP的gzcompress()或MySQL的壓縮功能)?將大量文本(數據庫或文件?)存儲的最佳做法是什麼?如何壓縮它?

這不會是一個公共應用程序,所以用戶負載將是最小的(每次少於20個用戶)。但是,應用程序中每天都會有很多通信來回傳遞,所以我期望隨着時間的推移數據量會變得相當大(這就是爲什麼我想壓縮它)。

我想保留數據庫中的數據以便於訪問和移植,但我在這裏看到的有關圖像的一些線程已經建議使用文件存儲。你怎麼看?

謝謝 賽斯

編輯澄清:我不要求任何形式的文字,這就是爲什麼我會朝着其壓縮以節省空間瘦的搜索的。

回答

1

對於已經具有特定格式(excel,word文檔,pdf文件等)的圖像和文檔,我更喜歡文件存儲。但對於原始文本,我可能寧願使用數據庫。在機器上覆制故障轉移更容易,您可以對文本進行子字符串搜索,儘管我不知道要使用哪種算法來壓縮它,但我認爲數據庫將是更好的方法。但是,只有當你已經有了文本而且它只是文本。我更喜歡使用文件存儲的任何其他格式的文檔。

除非我遺漏了一些東西,否則我會使用CLOB而不是BLOB,如果它只是文本。

0

我會選擇使用數據庫。你描述了一個你要存儲大量消息的場景。您不提供有關係統的許多信息,但我想您可能想對郵件進行排序,分組和應用其他幾個屬性。將消息的屬性保存在數據庫中而不是使用文件存儲會更容易,也可能更快。

說到壓縮,我不知道哪種方法最有效。你應該在選擇之前嘗試兩種方法。

1

將文件保存在數據庫中的一個主要原因是爲了使其與您正在存儲的其餘數據保持一致。使用預定義的數據集進行備份,(重新)部署等將更加容易。此外,保證事務完整性更容易。

將文本存儲爲文件的好處之一是可以更容易地使用網絡服務器爲他們提供服務,如果這是使用文件的唯一剩餘好處,您可以查看緩存文件在網絡服務器上 - 這將爲您提供數據庫的大部分簡單備份和事務處理,但同時允許對http請求進行一些加速。

0

我想知道這個「中塊」有多大。如果文本只是寫入消息(小於10 KB),那麼壓縮使它們更小,並且不會對數據庫增長產生重大影響。它使得開發和維護也更容易,讓單一查詢獲得一切可用,而不必單獨獲取文件內容。

相關問題