Nếu hình ảnh của bạn nhỏ, bạn có thể lưu trữ chúng dưới dạng dữ liệu nhị phân trong các tài liệu trong bộ sưu tập của bạn. Chỉ cần xem xét rằng bạn sẽ truy xuất chúng mỗi khi bạn truy vấn tài liệu của mình (trừ khi bạn loại trừ trường 'hình ảnh' khỏi các truy vấn của mình).
Tuy nhiên, nếu hình ảnh của bạn lớn hơn, tôi sẽ sử dụng GridFS. GridFS có một số tính năng giúp bạn xử lý ảnh rất tốt mà bạn nên cân nhắc:
- Đối với hình ảnh lớn hơn, khi chúng được lưu trữ trong GridFs, chúng sẽ được chia thành nhiều phần và bạn có thể lưu trữ các tệp rất lớn. Nếu bạn cố gắng lưu trữ hình ảnh trong tài liệu của mình, bạn bị ràng buộc bởi kích thước tối đa 16Mb của tài liệu và bạn đang tiêu tốn không gian cần được sử dụng cho tài liệu thực tế của mình.
- Bạn có thể thêm siêu dữ liệu vào chính hình ảnh và chạy truy vấn dựa vào các thuộc tính này, như thể bạn đang thực hiện nó từ một tài liệu thông thường trong bộ sưu tập. Vì vậy, GridFS là tốt như một tài liệu cho siêu dữ liệu về hình ảnh.
- Tôi thực sự thích rằng tôi nhận được MD5 băm tính trên hình ảnh. (Nó rất hữu ích cho một số trường hợp của tôi).
- Bằng cách lưu trữ hình ảnh trong GridFS bạn tự tiết kiệm tiền xử lý của hình ảnh sang định dạng nhị phân (không phải là một vấn đề lớn, nhưng một sự tiện lợi của GridFS)
Xét về hiệu suất, đọc/viết đối với một tài liệu thường xuyên nên không khác gì so với làm việc với GridFS. Tôi sẽ không xem xét hiệu suất là một sự khác biệt trong việc lựa chọn một trong hai.
Đề xuất cá nhân của tôi là đi với GridFS, nhưng bạn cần phải phân tích cho trường hợp sử dụng cụ thể của bạn.
Hy vọng điều này sẽ hữu ích.
helo @luckytaxi, "0 xuống bỏ phiếu \t tôi sử dụng GridFS để lưu trữ ảnh và tài liệu. Đó là dễ dàng như vậy và lấy nó ra khỏi bộ sưu tập để hiển thị hoặc lưu tại địa phương là dễ dàng." u có thể giải thích làm thế nào u làm hình ảnh tải lên, lấy và hiển thị tại địa phương? –
Bất kỳ ví dụ nào về điều này bằng bất kỳ cơ hội nào, tôi thực sự đang cố thực hiện chính xác hình ảnh hồ sơ người dùng này – Lion789