2010-01-29 3 views
2

couchDB에서 처음으로 뷰를 생성 할 때 뷰를 생성하는 데 몇 시간이 걸렸지 만 몇 시간이 걸릴지 예상하지 못했습니다. 좀 더 구체적으로 말하자면, 내가 만든 뷰를 테스트하려고하는데 뷰를 망쳤거나 뷰를 생성하기가 너무 성급한 경우로드 할 시간이 오래 걸립니다. 뷰에 대한지도 기능은 아주 간단합니다 :CouchDB보기를 생성하는데 얼마나 걸리나요?

function(doc){ 
    emit(doc.name, null); 
} 

는 내가 가져 오기 전에 몇 가지 확인을했기 때문에 모든 문서는 이름 필드를 가지고 있음을 알 수없고, 기능을 줄이고 더있다. 데이터베이스에는 약 11,000 개의 문서가 있으며 기본적으로 이름순으로 정렬하려고합니다.

어젯밤 이불에서보기 페이지로 이동하여 결과를 보지 않고 약 30 분 동안 작동하도록했습니다. 위의 함수가 임시보기에 사용될 때 상대적으로 빠르게 결과가 나타나기 때문에 오랜 시간이 걸릴 것 같습니다. CouchDB에서 뷰를 생성하는 데 오랜 시간이 걸릴 것인가? 그렇지 않다면 어떻게 이런 상황이 생길 수 있습니까?

+1

Futon에는 작업보기가 있으며보기 데이터를 생성하는 작업 (실행중인 경우)을 볼 수 있습니다. – ZeissS

답변

2

지도 기능에는 문제가 없었지만 실제로는 감소 기능이었습니다. couchapp을 사용하여 뷰를 만들었고 기본 감소 함수는 다음과 같습니다.

function(key, values, rereduce){ 

} 

실제로 아무 것도 반환하지 않습니다. 반환 값이 없으면 CouchDB는 map/reduce주기를 반복해서 실행하고 있었으며 실제로 멈추지 않았습니다. 뷰에서 reduce 함수를 제거하면 문제가 해결되었습니다.

원래 질문에 대답하기 위해보기를 생성하는 데 그리 오래 걸리지 않았습니다. 내 컴퓨터에서 20 초 정도 걸렸습니다.

+0

jchris가 기본 뷰 서버에서 json.js 대신 json2.js를 사용하도록 변경했습니다. 즉, 최적화 된 C JSON 파서와 함께 최신 버전의 스파이더 맨 키를 사용하면 뷰 생성은 문서 크기에 따라 적어도 두 배, 아마도 세 배가되어야합니다. – mikeal

관련 문제