2012-01-09 5 views
4

Mongo GridFS 또는 클라우드 파일 시스템에 이미지를 저장하는 것에 대해 논쟁 중입니다. 나는 몇 가지 이유 때문에 구름쪽으로 기울고있다. 사용되는 언어는 Nginx 서버의 PHP 다.MongoDB GridFS에 이미지 저장

  1. GridFS에서 이미지를 저장하면 데이터베이스 크기가 커집니다. 따라서 더 많은 데이터베이스가 메모리에 있어야하며 샤딩과 같은 경우 서버 관리에 더 많은 시간과 돈을 투자 할 것입니다. 제가 하기 때문에

  2. 는 GridFS에서 이미지를 검색하는 것은 a) 화상

를 표시하는 ID b) 메모리 C로 화상을 판독)하는 PHP 헤더를 사용하여 사용하여 이미지를 질의 구름보다 오래 걸린다

구름이 이미지의 URL을 직접 구름 때문에 좋을 것입니다.

그 이유는 타당합니까? 또는 제 생각과 다른 방향으로 가고 있어야합니까?

답변

4

전혀 그렇지 않습니다.

GridFS에서 이미지를 저장하면 데이터베이스 크기가 커집니다. 따라서 더 많은 데이터베이스가 메모리에 있어야하며 샤딩과 같은 경우 서버를 관리하는 데 더 많은 시간과 돈을 쓸 것입니다.

Mongodb gridfs는 거대한 파일을 청크로 분할하며 요청할 때마다 (청크별로)로드되고 제공됩니다. 네, 분명히 파일 시스템보다 더 많은 메모리를 사용할 것입니다. 메모리 내 데이터 저장소를 사용할 때 이들은 모두 단점입니다. I는를 가지고 때문에

는 GridFS에서 이미지를 가져 오는 화상

을 표시하는) 메모리 C로 화상을 판독)는 ID (B)를 사용하여 PHP 헤더를 사용하여 이미지를 조회) 클라우드보다 오래 걸린다

이전에 언급했듯이 처음 메모리에로드 될 것입니다. 그래서 당신은 성능 문제를 많이 겪지 않을 것입니다. 실제로 디스크 대신에 RAM을 사용하기 때문에 이득이 될 것입니다. 하지만 여전히 만족스럽지 않다면, nginx에서 이미지를 캐시하는 것이 좋습니다. 그래서 첫 번째 이후에는 몽고에 올 수 없을 것입니다.

+0

'RAM에서 서비스했습니다'. 그리드의 일부가 아닌 일반 컬렉션에서 RAM에 저장된 정보를 이미 가질 예정입니다. RAM에 더 많은 정보를 저장하면 서버의 성능이 저하 될 수 있습니다. 1000 개의 이미지를 처리한다고 가정 해 보겠습니다. RAM이 너무 많습니다. 클라우드 서버에 저장하고 클라이언트 브라우저에 캐시하는 것이 좋습니다. 그게 내가 잘못한거야? –