CouchDB는 각 설계 문서의 소스를 색인 파일의 이름과 비교하여 해시한다는 것을 알고 있습니다. 소스 코드를 변경할 때마다 색인을 다시 작성해야합니다. CouchDB는 문서가 처음 요청되었을 때 이것을 수행한다. 내가 일어날CouchDB 지연 빌드 색인 (Windows Server 2008 R2의 CouchDB 1.5.0)
내가 디자인 문서를 변경할 때마다, 뷰에 대한 첫 번째 호출은 크게 평소보다 오래 소요되며 시간이 초과 될 수 있습니다 일어날하려는 기대하는 무엇
. 색인은 계속해서 형성 될 것입니다. 이 작업이 완료되면 뷰는 변경 사항 만 처리하고 매우 빠릅니다. 처음으로 개정 된 뷰를 실행하면 실제로
- 를 어떻게됩니까
, 나는 천천히 100 %에 도달, 상태 창에서 프로세스를 참조하십시오. 이 작업에는 약 2 시간이 소요됩니다. 이 시간 동안 모든 CPU가 완전히 활용됩니다.
- 프로세스가 99 %에 도달하면 약 1 시간 동안 남아서 사라집니다. CPU 사용률이 단 하나의 CPU로 떨어집니다.
- 프로세스가 사라지면 뷰의 데이터 파일이 약 30 분에서 1 시간 동안 계속 증가합니다. CPU 사용률이 0 %에 가까움
- 색인 파일이 갑자기 증가하여 크기가 증가합니다.
상태 4에 도달했을 때 다시보기를 요청하면 3)의 특성이 다시 시작됩니다. 마지막으로 뷰 값을 검색 할 수있을 때까지이 프로세스를 5 ~ 50 회 반복해야합니다.
1 단계 또는 2 단계까지 뷰가 다시 요청되면, 메모리가 거의 모두 소모되어 CouchDB 서비스를 다시 시작해야합니다. 이것은 내 DB가 거의 없으며 단 하나의 작업을 실행할 때 2GB 이상을 사용하지 않으며 일반적인 작업에서는 4GB 이상을 사용하지 않습니다.
구성 설정을 조정하고 더 많은 메모리를 추가하려고했지만 아무 것도 영향을 미치지 않는 것 같습니다.
내 질문
내가 실행 뷰의 개념을 오해 또는 내 설정에 문제가 있나요? 이것이 예상되는 경우 재방송 횟수를 줄이기 위해 조정할 수있는 것이 있습니까?
상황
내 문서 (1 메가 바이트 20) 꽤 크다. 포함 된 데이터는 잘 구조화되어 있으며 대개 웹 분석 보고서이며 관계형 데이터베이스에서 여러 개의 10k 행 데이터로 저장됩니다.
내지도 함수는 이러한 행을 추출합니다. 치수를 키 배열로 반환합니다. 키 배열이 때때로 20 열을 초과합니다. 대부분의보기에는 열이 10 개 미만입니다.
reduce 함수는 동일한 키가있는 행의 모든 값을 집계 (합계)합니다. 메트릭은 사전에 저장되며 다른 키를 포함 할 수 있습니다. reduce 함수는 한 문서에서 누락 된 키를 식별하고 집계에 0을 추가합니다.
CouchDB 1.5를 사용하고 있습니다.2CPU 및 8GByte 메모리가있는 Windows Server 2008 R2에서는 0입니다.
뷰는 javacript로 couchjs 쿼리 서버를 사용하여 작성됩니다.
내 디자인 문서는 일반적으로 데이터를 방출하지 않지만 실제보기에서 액세스하는 기능의 철저한 라이브러리를 포함하는 '_lib'보기와 함께 여러보기로 구성됩니다.
데이터 모델에서 문서가 너무 커야하는 이유가 있습니까? 나는. 보기에 표시해야하는 행 사이에 관계가 있습니까? 행마다 하나의 문서가 왜 필요하지 않습니까? –
javascript reduce 함수 또는 erlang 함수를 사용합니까? – Antonio
원본 데이터의 실제 문서를 반영하기 때문에 문서가 너무 커. Omniture 또는 Google 웹 로그 분석 보고서는 API 호출에 의해 반환됩니다. – Hans