[asp.net] 사진을 파일로 저장하거나 웹 앱용 데이터베이스에 저장 하시겠습니까?

내 질문은 상당히 일반적이며 100 % 답변이 없을 수도 있다는 것을 알고 있습니다. 많은 사진과 많은 양의 트래픽을 포함하는 ASP .NET 웹 솔루션을 구축 중입니다. 나는 정말로 성과를 얻고 싶다.

그림을 데이터베이스 나 파일 시스템에 저장해야합니까? 그리고 대답에 관계없이 나는 왜 특정 방법을 선택하는지에 더 관심이 있습니다.

감사합니다, 스테판

DUPLICATE : DB에 이미지 저장-그래, 아니? , 어떻게 파일 시스템에 이미지를 저장 , 이미지의 작은 숫자를 저장 : BLOB 또는 FS를? 그리고 아마 다른 것.


댓글 : 좋은 답변을 많이 주셔서 감사합니다. 100 % 데이터베이스 기반 솔루션이 마음에 들더라도 파일 기반 솔루션을 선택하겠습니다. 오늘날 데이터베이스 등으로 내가 원하는 것을 할 수있는 좋은 해결책이있는 것 같지만 그렇게하지 않는 데에는 몇 가지 이유가 있습니다.

  • 나는 호스팅 솔루션을 사용할 것이며 엄청난 양의 스토리지 (10GB)가 있지만 데이터베이스 용으로 300MB 만 있습니다. DB에 추가 스토리지 비용이 많이 듭니다.

  • 나는 DB 전문가가 아니며 DB 설정을 제어하지도 않습니다. DB 기반 솔루션은 모양대로 사용자 지정 구성이 필요할 수 있습니다.

자체 서버에서 사이트를 운영하려면 DB 기반 솔루션을 고려할 수 있습니다. 고마워, 스테판



답변

파일 시스템에 사진을 저장하고 데이터베이스에 사진 위치를 저장합니다.

왜? 때문에…

  1. 사진을 정적 파일로 제공 할 수 있습니다.
  2. 사진을 가져 오는 데 데이터베이스 액세스 또는 애플리케이션 코드가 필요하지 않습니다.
  3. 성능을 향상시키기 위해 다른 서버에서 이미지를 제공 할 수 있습니다.
  4. 데이터베이스 병목 현상을 줄입니다.
  5. 데이터베이스는 궁극적으로 데이터를 파일 시스템에 저장합니다.
  6. 이미지는 파일 시스템에 저장 될 때 쉽게 캐시 될 수 있습니다.

답변

최근에 개발 한 프로젝트에서 이미지 (및 모든 종류의 이진 문서)를 데이터베이스 테이블의 이미지 열로 저장했습니다.

데이터베이스에 파일을 저장하는 것의 장점은 데이터베이스 (= 메타 데이터)와 하드 디스크 (= 파일 스토리지) 간의 동기화가 내장되어 있지 않기 때문에 레코드가 삭제 되어도 하드 디스크에 참조되지 않은 파일로 끝나지 않는다는 것입니다. 수동으로 프로그래밍해야합니다.

오늘날의 기술을 사용하여 이미지를 SQL Server 2008 FILESTREAM 열 (적어도 다음 프로젝트에서 수행 할 작업)에 저장하는 것이 좋습니다.이 열은 데이터베이스에 데이터를 저장하고 별도의 파일에 대용량 바이너리를 갖는 이점을 결합하기 때문입니다 ( 최소한 광고에 따라;))


답변

격언은 항상 “파일 시스템의 파일, 데이터베이스의 파일 메타 데이터”였습니다.


답변

파일을 파일로 저장하는 것이 좋습니다. 다른 데이터베이스는 Blob 데이터를 다르게 처리하므로 백엔드를 마이그레이션해야하는 경우 문제가 발생할 수 있습니다.

impages를 제공 할 때 서버에 이미 존재하는 파일에 <img src =를 제공하는 것이 데이터베이스 필드에서 임시 파일을 만들고 <img 태그를 가리키는 것보다 빠를 것입니다.

이 답변은 귀하의 질문을 인터넷 검색하고 http://databases.aspfaq.com/database/should-i-store-images-in-the-database-or-the-filesystem.html 에서 의견을 읽음으로써 찾았습니다.


답변

나는 일반적으로 다음과 같은 이유로 데이터베이스에 이진 파일을 갖고 싶습니다.

  • 데이터 무결성 : 참조되지 않은 파일 없음, 연결된 파일없이 db에 경로 없음
  • 데이터 일관성 : 데이터베이스 덤프를 취하면 그게 다입니다. 아니오 “이 데이터 디렉토리를 targz하는 것을 잊었습니다.”

답변

데이터베이스에 이미지를 저장하면 단일 이미지를 제공하기위한 DB 오버 헤드가 추가되고 해당 수준으로 성장할 경우 대체 스토리지 (S3, Akami)로 오프로드하기가 어렵습니다. 데이터베이스에 저장하면 지금 이동해야하는 DB 일 뿐이므로 앱을 다른 서버로 훨씬 쉽게 이동할 수 있습니다.

디스크에 이미지를 저장하면 대체 저장소로 쉽게 오프로드하고 이미지를 정적 요소로 만들어 이미지를 캐시 할 수 있도록 웹 앱에서 HTTP 헤더를 엉망으로 만들 필요가 없습니다. 단점은 앱을 다른 서버로 이동하는 경우 이미지도 이동하는 것을 기억해야한다는 것입니다. 쉽게 잊혀지는 것.


답변

웹 기반 응용 프로그램의 경우 이미지를 저장하는 데 파일 시스템을 사용하면 성능이 향상됩니다. 이렇게하면 애플리케이션 내의 여러 수준에서 이미지 캐싱을 쉽게 구현할 수 있습니다. 이미지를 데이터베이스에 저장하면 몇 가지 이점이 있지만 대부분의 경우 이러한 이점은 클라이언트 기반 응용 프로그램과 함께 제공됩니다.