문제

나는 이와 관련하여 어떤 게시물을 읽었지만 여전히 내 경우에는 가장 좋은 해결책이 무엇인지 이해하지 못합니다.

나는 새로운 WebApp을 쓰기 시작하고 백엔드가 제공 할 것입니다. 1-10 백만 이미지. (평균 크기 200-500KB 단일 이미지의 경우)

내 사이트는 컨텐츠와 이미지를 제공합니다 100-1000 명의 사용자 동시에.

또한 제공자 비용을 최대한 낮게 유지하고 싶습니다 (그러나 이것은 보조 요구 사항입니다). DB 크기의 비용과 비교할 때 파일 시스템 공간이 저렴하다고 생각합니다.

개인적으로 나는 DB에 내 모든 이미지를 가지고 있다는 아이디어를 좋아하지만 제안은 정말 감사 할 것입니다 :)

제 경우에는 DB 접근 방식이 올바른 선택이라고 생각하십니까?

도움이 되었습니까?

해결책

이러한 이미지를 데이터베이스에 넣으면 매우 커질 것입니다. 즉, DB 엔진이 대신 핫 애플리케이션 데이터를 캐싱 할 수있는 모든 이미지 (실제로 설계되지 않은 작업)를 캐싱하는 것이 바쁘다는 것을 의미합니다.

파일을 OS 및/또는 리버스 프록시로 캐싱하는 파일을 남겨 두십시오. 더 나을 것입니다.

다른 팁

파일 시스템에 이미지를 저장 해야하는 다른 이유 :

  • 이미지 서버는 데이터베이스가 바쁘거나 다운 된 경우에도 실행될 수 있습니다.
  • 파일 시스템이 만들어집니다 파일을 저장하십시오 그리고 그것에 상당히 효율적입니다.
  • 데이터베이스에 데이터를 덤프하면 백업 및 기타 작업이 느려집니다.
  • 이미지를 제공하기 위해 서버 측 코드가 필요하지 않습니다.
  • Dirt-Cheap 웹 서버로 더 빨리 확장하거나 잠재적으로 CDN으로 확장 할 수 있습니다.
  • 데이터베이스를 포함하지 않고 관련 작업 (썸네일 등 생성)을 수행 할 수 있습니다.
  • 데이터베이스 서버는 메모리에 더 많은 "실제"테이블 데이터를 유지할 수 있으며, 이곳에서 쿼리의 데이터베이스 속도를 얻을 수 있습니다. 귀중한 메모리를 사용하여 이미지 파일을 캐시 유지하는 경우, 메모리에 더 많은 사진 인덱스를 갖는 것보다 빠른 속도로 구매하지는 않습니다.

대부분의 대형 사이트는 파일 시스템을 사용합니다.

보다 웹 앱의 파일 또는 데이터베이스에 사진을 저장 하시겠습니까?

이진 객체를 다룰 때는 아키텍처에 대한 문서 중심 접근 방식을 따르고 데이터베이스에 PDF 및 이미지와 같은 문서를 저장하지 않으면 데이터베이스의 모든 종류의 성능 문제를보기 시작할 때 결국 리팩터링해야합니다. 파일 시스템에 파일을 저장하고 데이터베르 테이블 안에 경로를 보관하십시오. 데이터베이스에 직렬화하고 저장하는 데 사용할 데이터 유형의 크기에 대한 물리적 제한도 있습니다. 파일 시스템에 저장하고 액세스하기 만하면됩니다.

첫 번째 문장에 따르면 주제에 대한 게시물을 읽었 으므로이 정보를 다루는 기사에 대한 링크를 귀찮게하지 않을 것입니다. 내 경험과 이미지의 이미지와 크기 수에 이르기까지 게시 한 내용을 기반으로 DB에 저장하면 DB 성능에 대비하여 지불하게됩니다. 파일 시스템에 저장했습니다.

어떤 데이터베이스를 사용하고 있습니까? MS SQL Server 2008은 FILESTREAM 스토리지를 제공합니다

SQL Server 2008과 NTFS 파일 시스템의 조합을 사용하여 Blob 데이터를 저장하고 효율적으로 액세스 할 수 있습니다. Blob Storage 용 선택, Filestream 데이터를 사용하기위한 Windows 및 SQL Server 구성, Filestream과 다른 기능을 결합하기위한 고려 사항 및 파티션 및 성능과 같은 구현 세부 사항을 다룹니다.

세부

우리는 이미징에 최적화 된 서버 인 Filenet을 사용합니다. 매우 비쌉니다. 더 저렴한 솔루션은 파일 서버를 사용하는 것입니다.

데이터베이스 서버에 큰 파일을 저장하는 것을 고려하지 마십시오.

다른 사람들이 언급했듯이 데이터베이스의 큰 파일에 대한 참조를 저장하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top