Lưu blob lớn (ảnh, video, file) trong database là phản mẫu: làm tăng nhanh dung lượng DB, backup nặng, cache kém, tốn băng thông — DB nên dành cho dữ liệu có cấu trúc và truy vấn.
Cách chuẩn: đưa file vào object storage (S3, GCS, R2) và chỉ lưu URL/metadata trong DB.
Vì sao object storage hợp:
- Thiết kế cho object bất biến, dung lượng gần như vô hạn, chi phí thấp, độ bền cao (nhiều bản sao).
- Phục vụ trực tiếp qua CDN → giảm tải app server.
- Presigned URL: client upload/download thẳng tới storage mà không đi qua app server → tiết kiệm băng thông và tài nguyên.
Dùng DB chỉ cho blob rất nhỏ và cần giao dịch chung (hiếm). Metadata (tên, kích thước, owner, content-type) thì để trong DB để truy vấn.