[컴][db] mongodb 에서 큰 colleciton 의 내용을 일부만 남기고 삭제하는 방법

 몽고db / 몽고디비 / 컬렉션 지우기 / 내용 지우기 / 일부 내용만 추출

mongodb 에서 큰 colleciton 의 내용을 일부만 남기고 삭제하는 방법

이 글은 아래 글에 대한 정리이다.

하나의 2TB인 collection 을 가지고 있다. 여기서 old 한 정보를 삭제하고 싶다. remove operation 이 너무 오래걸린다. 그래서 찾은 방법이 원하는 data 만 새로운 collection 으로 옮기고 기존의 collection 을 삭제하는 방법

  1. insertMany()를 이용 : 그리 빠르지 않다.
  2. aggregation 의 $out 명령어 : 빠르다. 그런데 결과를 새로운 collection을 만들어서 넣는다. 그래서 여러번 수행하면 결과가 여러 collection 에 만들어지고 정보를 다시 하나로 모아야 한다. 이러면 다시 느려진다. 요즘 버전은 기존 collection 에 append를 할 수 있는 기능이 있다.
  3. mongoexport /mongoimport : 필요한 data 를 json file 로 export 하고, 이 것을 새로운 collection 에 다시 import 한다. 이것도 꽤 빠르다.

2번과 3번을 같이 이용하는 것이 좋다. multi-threaded programming 을 이용

댓글 없음:

댓글 쓰기