MongoDB 최대 문서 크기

Mehvish Ashiq 2024년2월16일
MongoDB 최대 문서 크기

이 자습서에서는 MongoDB에 문서를 저장하기 위한 기본 최대 크기 제한에 대해 설명합니다. 또한 데이터가 크기 제한을 초과하는 경우 대체 솔루션을 교육합니다.

또한 BSON 문서의 기본 최대 크기 제한을 효율적으로 사용하는 방법에 대해서도 알아봅니다.

MongoDB 최대 문서 크기

MongoDB에서 문서(객체)는 BSON 형식으로 저장됩니다. BSON(Binary JSON)은 JSON과 유사한 문서의 이진 직렬화입니다.

이 형식을 사용하면 다양한 확장을 사용하여 JSON의 일부가 아닌 데이터 유형의 다양한 표현을 사용할 수 있습니다.

예를 들어 JSON에서는 사용할 수 없는 DateBinData 유형이 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.filesfs.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비트 숫자(datesBooleans도 포함)의 약 2백만 값을 쉽게 저장할 수 있습니다.

여기에서 string 유형 값은 모든 UTF-8 문자가 하나의 byte를 차지하기 때문에 특별한 주의가 필요합니다. string 유형 값을 포함하는 모든 열의 크기를 최적화해야 합니다.

string 유형 값을 갖는 열의 크기를 줄이기 위해 다음과 같은 방법을 시도할 수 있습니다.

  1. stringify()zip() 메소드를 zip(JSON.stringify(column.values));으로 사용할 수 있습니다.

  2. 사전을 만들고 고유한 string 유형 값을 사전에 모두 삽입할 수 있습니다. 그런 다음 문자열 값을 인덱스로 바꿉니다.

    이 접근 방식은 필드에 반복되는 문자열 값이 많은 경우에 유용합니다. 이 방법은 해시 열을 저장하려는 경우 도움이 되지 않지만 GridFS API를 사용할 수 있습니다.

  3. 열을 다양한 청크로 분할하고 이 청크를 주 문서에 연결된 다른 문서에 저장할 수도 있습니다.

이러한 모든 접근 방식을 보여주는 참조 기사가 있습니다.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

관련 문장 - MongoDB Document