2012-04-05 87 views
2

我將在不久的將來接近一個大型網站,這將需要上傳和存儲數百或數千個視頻。此外,許多圖片需要上傳,但幾乎沒有,而且尺寸也很小。到現在爲止,我一直使用PHP和MySQL如下:php視頻和照片上傳:存儲在數據庫中與上傳

  • 上傳圖片
  • 在數據庫中存儲的文件名
  • 參考數據庫中的一個文件夾+文件名顯示文件

但是,我已經對數據庫中存儲圖像和文件的一些BLOB進行了一些研究,並且不確定哪種方式最適合這個潛在的大型項目。我應該繼續上傳我曾經的方式,還是在mysql中使用BLOB類型更有效?我擔心通過在數據庫中存儲大量視頻和圖像,數據可能太多或太慢,但我可能完全錯誤。請讓我知道你有任何和所有的建議。

+2

對於存儲在BLOB中的每個視頻,小貓都將滅亡! – 2012-04-05 16:49:12

+0

你有一個非常有效的點! – 2012-04-06 14:31:02

回答

3

好了,兩個大領域是:備份,並改變

備份

根據您選擇的數據庫引擎,備份需要鎖定/轉儲/解鎖。數據庫越大,鎖定的時間就越長。您可以使用某些功能(主/從)來允許熱插拔(沒有鎖的備份),但存在備份無法完全覆蓋數據集的風險,並且數據庫的規模仍然是一個因素。如果大文件僅僅是文件(而不是DB BLOBS),那麼只需要爲文件系統制定一個備份策略即可,因爲它們可能是靜態的,這意味着需要存儲多個副本(甚至可以通過上傳時的設計 - 存儲在服務器A和服務器B上)。

變化

你希望你的系統保持不變?這聽起來像你會有擴展問題。隨着系統的增長,您可能會將數據庫移動到另一臺服務器,文件存儲到另一臺服務器還是SAN(或S3等)?如果你已經將所有這些都鎖定在數據庫中,那麼你必須依靠DB唯一的解決方案來處理腫脹大小(大型昂貴的服務器,主/從設備等)。當然,你可以將文件存儲在一個數據庫中(減少備份需求,不要亂用數據庫)和其他數據在另一個數據庫中......但文件系統是一種數據庫。

所以

所以對於備份和擴展存儲大文件的文件,而不是BLOB的是一個更好的解決方案。如果文件很小(例如較低的MP JPG),天平可能會發生變化。但對於大型文件來說,數據庫處理的開銷以及它對數據庫服務器的額外負載要求沒有意義。保持獨立。

+0

太棒了!我很高興你向我解釋這一點!它有助於一噸! – 2012-04-05 18:32:19

5

將圖像保存在BOLB中效率不高。這將很難管理。你的數據庫將變大。

它會慢一些再服從服務器上的文件與PHP腳本

+0

同意。我不會把圖像放在大膽的''---)' – halfer 2012-04-05 17:05:46

+0

非常感謝您的建議! :) – 2012-04-05 18:31:59