웹 앱의 사진을 파일 또는 데이터베이스에 저장 하시겠습니까?
내 질문은 일반적이며 100 % 답변이 없을 수도 있습니다. 많은 그림과 많은 양의 트래픽이 ASP .NET 웹 솔루션을 만들고 있습니다. 정말 성능을 달성하고 싶습니다.
그림을 데이터베이스 나 파일 시스템에 저장해야합니까? 그리고 대답에 관계없이 특정 방법을 선택하는 이유에 더 관심이 있습니다.
많은 감사합니다, Stefan
두들 : DB에 이미지 저장-그래? , 어떻게 파일 시스템에 이미지를 저장 , 이미지의 작은 숫자를 저장 : BLOB 또는 FS를? 아마 다른 사람들도있을 것입니다.
의견 : 많은 좋은 답변에 감사드립니다. 100 % 데이터베이스 기반 솔루션이라는 아이디어가 마음에 드 파일 기반 솔루션을 사용합니다. 오늘 데이터베이스 등으로 원하는 것을 수행하는 좋은 솔루션이있는 것 같지만 수행하지 않는 몇 가지 이유가 있습니다.
호스팅 된 솔루션을 사용할 것입니다. 엄청난 양의 스토리지 (10GB)가 300MB 만 있습니다. DB의 추가 스토리지 비용이 많이 듭니다.
저는 DB 전문가가 DB 설정을 제어하지 않습니다. DB 기반 솔루션은 다음과 같이 사용자 정의 구성이 필요합니다.
자체 서버에서 사이트를 실행하기로한다면 DB 기반 솔루션을 고려할 수 있습니다. 고마워, 스테판
그림을 파일 시스템에 저장하고 그림 위치를 데이터베이스에 저장하십시오.
왜? 때문에 ...
- 사진을 정적 파일로 제공 할 수 있습니다.
- 그림을 가져 오기 위해 데이터베이스 액세스 또는 애플리케이션 코드가 필요하지 않습니다.
- 성능을 향상시키기 위해 다른 서버에서 이미지를 제공 할 수 있습니다.
- 병목 현상이 기록 데이터베이스.
- 데이터베이스는 데이터베이스는 데이터를 파일 시스템에 저장합니다.
- 파일 시스템에 저장하면 이미지를 쉽게 캐시 할 수 있습니다.
최근에 개발 한 프로젝트에서 이미지 (및 모든 종류의 이진 문서)를 데이터베이스 테이블에 이미지 열로 저장했습니다.
데이터베이스에 파일을 저장하면 데이터베이스 (= 메타 데이터)와 하드 디스크 (= 파일 저장소) 동기화가 내장되어 있지 않기 때문에 레코드가 삭제 디스크에서 참조되지 않은 파일로 끝나지 않는다는 것이 있습니다. 수동으로 프로그래밍해야합니다.
오늘의 기술을 사용하여 데이터베이스에 데이터를 저장하고 별도의 파일에 큰 이진을 활용하여 결합 이미지를 SQL Server 2008 FILESTREAM 열에 저장하는 것이 좋습니다 (적어도 다음 프로젝트에서 할 일입니다). 최소한 광고에 따르면;))
adage는 항상 "파일 시스템의 파일, 데이터베이스의 파일 메타 데이터"였습니다.
파일을 파일로 저장하는 것이 좋습니다. 다른 데이터베이스는 Blob 데이터를 다르게 처리하는 경우 백엔드를 마이그레이션하는 경우에 보관할 수 있습니다.
impages를 제공 할 때 서버에 이미 존재하는 파일에 대한 <img src =는 데이터베이스 필드에서 임시 파일을 생성합니다.
귀하의 질문을 인터넷 검색하고 http://databases.aspfaq.com/database/should-i-store-images-in-the-database-or-the-filesystem.html 에서 의견을 읽음에서 답변을 찾았습니다.
나는 보통 데이터베이스에 이진 파일을 갖고 싶어합니다.
- 데이터 무결성 : 참조되지 않은 파일 없음, 관련 파일이없는 db의 경로 없음
- 데이터 일관성 : 데이터베이스 보존을 가져옵니다. 아니요 "O i이 데이터 디렉토리를 targz하는 것을 잊었습니다."
데이터베이스에 이미지를 저장하면 단일 이미지를 제공하기위한 DB 오버 헤드가 추가되고 해당 레벨로 증가하면 대체 스토리지 (S3, Akami)로 오프로드하기 어렵습니다. 데이터베이스에 저장하면 현재 이동해야하는 DB뿐 아니라 다양한 서버로 쉽게 옮길 수 있습니다.
대체 저장소로 쉽게 오프로드하고 이미지를 정적 요소로 만들 수 디스크이므로 이미지를 캐시 가능하게 만들기 웹 앱의 HTTP 헤더를 망칠가 없습니다. 단점은 앱을 다른 서버로 옮길 경우 이미지도 이동해야 점입니다. 쉽게 잊혀진 것.
웹 기반 응용 프로그램의 경우 이미지 저장을 위해 파일 시스템을 사용하여 성능을 향상시킬 수 있습니다. 그렇게하면 응용 프로그램 내에서 여러 수준으로 이미지 캐싱을 쉽게 구현할 수 있습니다. 데이터베이스에 이미지를 저장하면 몇 가지 클라이언트 기반 응용 프로그램과 함께 제공됩니다.
지금까지 이미 좋은 답변에 더 추가하십시오. 당신은 여전히 웹 사이트에서 모든 캐싱의 혜택을받을 수 있을지도 모릅니다. 당신이 데이터베이스에 당신에게 이미지를 유지하는 경로를 이동하는 경우 데이터베이스 수준.
데이터와 관련하여 이미지를 저장하는 방법과 데이터베이스에 데이터베이스 쿼리를 캐시 할 수 있도록 이미지에 특정 쿼리에 액세스 할 수 있는지 여부를 통해 해당 부분을 달성 할 수 있습니다.
웹 쪽에서는 asp.net으로 태그가 지정되어 있기 때문에 http를 사용하여 이미지를 제공하는 경로로 이동합니다. 그런 다음 프레임 워크의 모든 이점을 마음대로 사용할 수 있으며 이미지의 키를 http로 전달하기 만하면 도메인 논리를 더 명확하게 선택할 수 있습니다.
NoSql 데이터베이스를 선택하십시오.
@chburd가 언급했듯이 데이터 무결성을 제공합니다.
rdbms는 여전히 작게 유지됩니다.
- 다음은
Eclipse
이미지를 파일 시스템에 저장하고 메타 데이터를 DB에 보관하는 단계별 예제 (일반적인 접근 방식, Spring 구현 )입니다. http://www.devmanuals.com/tutorials/java/spring/spring3/mvc /Spring3MVCImageUpload.html - 여기 예도 있습니다 -http : //www.journaldev.com/2573/spring-mvc-file-upload-example-tutorial-single-and-multiple-files
- 또한이 프로젝트의 코드베이스 ( https://github.com/jdmr/fileUpload)를 조사 할 수 있습니다 . 이 컨트롤러에 주의 하십시오 .
참고 URL : https://stackoverflow.com/questions/561447/store-pictures-as-files-or-in-the-database-for-a-web-app
'IT' 카테고리의 다른 글
LINQ 란 무엇이며 어떤 역할을하고 있습니까? (0) | 2020.07.16 |
---|---|
Eclipse에서 TODO / FIXME / XXX 작업 태그를 어떻게 활성화합니까? (0) | 2020.07.16 |
Lua 배열 (테이블)이 0이 아닌 1에서 시작하는 이유는 무엇입니까? (0) | 2020.07.16 |
프로젝트 기능> Eclipse에서 정리 (0) | 2020.07.16 |
Rails 3.1 : 엔진과 가능한 가능한 앱 (0) | 2020.07.16 |