簡體   English   中英

php 視頻和照片上傳:存儲在數據庫中 vs. 上傳

[英]php video and photo uploading: storing in database vs. uploading

我將在不久的將來接近一個需要上傳和存儲數百甚至數千個視頻的大型站點。 此外,需要上傳許多圖像,但不會那么多,而且它們的尺寸會很小。 到目前為止,我一直使用 php 和 mysql 如下:

  • 上傳圖片
  • 將文件名存入數據庫
  • 引用數據庫中的文件夾+文件名來顯示文件

但是,我對一些在數據庫中存儲圖像和文件的 BLOB 進行了一些研究,但不確定哪種方式最適合這個潛在的大型項目。 是繼續按照之前的方式上傳,還是使用mysql中的BLOB類型效率更高? 恐怕通過在數據庫中存儲大量視頻和圖像,它可能會變得太多數據或太慢,但我可能完全錯了。 請讓我知道您的所有建議。

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

它會比使用 PHP 腳本從服務器提供文件要慢

好的,所以兩大領域是:備份和更改

備份

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

改變

您希望您的系統保持不變嗎? 聽起來您會遇到縮放問題。 隨着系統的增長,您是否可以將數據庫移動到另一台服務器,將文件存儲移動到另一台服務器或 SAN(或 S3 等)? 如果您將所有內容都鎖定在數據庫中,則必須依靠僅使用數據庫的解決方案來處理不斷膨脹的規模(大型昂貴的服務器、主/從等)。 當然,您可以將文件存儲在一個數據庫中(較少的備份要求,不會弄亂您的數據數據庫),而將其他數據存儲在另一個數據庫中……但是文件系統是一種數據庫。

所以

因此,對於備份和縮放,將大文件存儲為文件而不是 BLOB 是更好的解決方案。 如果文件很小(例如低 MP JPG),平衡可能會發生變化。 但是對於大文件來說,數據庫處理的開銷和它對數據庫服務器的額外負載要求是沒有意義的。 讓他們分開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM