고정 사이즈 컬렉션
고정 사이즈 컬렉션은 삽입 순서에 따라 문서를 삽입하고 조회하는 고정 크기 컬렉션입니다. 고정 사이즈 컬렉션은 순환 버퍼와 비슷하게 작동합니다. 컬렉션이 할당된 공간을 채우면 컬렉션에서 가장 오래된 문서를 덮어써 새 문서를 위한 공간을 확보합니다.
제한 사항
고정 사이즈 컬렉션은 샤드될 수 없습니다.
서버리스 인스턴스에는 고정 사이즈 컬렉션을 만들 수 없습니다.
제한된 컬렉션은 Stable API V1에서 지원되지 않습니다.
트랜잭션의 고정 사이즈 컬렉션에는 쓸 수 없습니다.
$out
집계 파이프라인 단계에서는 고정 사이즈 컬렉션에 결과를 쓸 수 없습니다.
명령 구문
다음 예시는 최대 크기가 100,000바이트인 log
라는 고정 사이즈 컬렉션을 생성합니다.
db.createCollection( "log", { capped: true, size: 100000 } )
고정 사이즈 컬렉션 생성에 관한 자세한 내용은 createCollection()
또는 create
를 참조하세요.
사용 사례
일반적으로 TTL(Time To Live) 인덱스는 고정 사이즈 컬렉션보다 더 나은 성능과 유연성을 제공합니다. TTL 인덱스는 날짜로 입력된 필드 값과 인덱스의 TTL 값에 따라 일반 컬렉션에서 데이터를 만료하고 제거합니다.
고정 사이즈 컬렉션은 쓰기 작업을 직렬화하므로 비고정 사이즈 컬렉션보다 동시 삽입, 업데이트 및 삭제 성능이 떨어집니다. 고정 사이즈 컬렉션을 만들기 전에 TTL 인덱스를 대신 사용할 수 있는지 고려하세요.
고정 사이즈 컬렉션의 가장 일반적인 사용 사례는 로그 정보를 저장하는 것입니다. 고정 사이즈 컬렉션이 최대 크기에 도달하면 자동으로 이전 로그 항목을 새 항목으로 덮어씁니다.
시작하기
고정 사이즈 컬렉션을 만들고 쿼리하는 방법은 다음 페이지를 참조하세요.
행동
고정 사이즈 컬렉션에 대한 이러한 동작 세부 사항을 고려해 보세요.
Oplog 컬렉션
복제본 세트에 작업 로그를 저장하는 oplog.rs 컬렉션은 고정 사이즈 컬렉션을 사용합니다.
다른 제한이 있는 컬렉션과 달리, oplog는 majority commit point
삭제를 방지하기 위해 구성된 크기 제한을 초과하여 커질 수 있습니다.
참고
MongoDB는 oplog의 최대 크기를 256의 가장 가까운 정수 배수(바이트)로 반올림합니다.
_id Index
고정 사이즈 컬렉션은 기본 설정에 따라 _id
필드 및 _id
필드의 인덱스를 포함합니다.
Updates
제한된 컬렉션의 데이터를 업데이트하지 마세요. 제한 컬렉션은 크기가 고정되어 있으므로 업데이트하면 데이터가 컬렉션의 할당된 공간을 초과하여 확장되어 예기치 않은 동작이 발생할 수 있습니다.
쿼리 효율성
자연 순서 를 사용하여 컬렉션에서 가장 최근에 삽입된 요소를 효율적으로 조회합니다. 이는 로그 파일에서 tail
명령을 사용하는 것과 유사합니다.
사용 가능한 커서
고정 사이즈 컬렉션에 테일 커서(tailable cursor)를 사용할 수 있습니다. Unix tail -f
명령과 유사하게 테일 커서(tailable cursor)는 고정 사이즈 컬렉션의 끝부분부터 계속 이어집니다. 새 문서가 고정 사이즈 컬렉션에 삽입되면 테일 커서(tailable cursor)를 사용하여 계속해서 문서를 조회할 수 있습니다.
Tailable cursor를 만드는 방법에 대한 자세한 내용은 Tailable Cursors를 참조하세요.
다중 동시 쓰기
고정 사이즈 컬렉션에 동시 작성자가 있는 경우, MongoDB는 문서가 삽입 순서대로 반환되는 것을 보장하지 않습니다.
읽기 고려 스냅샷
MongoDB 8.0부터 고정 사이즈 컬렉션에서 읽기 고려 "snapshot"
을 사용할 수 있습니다.