2014-10-23 5 views
0

최상의 성능으로 MySQL 데이터베이스에 이미지를 저장하는 가장 좋은 방법은 무엇입니까? 사용을 LONGBLOB 유형 및 바이너리 내용을데이터베이스에 그림 저장하기

솔루션 B를 넣어 :

솔루션 A를 (큰 데이터베이스를 가정) URL을 호스팅에 파일을 저장하고 저장하는 방법을 미리

에서 VARCHAR 유형

감사합니다

답변

2

당신이 많은 이미지를 제공하기 위해 확장 할 필요가있는 시스템을 구축하는 경우 : DBMS의 이미지 내용을 성공시키는 엄청난 단점이있다.

웹 서버는 대형 공통 파일 저장 시스템 주위에 클러스터 될 수 있으며 이미지를 매우 효율적으로 제공 할 수 있습니다. 이러한 종류의 파일 서비스 아키텍처는 Apache, nginx 및 IIS와 같은 다양한 웹 서버 제품에 의해 고도로 최적화되었습니다.

그러나 이미지를 데이터베이스 BLOB에 넣으면 데이터베이스에서 이미지를 가져 오는 것이 병목이됩니다. 또한 각 이미지를 제공하기 위해 실행할 스크립트 (PHP, .net 등)가 필요합니다.

거의 모든 제작 웹 사이트는 파일에서 직접 이미지를 제공합니다. DBMS에 파일 저장소의 위치를 ​​저장 한 다음 보내는 HTML 페이지의 URL로 변환 할 수 있습니다. imgloc 열이 u/10234/abcde.img를 포함하고 테이블도 폭과 높이가 열이있는 경우

예를 들어, 웹 응용 프로그램은 다음 클라이언트가 콘텐츠 저장소에서 이미지를 가져옵니다

<img src="/content/u/10234/abcde.img" width="300" height="200"> 

뭔가를 방출 할 수있다.

+0

고맙습니다. – oscarvady

2

URL을 저장하는 대신 "image1.png"와 같은 이미지 이름을 저장하고 서버에 이미지를 호스팅하는 것이 좋습니다. DB 크기와 호출 시간을 줄이는 데 도움이됩니다. 그런 다음 프로그래밍 방식으로 url 경로 앞에 접두어를 붙입니다.

이미지 위치가 변경 될 경우를 대비하여 파일 이름을 저장하는 것이 좋습니다. 그런 식으로 전체 테이블을 업데이트하는 것에 대해 걱정할 필요가 없으며 URL 경로를 사용하여 한 줄의 코드 만 수정할 수 있습니다.

2

데이터베이스에 삽입하는 경향이 있습니다. 그렇게하면 DB의 백업을 할 때 모두 함께 패키지됩니다. 서버를 옮긴다면 파일 시스템에서 파일을 옮기는 것에 대해 걱정할 필요가 없습니다.

대용량 파일 (GB)에 대한 이야기가 아니라면 파일 시스템 대 db 성능과의 차이점을 많이 볼 수 있을지 의심 스럽습니다.

어느 쪽이든 당신을 위해 일하게 될 것입니다, 단지 취향의 문제와 귀하의 특정 상황에 가장 적합한 것은 무엇입니까.

SO 및 인터넷에 대한 많은 답변이 이미 있습니다.
Storing Images in DB - Yea or Nay?

관련 문제