MongoDB의 Document의 최대 크기는 16Mb이다.


만약 위의 사이즈를 초과하게 되면 도큐먼트 삽입이 그대로 무시된다.


미디어(영상 및 음악) 파일을 제외하더라도 하나의 도큐먼트가 16Mb를 넘는 경우는 허다하다.


예를 들어 2001년 부터 2018년까지의 삼성전자 주식의 5분봉을 받아 온다고 가정하자.


단순히 OHLC 데이터만 해도 5분봉 하나에 Double 형태 4개 = 8 * 4 = 32byte이다.


1시간에 12 * 32byte, 하루에 24 * 12 * 32byte = 9216byte, 1년에 3,363,840byte로 3메가를 단숨에 넘어간다.


위의 경우에는 Collection을 5분봉으로 잡고 그안에 Document를 개별로 OHLC로 만들 수도 있겠지만..


이는 매우 바보같은 생각이라 본다.



그럼 MongoDB에서는 이러한 것을 어떻게 해결할까?


바로 직접 파일저장소를 제어하여 저장하는 것이다.


직접 폴더를 정해놓고 파일명으로써 관리 할 수도 있지만 이는 백업&복구시 누락이 될 수도 있는 단점이 있다.


그리하여 MongoDB에서는 GridFS라는 것을 제공한다.


GridFS를 이용하면 다음과 같은 이점이 있다.


1. 파일을 저장하는 구조를 단순화 할 수 있다.

2. 별도의 파일 저장소를 만들 필요가 없다.

3. 안정성을 위한 복제, 샤딩등의 기능을 그대로 적용할 수 있어서 분산과 장애복구가 용이하다.

4. 대용량의 파일을 저장할 때 생기는 파일시스템의 문제(FAT32인지 NTFS인지의 문제)가 발생하지 않는다.


무엇보다도 사용법이 매우 간단하므로 쓰지 않을 이유가 없다.


아래 링크를 통해서 사용법을 익히도록 하자.


http://api.mongodb.com/python/current/examples/gridfs.html

'Developments > MongoDB' 카테고리의 다른 글

몽고DB 맥(OSX)에 설치 및 실행  (0) 2019.08.10
몽고DB 백업 및 복구하기  (0) 2018.03.16
몽고DB 설치 on Ubuntu  (0) 2016.10.31
pymongo 도움말  (0) 2016.08.07
몽고DB 스키마 디자인  (0) 2016.08.05

+ Recent posts