2014-04-20 4 views
0

사용자가 엄청난 수의 이미지를 업로드하고 해당 이미지 웹 페이지를 표시해야하는 응용 프로그램에서 작업 중입니다.웹 응용 프로그램의 이미지

이미지를 저장하고 검색하는 가장 좋은 방법은 무엇입니까?

1) 데이터베이스 2) 파일 시스템 3) CDN 4) JCR 또는 뭔가 다른

무엇 내가 아는 것은 데이터베이스 : 저장하고 데이터베이스에 쿼리의 많은으로 이어질 것입니다 데이터베이스에서 이미지를 검색하고 의지 blob을 매번 파일로 변환하십시오. 나는 그것이 웹 사이트 성능을 저하시킬 것이라고 생각한다.

FileSystem : 파일 시스템의 이미지 파일과 데이터베이스에 이미지 정보를 유지하면 동기화 문제가 발생한다. 마치 데이터베이스의 백업을 가져온 것처럼 우리는 이미지 폴더의 백업을 가져 왔습니다. 수백만 개의 파일이있는 경우 그리고 난 또 다른 옵션은 CDN 서비스는 http://akashkava.com/blog/127/huge-file-storage-in-database-instead-of-file-system/

여기를 읽어 서버 자원을 많이 소비하고 JCR 것

최선의 선택

감사를 제안하십시오

답변

0

CDN 서비스 당신을위한 좋은 선택이 될 수 있습니다.

데이터베이스의 이미지 정보와 함께 이미지에 대한 링크를 저장할 수 있습니다.

1

파일 시스템을 사용하는 것은 하나의 서버 (즉,로드 밸런서 뒤에 여러 대)에 배포하려는 경우 또는 모든 서버가 공유 파일 시스템에 액세스 할 수있는 경우에만 실제로 옵션입니다. 또한 자주 액세스하는 파일을 응용 프로그램 서버에 캐시하지 않는 한 비효율적 일 수 있습니다.

데이터베이스에 실제 바이너리 데이터를 저장하는 것이 과장되었을 가능성이 있으며 데이터베이스가 가장 잘하는 것은 아닙니다.

나는 조합을 건의 할 것

:

  • CDN을 바탕으로 (예 : AWS CloudFront를 등) 공개적으로 액세스 (그러나 결정적으로 공개적으로 읽기 전용) 아마존 S3와 같은 스토리지는 이미지 있음을 의미 브라우징 사용자가 브라우저에 적절히 캐시되고 캐시되므로 (대역폭을 최소화하는 경우) 효율적으로 제공됩니다. S3 (또는 유사)는 모든 서버 (및 외부 세계)가 액세스하는 방법에 대해 걱정할 필요없이 애플리케이션 서버에서 업로드 및 관리 할 수있는 API를 보유하고 있음을 의미합니다.
  • 그러나 데이터베이스의 각 이미지에 대한 메타 데이터를 보유하고있는 것이 좋습니다. 즉, 각 이미지에 고유 키 (데이터베이스에 의해 생성됨)를 할당하고 추가 정보 (파일 형식, 크기, 태그, 작성자 등)를 추가하고 CDN을 통해 S3 (또는 유사)에 대한 경로를 공개적으로 액세스 할 수있는 이미지 경로.

데이터베이스와 공유 된 공용 액세스 가능 스토리지의 조합은 두 가지 모두에서 최상의 결과를 제공하는 훌륭한 조합입니다. 또한 데이터베이스는 미래에 이미지를 이동/변경하거나 일괄 삭제해야하는 경우 (계정을 삭제하는 작성자가 업로드 한 모든 이미지를 삭제 한 경우) 효율적으로 데이터베이스 쿼리를 수행하여 메타 데이터를 수집 한 다음 업데이트/변경 데이터베이스에 존재하는 S3 위치에 저장된 이미지.

웹 페이지에 이미지를 표시하려고한다고 가정 해보십시오. 이 조합은 응용 프로그램 서버가 표시하려는 이미지 선택 (작성자, 페이지 매김 등의 제한 포함)에 대해 데이터베이스를 효율적으로 쿼리 한 다음 올바른 CDN 경로를 참조하는 이미지가 포함 된보기를 생성 할 수 있음을 의미합니다. 동적 콘텐츠 (이미지가 표시된 페이지)와 정적 콘텐츠 (CDN을 통해 이미지 자체)를 결합 할 때 이미지를 보는 것도 매우 효율적이라는 것을 의미합니다.

관련 문제