2013-08-06 1 views
0

저는 Couchbase를 처음 사용했습니다. 나는 함수를 줄이기 위해 노력하고 있는데 모든 경우에 rereduce 매개 변수가 항상 거짓임을 깨닫는다. 나는 rereduce에 관한 문서를 읽었습니다. 그들은 reduce 함수가 이전 감소 단계 후에 호출 될 때 rereduce이 true라고 말합니다. 혼란 스럽네.Couchbase rereduce always false

제 질문은 rereduce = true를 얻는 방법입니다.

답변

0

클러스터에 둘 이상의 서버가있는 경우 다시 생성이 적용됩니다. _count 함수 예제를 설명하겠습니다.

하나의 서버가있는 경우지도와 축소가 하나의 서버에서 처리됩니다. 나는. 만약 당신이 그런 배열을 가지고 있다면 : map : [1 : null, 2 : null, ..., 5 : null] 그리고 reduce에서 그것들을 계산할 필요가 있다면 그것은 한 단계에서 5를 리턴 할 것입니다.

그러나 서버 맵이 두 개 이상이면 각 서버에서 축소 기능이 실행됩니다. 따라서지도의 첫 번째 서버에서 [1 : null, 3 : null], 다른 곳에서는 [2 : null, 4 : null, 5 : null]이됩니다. 그런 다음 reduce 함수는 두 서버 모두에서 호출되며 첫 번째 서버에서 [2]를 반환하고 다른 서버에서 [3]을 반환합니다. 그 값은 한 서버에서 다시 줄이기 위해 전달 될 것이므로 rereduce에서 배열 [2], [3]의 value param을 얻을 것이고 여기서 정확한 값을 얻기 위해 값을 추가해야합니다.

+2

다중 노드에서 온 경우뿐만 아니라 노드에서 reduce 함수가 호출되고 B * 트리의 여러 "노드"에서 계산이 수행 될 때 Rereduce가 true로 설정됩니다. –