2014-07-01 3 views
1

내 CouchDB보기 색인 생성 속도가 내가 원하는 것보다 느리다. 문서를 작성하는 것은 그다지 문제는 아니지만 사용자는 오프라인으로 문서를 편집 한 다음 일괄 적으로 업데이트 할 수 있으므로 작업이 느려지 게됩니다.couchdb보기를 만드는 가장 효율적인 방법

This answer 도움이되었지만 여러 가지보기를 다른 디자인 문서 (예 : 1)로 분리하거나 모두 하나로 저장하는 것이 더 좋습니다 (예 : 2).

Eg. 1 
    _design/posts/_view/id 
    _design/comments/_view/id 
    _design/tags/_view/id 



    Eg.2 
    _design/webresources/_view/_id?key="posts" 
    _design/webresources/_view/_id?key="comments" 
    _design/webresources/_view/_id?key="tags" 

*이 예제는 단지 설명을위한 것입니다. 인덱스 작성에 걸리는 시간에만 관심이 있습니다.

답변

0

자주 읽는다면 더 나은 성능을 얻을 수 있습니다. Couchdb 뷰는 갱신시에 갱신되고 빌드됩니다. 따라서 문서를 업데이트 할 때마다보기를 읽을 수있어 뜨겁게 유지할 수 있습니다 *.

또는 changes feed을 듣고 문서 추적을 업데이트하십시오. 특정 임계 값에 도달하면보기를 읽습니다.

또 다른 옵션은 stale 매개 변수입니다.

stale = ok로 설정하면 CouchDB는 오래된보기라도보기를 새로 고치지 않으므로 쿼리 대기 시간이 향상됩니다. stale = update_after가 설정되면, CouchDB는 부실 결과가 리턴 된 후에 뷰를 갱신합니다.

모든 설계 문서는 별도의 erlang 프로세스입니다. 따라서 서로 다른 디자인 문서에서 뷰를 분리하면 동시에 여러 뷰가 생성됩니다. 그러나 각보기는 여전히 차단 방식으로 작성됩니다. 이는 서로 다른 설계 문서에 대한 두 개의 뷰가 동시에 업데이트를 시작할 수 있지만 개별 뷰를 업데이트하는 데 걸리는 시간은 동일한 설계 문서에있는 것과 동일합니다.

* 반드시 결과에 대해 신경 쓸 필요는 없습니다. 우리의 목표는 뷰를 업데이트하기 위해 couchdb를 속이는 것입니다. 따라서 별도의 비동기 프로세스에서 요청을 실행하여 완료 할 수 있습니다.

+0

감사합니다. 그래서 본질적으로 그것들은 모두 하나의 디자인 문서에 담겨져 있거나 다중으로 퍼져 나간다해도 아무런 차이가 없습니다. 문제는 많은 문서에서 일괄 업데이트를 수행 할 때 발생합니다. 모든 파일의 일괄 업데이트를 변경하여 세그먼트의 문서를 업데이트하고 각 업데이트 후에 읽기를 수행 할 수 있다고 가정합니다. – brianf

+0

"모든 파일의 일괄 업데이트를 변경하여 세그먼트의 문서를 업데이트하고 각 업데이트 후에 읽기를 수행 할 수 있다고 생각합니다. "- 네, 좋은 전략입니다. "그래서 본질적으로 그것들은 모두 하나의 디자인 문서에 담겨져 있거나 여러개로 퍼져 나갔다. - 변화를 가져옵니다. 뷰가 펼쳐지면 분리 된 동시 프로세스에있게됩니다. Holley가 [훌륭한 답변]을 주었습니까 (http://stackoverflow.com/questions/20789356/couchdb-views-and-design-documents/20835978#20835978). 확인 해봐. –

+1

좋습니다. 지금은 훨씬 명확합니다. 건배 – brianf

관련 문제