1

현재 기사 당 많은 그림을 저장해야하는 CMS 시스템을 구축하고 있습니다. 나는 많은 질문을 가지고있다 :-)CMS - 데이터베이스에 그림 저장, 적절한 구조는 무엇입니까?

워터 마크가 있거나없는 몇 가지 크기의 그림을 보여줄 필요가있다. 또한 아카이브 및 관리 목적으로 원본 사진이 있어야합니다. 지금 당장 생각한 것은 두 가지 버전으로 데이터베이스에 그림을 저장하는 것입니다. 1. 원본 그림, 2. 웹 최적화 버전.

  1. 테이블의 모든 이미지를 저장하는 것은 매우 편리한 방법입니다. 하지만 정말 좋은 생각입니까? 데이터베이스가 수천 개의 그림을 포함한다고 가정 해 보겠습니다. 원본 그림의 크기는 약 3MB입니다. 그래서 DB는 쉽게 100TB 크기가 될 수 있습니다 .... 이것은 정말 좋은 전략입니까?

  2. 반면에 나는 각 그림에 더 작은 버전을 저장합니다. 이 버전은 워터 마크가 있거나없는 몇 가지 크기로 표시되어야합니다. 현재 나는 각 요청에 대해 이것을 생각한다고 생각합니다. 요청에는 매개 변수 너비가 있으며, 이에 따라 크기와 워터 마크를 결정할 수 있습니다. (물론 나는이 작업을 캐싱 할 것이다). 다시 말하지만, 이것은 좋은 전략입니까? 정말 일하니, 아니면 아주 비싼 여분의 일 이니?

  3. 정말 DB에 저장하는 것이 더 좋습니까? 나는 기사에 대한 각각의 요청이 약 50 건의 이미지 요청을 필요로하며, 각 요청은 데이터베이스에 대한 열기/닫기 연결이 필요하다는 것을 의미합니다.

기술 : .net, sql-server 2008, Hibernate.

답변

3

가장 좋은 방법은 해당 이미지를 파일 시스템에 저장하고 데이터베이스의 ID를 데이터베이스에 저장하는 것입니다. 성능 및 유지 보수상의 이유로. 백업과 복원은 파일 시스템에서 훨씬 쉬울 것이고 그러한 작업을위한 DBMS를 푸는 것이 가장 좋은 생각은 아닙니다. db에서 응용 프로그램으로 파일을 전송 한 다음 클라이언트로 푸시해야합니다. 나는 그것이 그것이 직업이 아니라고 믿는다. 이미지 호스팅을 위해 lighttpd 데몬이나 다른 것을 넣고 그대로 두십시오.

그러나 생각이 맘에 들면 SQL Server 2008을 사용하고 있으므로 FILESTREAM을 사용하여 이미지를 테이블에 저장할 수 있습니다. 결국, 저장소 위치에 파일을 생성하여 파일 시스템에 이진 데이터를 저장하고 저장하며 트랜잭션 기능과 데이터 무결성을 제공합니다. 이는 큰 보너스입니다. 해당 옵션을 살펴보십시오. 기억 하듯이, 그 성능은 좋으며 실제 데이터베이스는 매우 작습니다.

동적 크기 조정에 대해서는이를 피합니다. 스토리지는 CPU 시간보다 저렴하며 업로드 시간에 다양한 미리보기 이미지와 워터 마크 버전을 생성 한 다음 어딘가에 저장 한 다음 필요할 때만 사용할 수 있습니다. 동일한 작업을 반복해서 수행하지 마십시오. 처음으로 크기 조정 된 버전을 요청할 때 이렇게하면 새 버전을 추가하거나 주기적으로 캐시를 제거하여 사용하지 않는 파일을 쉽게 제거 할 수 있습니다. 원본 버전 만 백업 할 수도 있습니다.

2

이미지를 데이터베이스에 저장하는 데는 몇 가지 장점이 있습니다. ACID tanscations 및 백업 일관성이 떠오릅니다. 절대적으로 필요하다면 이미지를 데이터베이스에 저장하십시오. 당신이 지적했듯이, 이것은 가격으로 제공됩니다 : 기계, 라이센스, 운영 팀과 같은 거대한 데이터베이스 인프라가 필요합니다. 각 이미지 검색은 거대한 DB I/O 노력입니다.

DB에 메타 데이터를 저장하고 이미지 모양을 파일 시스템에 두는 것만으로 훨씬 쉽습니다.필요 (절대적으로 "내가 그이없는 경우, 모든 일이 전혀 작동하지 않습니다"처럼)

  • 킬러 기능은 절대적으로 무엇 :

    두 가지 접근 방식은 decison에 와서 이미지 - 인 - 데이터베이스 접근법에서? 있을 경우

  • 프로젝트 인력, 인프라, 기계, 라이센스, 작업) 및 데이터베이스의 이미지 접근 방식의 총 비용을 계산하고 비즈니스 성과를 계산하고 이를 이미지 - 인 - 파일 시스템 접근 방식과 비교해보십시오. 그러면 진행 방법에 대한 힌트를 얻을 수 있습니다.

관련 문제