有哪些優勢和存儲圖像在數據庫VS存儲在數據庫中只是文件名的BLOB的缺點。最佳方式存儲上傳圖像
我使用PHP(笨)與MySQL。
我知道這個問題是主觀的,但一個客戶問我這個問題,我無法給出很好的答案。
有哪些優勢和存儲圖像在數據庫VS存儲在數據庫中只是文件名的BLOB的缺點。最佳方式存儲上傳圖像
我使用PHP(笨)與MySQL。
我知道這個問題是主觀的,但一個客戶問我這個問題,我無法給出很好的答案。
我一般說:
這意味着我幾乎總是存儲圖像/文件在文件系統中,並且只存儲文件名(以及可能的大小和內容類型 - 可以總是有用的)數據庫。
考慮一下,這個問題可能是重複的......哦,是的,它實際上是;看到至少有這些問題的答案+:
我懷疑你的客戶有足夠的經驗來判斷一個答案。
我曾被客戶問過將圖像嚴格存儲到數據庫中。經過一番調查後,我發現他們只是意味着「將圖像存儲在服務器端」,因爲他們以前有過一個MS Access數據庫,並且可以選擇將數據存儲在數據庫中,還是隻是鏈接到圖像,而圖像本身留在用戶的硬盤上並且經常不可用。
至於你的問題,我懷疑圖像與關係模型的任何關係。您不能根據blob內容對其他行進行排序,過濾和關聯。雖然你必須做很多事情來支持數據庫中的圖像 - 專用腳本來顯示,模擬條件獲取等。 我知道,這個功能是存在的。但更明顯的是嘗試追隨時尚,而不是真正的需求,尤其是在網絡開發中,圖片請求分開請求。
我更喜歡上傳時,重命名文件的圖像,並將它們存儲到與自己的父母(用戶,產品),DB行...然後將它們上傳到3文件夾:
/uploads
/img
/products
/small
/medium
/xxl
它們調整成小(50x50),中等(90x90),xxl(原始尺寸),然後將它們移動到這些目錄中。
,如果你需要搜索引擎優化的圖像,你可以將它們存儲例如:
id | product | image
1 book 1-book.png
所以你會得到ID和產品名稱相同的圖像文件。
,或者你甚至可以只存儲
id | product | image
1 book 1.png
然後是簡單的附加SRC路徑:
/*Config file*/
$config['base_static_products_url'] = 'uploads/img/products/';
/*View file*/
<img src="<?php echo base_url().$this->config->config['base_static_products_url'].'/small/'.$row->image ?>" alt=""/>
OR (no SEO)
<img src="<?php echo base_url().$this->config->config['base_static_products_url'].'/small/'.$row->id.'.png' ?>" alt=""/>
看起來,它也取決於如果你需要將所有文件都存儲在同一個文件ext的圖像,如果你知道你只會使用PNG文件或只是JPG文件,你也可以不存儲任何東西在數據庫中,只需要用row_id上傳時重命名文件。 PNG – sbaaaang 2012-04-18 16:24:26
帕斯卡爾·馬丁,你的答案似乎非常有說服力。但是,我必須說明,在嘗試使用這兩種方法的過程中,我沒有真正看到性能上的差異(即,在外部存儲圖像,而不是像BLOBS一樣將它們保存在數據庫中)。也許我的數據量並不多。另一個問題是,你是否建議從數據庫中讀取多個BLOB圖像要比從文件系統中讀取多個文件慢?我真的不能接受,但我看到的唯一問題是如果文件保存在外部,備份可能更小。 – itsols 2015-06-13 02:52:56