2015-10-02 117 views
-2

我正在做一個學術項目的網站,讓學生上傳和下載文件。在MySQL中存儲視頻

將文本文件照片和視頻直接插入數據庫或將它們存儲到服務器並在數據庫中鏈接到它們會更好嗎?

您可以通過任何方式討論性能和其他問題。 注意:我使用的是MySQL數據庫,我也想上傳非常冗長(比如一小時)的視頻,並且文件大小也可能爲1 GB。

+0

基本上,讓文件系統處理他們最擅長的功能(存儲文件)和數據庫處理他們最擅長的功能。 – Phylogenesis

回答

0

您只需將視頻存儲在某個文件夾中,並將該視頻的路徑以唯一名稱存儲到數據庫中。

所有媒體文件必須存儲在某個位置,並且必須將其鏈接存儲在數據庫中。

0

當你發現自己已經有兩個可能的方式來做到這一點:

  1. 保存整個文件(元數據需要+視頻本身)在數據庫
  2. 只存儲鏈接到文件在數據庫(所以你需要的元數據),而視頻本身存儲在硬盤驅動器(或另一個硬盤驅動器)

第二種方法通常是首選(儘管索引幫助純性能),因爲:

  • 當您備份數據庫時,如果您還有視頻數據,則它將停止長時間運行。
  • 也回饋視頻數據的SQL查詢需要更長的時間(索引與否),因爲他們只需要返回更多數據。這也導致數據庫服務器不得不更多地工作。
  • 在許多刪除和插入的情況下,......您可以非常快速地填寫交易日誌,並且它變得非常大。

此外:文件系統通常相當擅長管理文件(無論操作系統在運行),因爲它是爲此而設計的。

因此,本質上並將其整理:無需將文件本身存儲在數據庫中,也不會帶來任何好處。對數據庫來說,更多的備份/恢復操作需要更長的時間,並且可以更快地填寫日誌,因此您需要數據庫服務器上更多的空間。除此之外,第一個變體的sql命令不會相應地增加(儘管插入和刪除操作總是花費更長的時間,因此我只是在說那些可以做得非常快的選擇)。

2.變體的一個缺點是:您需要2種備份方法。 1爲數據庫,第二個爲文件本身。第二種可能是您需要手動存儲/刪除文件,並需要相應的例程。