Capped Collection
-캡드 컬렉션은 높은 성능의 로깅 기능을 위해 설계되었다.
-일반 컬렉션과 다른 점은 고정된 크기를 갖는다는 점이다.
-더 이상의 공간이 없게 되면 도큐먼트를 삽입할 때 컬렉션에 추가된 지 가장 오래된 도큐먼트를 덮어쓰게 된다.
-일반적인 보통 컬렉션에 모든 연산이 가능하도록 허용하지는 않는다.
-개별 도큐먼트를 삭제할 수 없고, 도큐먼트의 크기를 증가시키는 어떤 업데이트도 수행할 수 없다.
-만드는 방법
db.createCollection("컬렉션이름",{capped: true, size: 16384, max:100})
최대 크기가 16384바이트고, 최대 100도큐먼트까지 저장되는 컬렉션
ex)
capped 컬렉션 생성
for문을 이용하여 500개의 데이터 삽입
capped 컬렉션의 결과로 401부터 출력된다.
capped의 설정을 최대 100개의 도큐먼트로 지정했기 때문에 그 이전에 만들어진 도큐먼트들은 자동으로 삭제되고 마지막 100개의 도큐먼트를 출력하게 되는것.
TTL Collection
-컬렉션에서 특정 시간이 경과한 도큐먼트를 만료시킬 수 있는 기능
-특별한 인덱스를 사용하여 구현한 것.
-db.컬렉션이름.createIndex({키: 값}, expireAfterSeconds: 3600})
ex)
현재 데이터베이스의 ttlcol이라는 collection을 생성하고, time_field라는 인덱스를 생성한다. 그리고 옵션으로 30초 뒤에 만료되는 옵션을 설정한다.
time_field의 값과 현재 시간 사이에 차이가 expireAfterSeconds 설정 값보다 크게 되면 해당 도큐먼트는 자동적으로 삭제될 것이다.
해당 컬렉션의 time_field에 삽입 시점의 시간을 설정하게 된다.
30초가 지난 현재의 ttlcol 컬렉션의 도큐먼트는 삭제되고 갯수도 0으로 카운트된다.
-TTL 인덱스는 _id 필드 또는 이미 다른 인덱스에서 사용되고 있는 필드에 대해서는 TTL 인덱스를 가질 수가 없다.
-캡드 컬렉션에 대해서도 TTL 인덱스를 가질 수 없다.(캡드 컬렉션이 개별 도큐먼트를 삭제하는 것을 지원하지 않기 때문)
-인덱스 필드에 타임스탬프의 배열을 가지게 되더라도 복합 TTL 인덱스를 가질 수 없다는 점(이 경우 TTL 속성은 컬렉션의 가장 빠른 시점의 타임스탬프에 적용된다.)
'DataBase > NoSQL' 카테고리의 다른 글
[NoSQL] MongoDB 쿼리 언어 총정리1 (1) | 2021.01.20 |
---|---|
[NoSQL] MongoDB Index 생성,예제,효율확인 (0) | 2021.01.19 |
[NoSQL] python에서 MongoDB연동시키기 (0) | 2021.01.14 |
[NOSQL] MongoDB Shell(명령어)로 CSV, JSON import 해보기 (0) | 2021.01.11 |
[NOSQL] MongoDB의 역할 및 활용 사례 (0) | 2021.01.08 |
댓글