若是您在選擇保存上傳到服務器的文件的最佳方式時猶豫不決,若是您習慣於將文件存儲在文件系統中並認爲文件系統是爲了保存文件而建立的,或者若是您不擔憂在某些狀況下使用數據庫保存文件的優點,那麼是時候從新考慮你的選擇了。數據庫
文件系統安全
文件系統的優勢
性能可能比在數據庫中執行時更好。爲了證實這一點,若是將大型文件存儲在數據庫中,則可能會下降性能,在文件系統中,訪問文件很是簡單,重量輕。保存文件並將其下載到文件系統中比在數據庫中簡單得多,由於簡單的「另存爲」功能能夠幫助您。能夠經過使用已保存文件的位置尋址URL來完成下載。遷移數據是一個簡單的過程。您能夠將文件夾複製並粘貼到所需目標位置,同時確保爲目標提供寫入權限。服務器
文件系統的缺點
1)鬆散包裝。關係映射中沒有ACID(原子性,一致性,隔離性,持久性)操做,這意味着沒法保證。考慮一種狀況,您手動或經過一些黑客傢伙從手中刪除您的文件。您可能不知道該文件是否存在。性能
2)安全性低。因爲您的文件能夠保存在您應該提供寫入權限的文件夾中,所以很容易出現安全問題並引起麻煩,例如黑客攻擊。若是您沒法在安全性方面作出妥協,最好避免保存在文件系統中。spa
數據庫blog
數據庫的優勢
ACID一致性,包括在文件存儲在數據庫外部時更新的回滾。文件將與數據庫同步,不能孤立,這在跟蹤事務時佔上風。備份自動包含文件二進制文件。它比保存在文件系統中更安全。排序
數據庫的缺點
可能必須將文件轉換爲blob才能將它們存儲在數據庫中。數據庫備份將更加沉重和沉重。一般,RDBMS是由RAM驅動的,所以全部數據必須首先進入RAM。當RDBMS必須查找和排序數據時會發生什麼?RDBMS跟蹤每一個數據頁 - 即便讀取和寫入的數據量最少 - 它必須跟蹤它是否在內存中,或者它是否在磁盤上,是否已編入索引或是否在物理上進行了分類等。索引