2010-02-07 4 views
4

저는 사람들이 사진을 업로드하고 게시 할 수있는 블로그 플랫폼과 같은 PHP/mysql 웹 앱을 프로그래밍하고 있습니다.일반 이미지 저장 또는 mySQL blob?

이러한 이미지를 저장하는 가장 좋은 방법은 BLOB를 통해 MySQL의 테이블 폴더에 나에 저장, 무엇입니까? 내가 나를 쉽게 게시 된 사진을 다운로드 할 일을 지출하지 않고 다른 호스트/서버로 이동하고 새 서버에 업로드 할 가장 간단한 방법을 원하기 때문에

내가이를 부탁드립니다.

옵션 질문 : 전용 서버가 시작 블로깅 플랫폼에 대한 충분한가요?

감사

+0

stackoverflow에는 더 많거나 적은 중복이 있습니다. 데이터베이스에 더 이상적이지 않습니다. http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay 대부분 데이터베이스 밖이지만 데이터베이스에 저장하는 이유를 알려줄 수있는 것들이 있습니다. SQL Server의 FileStream 데이터 유형과 같은 행과는 다른 메커니즘이 데이터베이스 중간에 있습니다 (http://msdn.microsoft.com/en-us/library/bb933993.aspx 참조).이 토론은 영원히. – VolkerK

답변

5

데이터베이스에서. 그것이 데이터베이스에서 나왔을 때 웹 서버는 작업을 수행하고 클라이언트가 이미지를 캐시 할 수있게합니다. 데이터베이스 기반 동적 이미지를 사용하는 것은 더 복잡합니다. 또한 웹 서버가이를 처리 할 수있게하여 훨씬 더 나은 성능을 얻을 수 있습니다. 파일로 저장

1

가장 좋은 방법은 디렉토리에 이미지를 저장하고 데이터베이스 만 이미지 이름을 저장하는 것입니다. 데이터베이스가 큰 성장하지 않습니다보다 유지 보수가 될 것입니다 이런 식으로 ... 내 웹 응용 프로그램에서

0

에서, 나는 데이터베이스에서 바이너리 파일을 저장합니다. 구현은 더 복잡하지만 데이터베이스는 공간을 절약합니다.

0

는 :

  • 이 빠르다.

  • 당신은 데이터베이스를 액세스하지 않고 (다른 서버로 복사) 파일을 처리 할 수 ​​있습니다. 응용 프로그램의 영리한 디자인

, 당신은 심지어 이러한 이미지에 관한 데이터베이스 액세스를 방지 할 수 있습니다. 캐시 된 템플릿은 사진에 액세스하거나 영리한 파일 이름으로 액세스합니다. 당신은 정적 파일의 호스팅을 제공하는 경우

3

, 당신은 아마존 S3와 같은 CDN과 파일을 offsiting 고려할 수 있습니다. 구현은 더 많은 일이지만, (cdn 제공자를 변경하지 않는 한) 웹 호스트를 변경하면 파일 이동에 대해 걱정할 필요가 없습니다. 플러스 파일 액세스는 클라이언트에 현지화되며 대부분의 요청에 대해 웹 서버를 공격 할 필요가 없으므로 대역폭 사용량이 줄어 듭니다.

1

이미지 인 경우 데이터베이스. 성능은 특히 파일 이름과 함께 파일을 검색하고 업무용 응용 프로그램 및 일반 웹 사이트 (예 : youtube, gmail, microsoft.com이 아닌)의 성능보다 훨씬 중요한 데이터 무결성을 유지하는 경우 파일 시스템만큼 좋을 수 있습니다 등) 여기

이 주제에 대한 더 : 테스트하고 자신 조회가 http://sietch.net/ViewNewsItem.aspx?NewsItemID=124

것은 MySQL이 모양을 처리하는 방법입니다. SQL Server 나 Oracle의 경우 BLOB, 특히 특수 파일 스트림 및 bfile 유형에 대해 잘 수행하고 있다고 확신합니다. 나는 MySQL에 대한 경험이 없으며 몇 메가 바이트 이상의 방울을 처리 할 수 ​​있는지 정말로 모른다.

0

데이터베이스를 사용하지 마십시오. 파일 시스템을 사용하십시오. 나는이 같은 문제를 안고 두 접근법을 시도했고 모든 정직함에서 이진 데이터 저장소로 db를 사용하는 데 너무 많은 문제가있었습니다.

내가 대신하는 것은 업로드 된 모든 파일이 포함 된 폴더가 있으며 참조 된 데이터베이스와 업로드 된 파일과 관련된 개체가 아니라 '그대로있는 상태로 저장'하는 것입니다. 대신 파일 이름이 위의 파일의 해당 MD5 ​​(또는 SHA-1) 체크섬 - 중복 업로드를 상당히 제거하고 오버 헤드를 줄입니다. - require(); db에서 데이터를 덤프하는 것보다 효율적입니다.

관련 문제