2011-10-18 17 views

Trả lời

19

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.

1

GridFS được phát triển để xử lý Tệp theo cách hiệu quả. http://www.mongodb.org/display/DOCS/When+to+use+GridFS

Đừng quên rằng bạn có thể phải dịch dữ liệu thành tệp và quay lại.

Nhưng để chắc chắn, hãy thực hiện kiểm tra hiệu suất tính đến mẫu sử dụng của bạn.

3

Tôi sử dụng GridFS để lưu trữ ảnh và tài liệu. Thật dễ dàng và lấy nó từ bộ sưu tập để hiển thị hoặc lưu cục bộ thật dễ dàng. Bạn có thể lưu trữ siêu dữ liệu cùng với dữ liệu nhị phân bên trong cùng một bộ sưu tập. Bằng cách này, bạn không cần tạo bộ sưu tập bổ sung để lưu trữ chúng.

Ví dụ: trong một dự án của tôi, tôi lưu trữ ảnh hồ sơ người dùng cùng với tên người dùng, loại tệp và ngày tải lên.

+0

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? –

+1

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

Các vấn đề liên quan