2013-10-04 3 views
0

나는 couchdb (루비 couchrest 사용)에서 문서를 삭제하여 디스크 공간을 복구하려고 시도했습니다. deleting 문서는 공간을 확보하지 못할 수도 있음을 알고 있습니다. 그런 다음 Document :: destroy을 사용했습니다 (작동 할 것 같았습니다). 보기를 압축 한 후에는 꼭 필요한 것보다 더 많은 것을 해제 한 것처럼 보였습니다.couchrest에서 destroy와 delete_doc 사이의 차이

파괴가 무엇을 설명 할 수 있습니까? 내가 왜 그렇게 많은 공간을 찾았는지 아십니까?

답변

1

소스를 보면 두 방법 모두 다소 차이가없는 것 같습니다 (delete_doc()도 호출 함). 유일한 차이점은 destroy()도 로컬 개체에서 _id_rev 필드를 제거하므로 서버 쪽에서 차이가없는 것으로 보입니다.

그러나 두 방법 모두 일괄 처리 (일종의 bulk = true) 일을하는 것처럼 보입니다. 따라서 캐시 된 곳인 을 호출하는 delete_doc()을 호출하면 서버에서 대량 삭제가 실행 된 것일 수 있습니다.

+0

나를 확인하고 돌아 오게하십시오. 나는 문서를 삭제하더라도 couchdb에서 디스크 공간을 다시 청구 할 수 없다는 인상을받습니다. 그것이 사실인지 당신은 알고 있습니까 – nilanjan

+1

그것은 부분적으로 정확합니다. 문서에''_deleted : true'' 속성을 추가하기 만하면 문서를 삭제할 수 있습니다. 이 경우 문서는 삭제 된 것으로 간주되지만 다른 모든 속성은 그대로 유지되며 전체 디스크 공간을 소모합니다. 예를 들어 문서를 삭제 한 이유를 저장하는 데 사용할 수 있습니다. 또는 HTTP 메소드 DELETE를 사용하여 모든 속성을 제거하고 삭제 플래그를 추가 할 수 있습니다. 이 경우 데이터베이스를 압축 할 때 대부분의 공간이 해제되지만 작은 "문서 삭제 표시"가 항상 남겨집니다. –