Tôi đang viết ứng dụng web bằng cách sử dụng ASP.NET MVC + NHibernate + Postres stack. Tôi tự hỏi nếu hình ảnh được tải lên nên được lưu trữ trong cơ sở dữ liệu như các đốm màu nhị phân hoặc trên hệ thống tập tin (và chỉ tham khảo trong db). Một ưu điểm của lưu trữ db mà tôi có thể nghĩ là sao lưu/khôi phục dễ dàng tất cả dữ liệu mà không cần hoàn nguyên công cụ sao chép hệ thống tệp. Mặt khác, tôi nghi ngờ rằng truy cập hệ thống tập tin có thể nhanh hơn (nhưng nó đặc biệt là khi giao dịch với nhiều yêu cầu đồng thời?) Đề xuất của bạn là gì?Vị trí cửa hàng tải lên hình ảnh MVC ASP.NET (db vs filesystem)
Trả lời
Tôi muốn đảm bảo cả hình ảnh được lưu trữ trong cơ sở dữ liệu sao cho tất cả dữ liệu được tập trung để sao lưu dễ dàng, nhưng cũng lưu dữ liệu bên ngoài để các yêu cầu lặp lại kho dữ liệu. Thực hiện đúng cách, bạn có thể mang lại các máy chủ web giao diện người dùng mới sẽ hiển thị rõ ràng bộ nhớ cache hình ảnh cục bộ của chúng từ cơ sở dữ liệu sau khi khởi động.
Có một cửa hàng tập trung cho hình ảnh cũng hữu ích để đảm bảo bạn gửi tiêu đề phản hồi HTTP được sửa đổi lần cuối và ETAG tốt cho hình ảnh trong một hệ thống có nhiều máy chủ web, vì các tiêu đề đó có thể được tạo từ nội dung cơ sở dữ liệu thay vì từ các đối tượng bộ nhớ cache cục bộ.
Chỉ cần lưu ý thực hiện cho PostgreSQL: bạn có thể đặt "chế độ lưu trữ" của cột chứa dữ liệu hình ảnh thành "bên ngoài": điều này sẽ dừng PostgreSQL cố gắng nén dữ liệu hình ảnh (sử dụng zlib, có khả năng cung cấp bất kỳ lợi ích nào) và sẽ làm cho nó lưu trữ dữ liệu hình ảnh trong bảng TOAST phụ trợ, cung cấp hiệu suất tốt hơn nếu bạn chỉ đang truy vấn siêu dữ liệu hình ảnh. Hãy xem phần "SET LƯU TRỮ" khoản của lệnh ALTER TABLE, ví dụ .:
ALTER TABLE media.image ALTER COLUMN content SET STORAGE EXTERNAL
Điều đó tùy thuộc. Bạn có giá trị có thể liên kết trực tiếp đến một hình ảnh hay bạn muốn luôn sử dụng tài nguyên phía máy chủ để gọi cho DB và sau đó ghi dữ liệu nhị phân cho hình ảnh?
Chúng tôi sử dụng lưu trữ bản gốc bằng cơ sở dữ liệu để sao lưu, nhưng tạo ra thu nhỏ lại hình ảnh được lưu trữ trên hệ thống tập tin trên máy chủ web.
Tuy nhiên, chúng tôi cố gắng tránh mọi vòng lặp tới cơ sở dữ liệu nếu có thể, vì nó tạo tải rất lớn vì một trang thường gọi một số yêu cầu hình ảnh cho mỗi lần xem trang.
Một lưu ý về lưu trữ các đốm màu trong cơ sở dữ liệu, tôi khuyên bạn nên lưu các cột blob thực tế trong một bảng chuyên dụng, với ánh xạ một-một cho thực thể/thực thể của bạn. Điều này sẽ dễ dàng sao lưu, cũng như thay đổi các bảng của bạn. Khi một bảng lớn lên, mọi thay đổi sẽ mất "mãi mãi" để hoàn thành và khóa là một vấn đề lớn, ngay cả khi sao lưu.
Nếu bạn có tất cả thông tin về hình ảnh (ngoại trừ dữ liệu nhị phân), dữ liệu đó sẽ không bị ảnh hưởng trừ khi bạn cần dữ liệu nhị phân (mà bạn hiếm khi cần vì nó sẽ được lưu trong hệ thống tệp).
Chỉ hai xu của tôi.
Cơ sở dữ liệu khác nhau có các cách tiếp cận khác nhau để lưu trữ các đốm màu: postgresql sẽ tự động lưu trữ các giá trị bytea lớn ngoài dòng trong bảng "bánh mì nướng" riêng biệt, vì vậy không cần phải làm điều này một cách rõ ràng. – araqnid
Trong thực tế, để lưu trữ dữ liệu hình ảnh, có lẽ nên sử dụng "thay đổi bảng ... thay đổi cột ... đặt bộ nhớ ngoài" để buộc lưu trữ ngoài dòng tất cả thời gian và tắt tính năng nén. – araqnid
Hm, điều đó lạ vì chúng tôi sử dụng postgres và tôi gặp vấn đề với việc khóa bảng khi thay đổi bảng và sao lưu nó. – jishi
- 1. Tải hình ảnh lên trong ASP.NET MVC
- 2. ASP.NET MVC - Tải hình ảnh lên Amazon S3
- 3. ASP.NET MVC4 WebSecurity - DB Storage Vị trí
- 4. ASP.NET MVC tải hình ảnh chậm qua khung MVC?
- 5. Tải lên tệp lớn lên asp.net MVC
- 6. Truy xuất vị trí hình ảnh trong Orchard CMS bằng cách sử dụng asp.net MVC
- 7. Mô hình ASP.net MVC View vs ViewData.Model?
- 8. Cách tải lên hình ảnh và hiển thị trên cùng một trang trong asp.net mvc 4
- 9. hình ảnh nhiều + lĩnh vực văn bản tải lên trong ASP.NET MVC
- 10. vim vị trí hình ảnh
- 11. Đang tải hình ảnh vào localStorage và đặt hình ảnh src thành vị trí đó
- 12. Tìm vị trí hình ảnh trên Excel
- 13. html5 Tải lên hình ảnh
- 14. Tải ảnh lên ứng dụng MVC 4
- 15. Tải lên và lưu trữ hình ảnh
- 16. ASP.NET MVC: Đúng vị trí cho một phần lượt xem?
- 17. Tải lên hàng loạt Facebook Ảnh iOS
- 18. hình ảnh Responsive vị trí trên hình ảnh
- 19. Vị trí bật lên Wpf
- 20. Nhận vị trí hình ảnh - camera PhoneGap
- 21. Đặt vị trí hình ảnh bằng iTextSharp
- 22. Spring MVC vs ASP.NET (MVC?)
- 23. ASP.NET MVC vs Spring MVC
- 24. Python Django vs ASP.NET MVC
- 25. Tải tệp lên cơ sở dữ liệu với ASP.NET MVC
- 26. Chỉ số tải lên chỉ số ASP.Net MVC
- 27. Asp.Net Webforms Vs Asp.Net WebSite (Dao cạo) Vs Asp.Net MVC
- 28. Vị trí ảnh nền
- 29. Tìm vị trí/Vị trí của JFrame trong cửa sổ
- 30. Tải hình ảnh lên đường ray
Bản sao có thể có của http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay – Cesar
Trên máy chủ CDN chuyên dụng? – Paco