Vốn dĩ không phải, nhưng nếu bạn có các BLOB lớn làm tắc nghẽn các bảng và bộ nhớ đệm của bạn, điều này chắc chắn sẽ dẫn đến hiệu suất hoạt động.
Vâng, đây là một cách tiếp cận phổ biến. Bạn thường làm điều gì đó như đặt các thư mục được đặt tên theo mỗi bảng mà chúng được liên kết với, chứa các tên tệp chỉ dựa trên khóa chính (lý tưởng là một số nguyên; chắc chắn không bao giờ bất kỳ thứ gì do người dùng gửi).
Đây có phải là một ý tưởng tốt hơn? Nó phụ thuộc. Có những lợi thế về sự đơn giản khi triển khai khi chỉ có một kho dữ liệu duy nhất và không phải lo lắng về việc cấp cho người dùng web quyền truy cập ghi vào bất cứ thứ gì. Ngoài ra, nếu có thể có nhiều bản sao của ứng dụng đang chạy (ví dụ:cân bằng tải hoạt động tích cực) thì bạn cần phải đồng bộ hóa bộ nhớ, việc này với cơ sở dữ liệu dễ dàng hơn nhiều so với hệ thống tệp.
Nếu bạn thực sự sử dụng hệ thống tệp thay vì một blob, thì câu hỏi đặt ra là bạn có yêu cầu máy chủ web phân phát nó bằng cách trỏ một Bí danh vào thư mục không?
- + cực nhanh
- + bộ nhớ đệm tốt
- - cấu hình máy chủ bổ sung:thư mục ảo; cần phần mở rộng tệp thích hợp để trả về
Content-Type
mong muốn - - cấu hình máy chủ bổ sung:cần thêm
Content-Disposition: attachment
/X-Content-Type-Options
tiêu đề để ngăn chặn IE dò tìm HTML như một phần của các biện pháp chống XSS
hay bạn phân phối tệp theo cách thủ công bằng cách để một tập lệnh phía máy chủ nhổ nó ra, như bạn sẽ phải phân phát từ một MySQL blob?
- - có khả năng chậm
- - cần một chút xử lý thủ công If-Modified-Since và ETag để lưu vào bộ nhớ cache đúng cách
- + có thể sử dụng các phương pháp kiểm soát truy cập riêng của ứng dụng
- + dễ dàng thêm các tiêu đề Loại Nội dung và Bố trí Nội dung chính xác từ tập lệnh phân phối
Đây là một sự đánh đổi mà không có một câu trả lời được chấp nhận trên toàn cầu.