programing

웹 앱용 MSSQL과 같은 데이터베이스에 사진을 파일로 저장합니까?

testmans 2023. 5. 20. 10:30
반응형

웹 앱용 MSSQL과 같은 데이터베이스에 사진을 파일로 저장합니까?

저는 ASP.NET 웹 솔루션을 구축하고 있습니다. 이 솔루션에는 많은 사진과 상당한 양의 트래픽이 포함됩니다.저는 정말로 성과를 내고 싶습니다.

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

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

왜요? 왜냐면...

  1. 사진을 정적 파일로 제공할 수 있습니다.
  2. 사진을 가져오는 데 데이터베이스 액세스 또는 응용 프로그램 코드가 필요하지 않습니다.
  3. 다른 서버에서 이미지를 제공하여 성능을 향상시킬 수 있습니다.
  4. 데이터베이스 병목 현상을 줄일 수 있습니다.
  5. 데이터베이스는 최종적으로 데이터를 파일 시스템에 저장합니다.
  6. 파일 시스템에 저장하면 이미지를 쉽게 캐시할 수 있습니다.

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

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

오늘날의 기술을 사용하여 SQL Server 2008 FILESTREAM 열에 이미지를 저장하는 것이 좋습니다(적어도 다음 프로젝트에서는 그렇게 할 예정입니다). 데이터베이스에 데이터를 저장하고 별도의 파일에 대용량 이진 파일을 저장하는 이점이 결합되어 있기 때문입니다(최소한 광고에 따라).

이 용어는 항상 "파일 시스템에 있는 파일, 데이터베이스에 있는 파일 메타데이터"였습니다.

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

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

저는 당신의 질문을 구글링하고 http://databases.aspfaq.com/database/should-i-store-images-in-the-database-or-the-filesystem.html 의 댓글을 읽어서 이 답을 찾았습니다.

저는 보통 데이터베이스에 이진 파일이 있는 것을 좋아합니다. 왜냐하면 :

  • 데이터 무결성: 참조되지 않은 파일 없음, 연결된 파일이 없는 DB의 경로 없음
  • 데이터 일관성: 데이터베이스 덤프만 있으면 됩니다. 아니요. "이 데이터 디렉토리에 대상을 지정하는 것을 잊었습니다."

데이터베이스에 이미지를 저장하면 단일 이미지를 처리하는 데 DB 오버헤드가 추가되고 해당 수준으로 확장할 경우 대체 스토리지(S3, Akami)로 오프로드하기가 어렵습니다.데이터베이스에 저장하면 DB만 이동하면 되므로 앱을 다른 서버로 이동하는 것이 훨씬 쉬워집니다.

디스크에 이미지를 저장하면 다른 스토리지로 쉽게 오프로드할 수 있고, 이미지를 정적 요소로 만들어 웹 앱에서 HTTP 헤더를 사용하여 이미지를 캐시 가능하게 만들 수 있습니다.단점은 앱을 다른 서버로 이동하는 경우 이미지도 이동해야 한다는 것입니다. 이는 쉽게 잊혀지는 것입니다.

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

지금까지 이미 좋은 답변들에 몇 가지를 더 추가하기 위해서입니다.데이터베이스에 이미지를 보관하는 경로로 이동하면 웹 레벨과 데이터베이스 레벨 모두에서 캐싱의 이점을 얻을 수 있습니다.

데이터베이스의 경우, 관련된 텍스트 데이터와 관련하여 이미지를 저장하는 방법과 데이터베이스가 쿼리를 캐시할 수 있도록 특정 쿼리에 이미지에 액세스할 수 있다면 이를 달성할 수 있다고 생각합니다(단, 이론상으로는 그렇게 생각하지만 그 부분에 대해서는 자유롭게 나를 핵으로 만들 수 있습니다).

웹 쪽에서는 질문에 asp.net 이 태그되어 있으므로 이미지를 제공하기 위해 http 핸들러를 사용하는 경로를 밟을 것이라고 생각합니다.그러면 프레임워크의 모든 이점을 자유롭게 사용할 수 있으며 이미지에 대한 키를 http 핸들러에 전달하기만 하면 도메인 논리를 더 깨끗하게 유지할 수 있습니다.

  1. 다음은 단계별 예입니다(일반 접근법, Spring 구현,Eclipse) 이미지를 파일 시스템에 저장하고 메타데이터를 DB에 저장합니다. -- http://www.devmanuals.com/tutorials/java/spring/spring3/mvc/Spring3MVCImageUpload.html
  2. 여기에도 예가 있습니다 -- http://www.journaldev.com/2573/spring-mvc-file-upload-example-tutorial-single-and-multiple-files .
  3. 또한 이 프로젝트의 코드베이스를 조사할 수 있습니다. https://github.com/jdmr/fileUpload . 이 컨트롤러에 주목하십시오.

언급URL : https://stackoverflow.com/questions/561447/store-pictures-as-files-or-in-the-database-like-mssql-for-a-web-app

반응형