본문으로 바로가기

Capped 컬렉션

category DB, ORM/🍃 mongoDB (shell) 2020. 4. 6. 01:39

일반적으로 db에서 컬렉션을 생성하는 쉘 명령어는 다음과 같습니다.

 

db.createCollections('[컬렉션 이름]') //  컬렉션을 생성합니다.

  ex - db.createCollection("secondCollection")

 

컬렉션 생성시에는 다양한 옵션을 줄 수 있습니다. 이에 관한 공식 문서는 다음과 같습니다.

 

db.createCollection() — MongoDB Manual

validator document Optional. Allows users to specify validation rules or expressions for the collection. For more information, see Schema Validation. The validator option takes a document that specifies the validation rules or expressions. You can specify

docs.mongodb.com

db.createCollection( <name>,
   {
     capped: <boolean>,
     autoIndexId: <boolean>,
     size: <number>,
     max: <number>,
     storageEngine: <document>,
     validator: <document>,
     validationLevel: <string>,
     validationAction: <string>,
     indexOptionDefaults: <document>,
     viewOn: <string>,              // Added in MongoDB 3.4
     pipeline: <pipeline>,          // Added in MongoDB 3.4
     collation: <document>,         // Added in MongoDB 3.4
     writeConcern: <document>
   }
)

 

Capped 컬렉션

 

  이번에 살펴볼 옵션은 Capped입니다. 정해진 용량을 초과하게 되면 가장 오래된 데이터를 삭제하게 됩니다. 굴어들어온 돌이 박힌 돌을 빼내는데 마지막 돌을 빼낸다고 보면 됩니다. size는 Byte단위 입니다. 만약 size에 4096 바이트 이상을 입력한다면 자동으로 256의 배수로 수정되어서 올라갑니다. 예를 들어 10000을 입력하면 10240이 됩니다.

  여기서는 시험삼아 8바이트만 설정해보겠습니다.

 

db.createCollection("CappedCollection", {capped: true, size: 8})

 

보시면 알겠지만 a부터 순차적으로 넣었을 때 8Byte가 넘어갔을 경우 자동으로 먼저 들어온 a부터 삭제되어있음을 확인할 수 있습니다.

 

 

이러한 Capped 컬렉션은 로그 데이터나 일정시간만 보관하는 데이터를 보관하기에 용이합니다. 

 

 

🎈 capped 컬렉션은 삭제할 수 없다.

 

You cannot delete documents from a capped collection. To remove all documents from a collection, use the drop() method to drop the collection and recreate the capped collection."

 

즉, capped된 컬렉션 내에서는 일부 도큐먼트만 삭제하는 것이 불가능합니다. 컬렉션을 통째로 drop한 후 새로 만들어야만 합니다.

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체