MongoDB Capped Collection의 최대 허용 크기는 얼마일까?
MongoDB의 Capped Collection(고정 크기 컬렉션)은 지정된 용량이 가득 차면 가장 오래된 문서를 자동으로 삭제하고 새로운 문서를 삽입하는 특수한 형태의 컬렉션입니다. 로그 데이터나 최근 이벤트 기록처럼 최신 데이터만 유지하면 되는 경우에 널리 활용됩니다.
그렇다면 이 컬렉션의 최대 허용 크기는 어느 정도일까요? 결론부터 말하면, Capped Collection의 크기는 사용자가 직접 결정할 수 있습니다. 별도의 고정된 상한값이 존재하지 않으며, 컬렉션 생성 시 size 매개변수를 통해 원하는 만큼 용량을 지정하면 됩니다. 물론 실질적인 한계는 서버의 디스크 여유 공간과 메모리에 따라 달라집니다.
size 매개변수로 컬렉션 크기 지정하기
Capped Collection을 생성할 때는 size 옵션을 사용해 용량을 바이트 단위로 설정합니다. 기본 문법은 다음과 같습니다.
db.createCollection('yourCollectionName', { capped: true, size: yourValue });
참고로 size의 최솟값은 4096바이트이며, 지정한 값은 256바이트 단위로 올림 처리되어 적용됩니다.
실제 생성 예제
아래 예제에서는 'cappedCollectionMaximumSize'라는 이름의 Capped Collection을 생성하면서 매우 큰 값을 size로 지정했습니다.
> db.createCollection('cappedCollectionMaximumSize', { capped: true, size: 1948475757574646 });
{ "ok" : 1 }
"ok": 1 응답은 컬렉션이 성공적으로 생성되었음을 의미합니다.
생성된 컬렉션 확인하기
생성된 컬렉션의 정보를 확인하려면 explain() 메서드를 실행해 쿼리 실행 계획과 서버 정보를 살펴볼 수 있습니다.
> db.cappedCollectionMaximumSize.find().explain();
실행 결과는 다음과 같습니다.
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "test.cappedCollectionMaximumSize",
"indexFilterSet" : false,
"parsedQuery" : {
},
"winningPlan" : {
"stage" : "COLLSCAN",
"direction" : "forward"
},
"rejectedPlans" : [ ]
},
"serverInfo" : {
"host" : "DESKTOP-QN2RB3H",
"port" : 27017,
"version" : "4.0.5",
"gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412"
},
"ok" : 1
}
정리
MongoDB Capped Collection에는 미리 정해진 최대 크기 제한이 없으며, size 매개변수를 통해 사용자가 원하는 용량을 자유롭게 설정할 수 있습니다. 다만 실제 운영 환경에서는 서버의 디스크 공간과 메모리가 사실상의 상한선 역할을 하므로, 시스템 리소스를 고려해 적절한 크기를 설계하는 것이 중요합니다.