문제

추가하는 일부 기능이 내 사이트에는 사용자가 업로드할 수 있는 자신의 프로필,사진,그래서 내가 궁금해하는 여부에 대한 데이터베이스에 저장할로 BLOB,거나 그들에게 파일 시스템입니다.

내가 찾는 질문에 이와 비슷한 여기: 이미지를 저장하기 DB:이 옳은지 아닌지, 지만,응답을 주었어 더 많은 사람들을 향해 많은 기대 또는 수천 수백만 명의 이미지하는 반면,나는 자세한 우려에 대한 작은 이미지(Jpeg 파일까지 어쩌면 150x150 픽셀),고 작은 숫자들:아마도 하나 또는 두 개의 천.

무엇인가에 대한 감정을 DB BLOB 대 파일시스템에 대한 이 시나리오? 어떻게 클라이언트로 이동을 가진 캐싱에서 이미지 DB 대 파일시스템에서?

면 덩에 저장된 DB 이동하는 방법-가에 대해 알아야 할 저장할?이후 나는 상상 대부분의 내용되지 않습 업로드한 사진을 만들어야 하는 user_pics 테이블의(외부)가 일정 users 테이블이 필요합니까?


편집:내가 다 이 질문하기 때문에,그것은 중복의 두 가지 당신을 연결을 시도합니다.이 질문에 대해 구체적으로 장점/단점을 사용하여 DB 또는 FS 소수에 대한 이점 유의하여 주시기 바랍니다.위에서 말한 대로 다른 질문을 대상으로 필요한 사람들을 저장할 수천명의 큰 이미지입니다.

도움이 되었습니까?

해결책

답변 부속 질문의:

어떻게 클라이언트로 이동을 가진 캐싱에서 이미지 DB 대 파일시스템에서?

를 위한 데이터베이스:가 last_modified 필드에서 당신의 데이터베이스입니다.를 사용하여 마지막 수정하는 HTTP 헤더 그래서 클라이언트 브라우저 캐시할 수 있습니다.을 보내주십시오 적절한 응답을 때 브라우저는 요청에 대한 이미지는 경우에"새로운"(한 기억이 없어요 그것이 무엇이라고;어떤 HTTP 요청 헤더).

파일 시스템:같은 일을 하지만,파일의 수정된 시간입니다.

면 덩에 저장된 DB 이동하는 방법-가에 대해 알아야 할 곳에 저장할?이후 나는 상상 대부분의 내용되지 않습 업로드한 사진을 만들어야 하 user_pics 테이블의(외부)가 일반 사용자 경우 테이블이 필요합니까?

나 BLOB 와 관련된 메타데이터에서 자신의 테이블과 함께 몇 가지 종류의 사이의 관계 그리고 귀하의 사용자가이다.이렇게 쉽게 만들 것입을 최적화하는 테이블에 저장 방법에 대한 데이터를 만드는 일을 줄이고 잎은 객실에 대한 확장성(예:일반적으로"파일"table).

다른 팁

한때 PDF 파일에 대한 작은 DMS와 비슷한 질문에 직면했습니다. 시나리오는 귀하와 다릅니다. 최대의 최대는 최대 10MB의 크기를 가진 100 개의 파일 일 수 있습니다. 프로필 사진에 대해 기대하는 것이 아닙니다. 그러나 친구가 나에게 돌려 준 대답은 당신의 사건에도 적용됩니다.

각 스토리지 시스템을 사용하여 설계된 작업에 사용하십시오.

가게 데이터 안에 데이터 베이스. 가게 파일 안에 파일 시스템.

이것은 궁극적 인 대답 (*)이 아니라 스타터에게 좋은 경험 법칙입니다.

Aaron Digulla가 그의 대답에서 말하면서 Windows FS가 느리고 때로는 신뢰할 수없는 것에 대해 들어 본 적이 없습니다. 그러한 문제가 있다면, 이것은 확실히 고려되어야합니다. 그러나 아바타 그림의 경우, 그것은 나를 중요하게 만들지 않습니다.

(*) 알고 있는데, 42 ...

서빙의 관점에서, 서빙을 위해 코드를 작성하고, 백업 절차 등을 작성하는 것의 관점에서 더 편리한 것은 무엇입니까? 당신은 다른 사람의 정답이 아니라 당신을위한 정답을 원합니다.

내 관점에서 볼 때 데이터베이스 외부에 남을 수있는 것은 밖에 남아 있어야합니다. 매일 복제하거나 백업하지 않는 파일 시스템 또는 별도의 테이블 일 수 있습니다. 데이터베이스를 훨씬 가볍게 만들고 느리게 성장하며 이해하고 유지하기가 더 쉽습니다.

MSSQL에있는 경우 Blob이 별도의 데이터 파일에 저장되어 있는지 확인하십시오. 다른 모든 것과 같이 기본이 아닙니다.

Windows에서 데이터베이스에 최대한 많이 넣으십시오. 파일 시스템은 다소 느리고 때로는 신뢰할 수 없습니다.

Linux에는 더 많은 옵션이 있습니다. 여기에서는 큰 파일을 파일 시스템으로 옮기고 DB에 이름을 유지해야합니다. Ext3 또는 ReiseFS와 같은 최신 파일 시스템을 사용하는 경우 성능이 뛰어난 작은 파일을 많이 만들 수도 있습니다.

또한 데이터에 액세스 할 수있는 방법을 고려해야합니다. DB에 모든 것이있는 경우 하나의 액세스 경로가 있고 다른 권한 세트에 대해 걱정할 필요는 없지만 읽기/쓰기 블로브의 추가 복잡성을 처리해야합니다. 많은 DBS에서 블로브를 검색 할 수 없습니다.

파일 시스템에서는 파일이 DB에 저장된 경우 불가능한 데이터에서 다른 도구를 실행할 수 있습니다.

데이터베이스에 저장할 것입니다.

  1. 백업/복원이 쉽습니다 (백업 파일과 데이터베이스에도 Point-in-Time 복구가 더 복잡합니다)
  2. DB의 거래는 당신이없는 파일 이름을 지적하지 않아야한다는 것을 의미합니다.
  3. 누군가가 Dodgy 이미지 업로드 해킹을 통해 서버에 스크립트를 넣는 교활한 방법을 찾을 가능성이 적습니다.

소수의 이미지에 대해 이야기하고 있기 때문에 사용 편의성/관리는 링크 된 질문에서 논의되는 성능 문제를 선호해야합니다.

데이터베이스에 저장하는 관리 이점이 있다고 생각합니다. 다른 데이터와 일관되게 복원 할 수 있습니다. 쓸모없는 데이터를 삭제하는 것을 잊지 않을 것입니다 (음, 가능하지만 조금 덜 가능합니다). 데이터베이스를 다른 컴퓨터로 마이그레이션하면 이미지가 함께 이동합니다. 그것.

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