MongoDB 최대 문서 크기
이 자습서에서는 MongoDB에 문서를 저장하기 위한 기본 최대 크기 제한에 대해 설명합니다. 또한 데이터가 크기 제한을 초과하는 경우 대체 솔루션을 교육합니다.
또한 BSON 문서의 기본 최대 크기 제한을 효율적으로 사용하는 방법에 대해서도 알아봅니다.
MongoDB 최대 문서 크기
MongoDB에서 문서(객체)는 BSON 형식으로 저장됩니다. BSON(Binary JSON
)은 JSON과 유사한 문서의 이진 직렬화입니다.
이 형식을 사용하면 다양한 확장을 사용하여 JSON의 일부가 아닌 데이터 유형의 다양한 표현을 사용할 수 있습니다.
예를 들어 JSON에서는 사용할 수 없는 Date
및 BinData
유형이 BSON에 있습니다. MongoDB 문서에 따르면 단일 BSON 문서의 크기 제한은 16MB
입니다.
하나의 문서가 전송 중에 무제한 RAM 또는 대역폭을 사용할 수 없도록 문서의 최대 크기 제한이 있습니다. 각 배열/객체가 하나의 수준을 추가하는 최대 100개 수준까지 BSON 문서를 중첩할 수 있음을 기억하십시오.
오늘날의 세상에서는 우리 주변에 데이터가 있습니다. 따라서 우리 데이터가 16MB인 BSON 문서의 크기 제한을 증가시킬 가능성이 있습니다.
이 경우 MongoDB는 GridFS
API를 제공하여 16MB
보다 큰 문서를 저장하도록 지원합니다.
GridFS
API란 무엇입니까?
GridFS
는 BSON 문서의 한계(16MB
)를 초과하는 대용량 파일(예: 오디오, 비디오 또는 이미지 파일)을 저장하고 액세스하는 데 사용할 수 있는 MongoDB 사양입니다. 파일을 저장하는 파일 시스템과 유사하지만 데이터는 MongoDB 컬렉션에 저장됩니다.
GridFS
API는 파일을 청크로 나누고 각 문서의 크기가 255KB
인 별도의 문서에 모든 데이터 청크를 저장합니다. GridFS
에는 기본적으로 fs.files
및 fs.chunks
라는 두 개의 컬렉션이 포함되어 있으며 파일의 메타데이터와 청크를 저장합니다.
모든 청크는 고유한 _id
(ObjectId
) 필드로 인식되는 반면 fs.files
는 상위 문서 역할을 합니다. fs.chunks
문서의 files_id
필드는 청크를 부모에 연결합니다.
GridFS
를 사용하는 동안 구문을 이해하기 위해 이 기사를 살펴볼 수 있습니다.
기본 BSON 문서 크기 제한을 효율적으로 사용
BSON 문서 크기 제한(16MB
)은 많습니다. 예를 들어 War of the Worlds
의 압축되지 않은 전체 텍스트는 364k
(HTML)에 불과하지만 예외는 항상 존재합니다.
데이터가 한도를 초과하면 앞서 논의한 GridFS
API를 사용하거나 16MB
를 효율적으로 사용하기 위한 전략을 세울 수 있습니다.
XYZ 응용 프로그램을 개발하려는 시나리오를 가정해 보겠습니다. 애플리케이션에는 부울
, 숫자
, 문자열
및 날짜
(UNIX ms로 표시)의 네 가지 데이터 유형이 필요합니다.
16MB
크기 제한으로 MongoDB는 64비트
숫자(dates
및 Booleans
도 포함)의 약 2백만 값을 쉽게 저장할 수 있습니다.
여기에서 string
유형 값은 모든 UTF-8 문자가 하나의 byte
를 차지하기 때문에 특별한 주의가 필요합니다. string
유형 값을 포함하는 모든 열의 크기를 최적화해야 합니다.
string
유형 값을 갖는 열의 크기를 줄이기 위해 다음과 같은 방법을 시도할 수 있습니다.
-
stringify()
및zip()
메소드를zip(JSON.stringify(column.values));
으로 사용할 수 있습니다. -
사전을 만들고 고유한
string
유형 값을 사전에 모두 삽입할 수 있습니다. 그런 다음 문자열 값을 인덱스로 바꿉니다.이 접근 방식은 필드에 반복되는 문자열 값이 많은 경우에 유용합니다. 이 방법은 해시 열을 저장하려는 경우 도움이 되지 않지만
GridFS
API를 사용할 수 있습니다. -
열을 다양한 청크로 분할하고 이 청크를 주 문서에 연결된 다른 문서에 저장할 수도 있습니다.
이러한 모든 접근 방식을 보여주는 참조 기사가 있습니다.