2013-10-29 3 views
1

정기적 인 간격으로 문서를 제거해야하는 데이터베이스가 있습니다. 그것은 배치 당 100,000 개의 문서가있는 야구장에있게 될 것입니다.소파에서 문서를 효율적으로 대량 삭제 DB

오늘부터는 제거 할 문서의 _id : s 및 _rev : s 목록을 반환하는보기에 대한 요청을 먼저 수행합니다.

그런 다음 각 문서에 대해 hostname/database/_id? = _ rev에 대한 http DELETE 요청을 수행합니다.

내가 100k 문서 각각에 대해 http 요청을해야하기 때문에 어리석게 비효율적 인 것처럼 보입니다.

소파에서 많은 양의 문서를 더 효율적으로 삭제할 수있는 방법이 있습니까? 나는 새로운 문서를 만들기위한 POST와 비슷한 명령을 찾고 있는데, 여기에서 http의 본문에 데이터를 보냅니다. 아니면 mapreduce에서 이것을하는 방법. 그러나 지금까지는 운이 없다.

답변

3

모든 삭제 작업을 bulk_docs update 하나로 묶을 수 있습니다.

100k 문서의 경우 작업에 약간의 시간이 걸리지 만 개별 DELETE 업데이트보다 훨씬 빠릅니다.

+0

시간이 좀 걸릴 준비가되었습니다. 아직도 이것은 내가 가진 것보다 훨씬 낫다. 해당 업데이트에서 _deleted 플래그를 설정할 수 있다는 사실을 잊어 버렸을 것입니다. 하나의 질문이지만, 압축이 실행될 때 데이터베이스에서 문서를 실제로 삭제하게됩니까? 아니면 보이지 않게 할 수 있습니까? –