| 維度 | 數據庫 BLOB | 文件系統 + 路徑 |
|---|---|---|
| 小文件(<100KB) | ✅ 事務一致性、備份簡單 | ✅ 讀取快、緩存友好 |
| 大文件(>1MB) | ❌ 內存壓力大、備份慢、複製表困難 | ✅ 流式讀寫、CDN 分發、增量備份 |
| 事務一致性 | ✅ ACID 原生支持 | ❌ 需補償機制(刪文件失敗) |
| 權限控制 | ✅ 數據庫行級權限 | ✅ 應用層/簽名 URL 控制 |
| 遷移/擴展 | ❌ 導出導入耗時 | ✅ 掛載新卷、對象存儲無縫切換 |
| 備份恢復 | ✅ 單文件備份 | ✅ 文件級增量/快照 |
url/bucket/key。// 實體
class Image {
Long id;
String storageType; // "DB" / "FS" / "S3"
String pathOrKey; // FS路徑 或 S3 Key
byte[] data; // 僅 storageType=="DB" 時非空
}
// 存儲服務
interface ImageStore {
String save(byte[] data, String mime);
byte[] load(String key);
void delete(String key);
}
運行時根據文件大小、業務類型動態選擇實現。