Saving Files In A Database Or In A File System?
Which Is Superior: Saving Files In A Database Or In A File System?
本文分析 Web Serer 管理上傳的檔案的兩種方式,使用 File System 與透過 DB 儲存。
File System
Pros
- 能夠有較好的效能,讀取檔案不用下查詢
- 儲存與下載檔案比起用 DB 簡單很多
- Scale 的時候 File System 比 DB 更便宜
Cons
- 沒有 ACID,無法保證與 DB 間資料的關係
- 安全性低,只要知道 File System 就可以取得檔案
適用場景
- 需要處理較大的檔案,如 5 MB 以上,並可能要儲存上千個檔案
- 服務有大量的使用者時
DB
Pros
- ACID
- 比 File System 安全
Cons
- 檔案要轉換為 blob 才能存入 DB 中
- DB 備份會變得很緩慢
- 在讀寫時會耗費較多的記憶體資源,等同於降低服務效能
適用場景
- 檔案需要較高的安全性
- 少量的檔案與少量的使用者
簡單總結選擇的策略,需要 ACID 的話選 DB,否則 File System 就好。