ASP.NET MVC + NHibernate + Postres 스택을 사용하여 웹 응용 프로그램을 작성하고 있습니다. 업로드 된 이미지가 바이너리 블롭 (blob) 또는 파일 시스템 (및 db 만 참조)으로 데이터베이스에 저장되어야하는지 궁금합니다. db 저장소의 장점은 파일 시스템 복사 도구로 돌아 가지 않고도 모든 데이터를 쉽게 백업/복구 할 수 있다는 것입니다. 반면에 나는 파일 시스템 접근이 더 빠를 것이라고 생각한다. (특히 많은 동시 요청을 다룰 때 그렇다.) 당신의 제안은 무엇인가?ASP.NET MVC 이미지 업로드 저장소 위치 (db vs filesystem)
답변
이미지를 데이터베이스에 저장하여 모든 데이터를 중앙 집중식으로 백업 할 수 있도록합니다.하지만 외부에서 데이터를 캐시하여 큰 이미지에 대한 반복 요청이 버퍼 캐시를 스레 싱하지 않도록하십시오. 데이터베이스 제대로 완료되면, 시작한 후에 데이터베이스에서 로컬 이미지 캐시를 투명하게 채울 새로운 프론트 엔드 웹 서버를 가져올 수 있습니다.
이미지의 중앙 저장소를 사용하면 여러 웹 서버가있는 시스템의 이미지에 대해 최종 수정 및 ETag HTTP 응답 헤더를 보낼 때 유용합니다. 이러한 헤더는 촬영하지 않고 데이터베이스 내용으로 만들 수 있기 때문에 유용합니다. 로컬 캐시 개체에서.
특별히 PostgreSQL 구현 노트 : 이미지 데이터가 포함 된 열의 "저장 모드"를 "외부"로 설정할 수 있습니다. 이렇게하면 PostgreSQL이 이미지 데이터 압축을 중지합니다 (zlib을 사용하지 않습니다. 이미지 데이터를 보조 TOAST 테이블에 저장하도록하여 이미지 메타 데이터를 쿼리하는 경우 더 나은 성능을 제공합니다. 우리는 백업 데이터베이스에 원본의 스토리지를 사용하지만 웹 서버에 파일 시스템에 캐시 이미지를 축소 생성 된 ALTER TABLE 명령의 "SET의 저장"절, 예컨대 :
ALTER TABLE media.image ALTER COLUMN content SET STORAGE EXTERNAL
에 따라 다릅니다. 이미지에 직접 링크 할 수 있다는 가치를 지니고 있습니까? 아니면 항상 DB를 호출하기 위해 서버 측 리소스를 사용하고 이미지의 바이너리 데이터를 작성하고 싶습니까?
를 참조하십시오.
그러나 한 페이지가 일반적으로 페이지 뷰 당 여러 이미지 요청을 호출하기 때문에 큰로드가 발생하므로 가능하면 데이터베이스 왕복을 피하십시오.
blob을 데이터베이스에 저장하는 것에 대한 한 가지 메모는 엔티티/엔티티에 일대일 매핑을 사용하여 전용 테이블에 실제 BLOB 열을 저장하는 것이 좋습니다. 이렇게하면 백업을 쉽게하고 테이블을 쉽게 변경할 수 있습니다. 테이블이 커지면 변경 사항이 "영원히"완료되어 백업이 진행되는 동안에도 잠금이 큰 문제가됩니다.
바이너리 데이터가 필요하지 않는 한 해당 데이터를 선택하는 이미지 (바이너리 데이터 제외)에 대한 모든 정보가있는 경우 영향을받지 않습니다 (파일 시스템에 캐시되므로 거의 필요하지 않음).
그냥 내 두 센트.
다른 데이터베이스는 blob을 저장하는 다른 접근법을 가지고 있습니다. postgresql은 큰 bytea 값을 별도의 "toast"테이블에 자동으로 저장하므로이를 명시 적으로 수행 할 필요가 없습니다. – araqnid
사실, 이미지 데이터를 저장하기 위해서는 항상 "alter table ... alter column ... alter storage external"명령을 사용하여 항상 라인 외부에 저장하고 압축을 사용하지 않는 것이 좋습니다. – araqnid
흠, 그건 우리가 postgres를 사용하기 때문에 이상하네요. 그리고 테이블을 바꿔서 백업 할 때 테이블 잠금에 문제가 있습니다. – jishi
- 1. ASP.Net MVC 2 이미지 업로드
- 2. ASP.NET MVC - 이미지 업로드 실패
- 3. ASP.Net VS ASP.Net MVC
- 4. asp.net mvc fckeditor 업로드 이미지 오류
- 5. ASP.NET MVC : 이미지 업로드 유효성 확인
- 6. MVC 3 - 이미지 업로드 실패
- 7. boost :: filesystem :: create_directories(); 이상한 위치
- 8. ASP.NET MVC vs. ASP.NET 4.0
- 9. Asp.net MVC VS ASP.net WebForms?
- 10. ASP.Net + MVC + VS 2008
- 11. asp.net 이미지 업로드
- 12. asp.net mvc 좋은 저장소 패턴
- 13. ASP.NET 저장소 SQL에서 이미지 및 검색 : 이미지
- 14. ASP.NET (MVC, AJAX) 이미지 관리자
- 15. ASP.NET MVC - Ajax.BeginForm vs Ajax.ActionLink
- 16. Asp.net mvc db driven CheckboxList
- 17. ASP.NET MVC 2 논리를 배치 할 위치
- 18. ASP.NET 저장소 파일 업로드 SQL Server 테이블
- 19. 모의 자료가있는 모의 저장소 vs. 실제 저장소
- 20. 여러 파일 업로드 asp.net mvc
- 21. ASP.NET MVC 업로드 및 jQuery를
- 22. 업로드 파일 asp.net mvc 2
- 23. asp.net mvc 파일 업로드 ajax
- 24. ASP.NET MVC 다중 파일 업로드
- 25. django에서 이미지 업로드 양식 처리 : save() vs chunks() vs cleaned_data?
- 26. asp.net mvc C# 이미지 업로드 페이지가 충돌 함
- 27. ASP.Net 사용자 아바타 이미지 업로드
- 28. ASP.Net MVC 아키텍처 - ViewModels의 위치
- 29. 그래서 db 저장소 란 무엇입니까
- 30. MVC에서 이미지 업로드
중복 가능한 http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay – Cesar
특수 CDN 서버에 있으십니까? – Paco