문제

내가 이해하는 한, CouchDB 인덱스는보기가 쿼리 될 때 업데이트됩니다. 글보다 더 많은 독서가 있다고 가정하면 스케일링에 나쁘지 않습니까? COUCHDB가 일정에 따라 쓰기에 대한 인덱스를 업데이트하도록 어떻게 구성합니까?

도움이 되었습니까?

해결책

CouchDB는 업데이트에 대한 뷰를 재생성하지만, 마지막으로보기 액세스 이후 변경된 내용에 대해서만 뷰를 재생성합니다. 읽기 볼륨이 쓰기 볼륨을 크게 능가한다고 가정하면 문제가되지 않아야합니다.

많은 수의 문서를 한 번에 변경하면 첫 번째 읽기 요청이 눈에 띄는 시간이 걸릴 가능성이 높아질 수 있습니다. 이것을 완화하기 위해 몇 가지 다른 가능성이 제안되었습니다. 대부분 CouchDB의 업데이트 알림에 등록하고 자동으로 읽기 트리거 읽기에 의존합니다.

정확히 수행하기위한 예제 스크립트는 [1]의 CouchDB Wiki에서 사용할 수 있습니다.

[1] http://wiki.apache.org/couchdb/regeneratingviewsonupdate

다른 팁

a) "스케일링"은 과부하 된 용어입니다. 어떤 "종류"의 스케일링을 언급하고 있습니까? (어느 쪽이든, 그것이 당신에게 부정적인 영향을 미치는지 알 수 없습니다).

b) 쓰기에 대한 업데이트 : 글을 쓴 후에보기를 쿼리하십시오. 인덱스에 많은 데이터를 추가하는 것이 더 많은 리소스 친화적입니다 (CouchDB에만 해당되지 않음). 따라서 모든 N이 쓰는 모든보기를 트리거하고 싶을 수도 있습니다.

c) 예약 : m 분마다보기를 쿼리하는 cronjob을 설정하십시오.

d) COUCHDB가 진화하여 구성 매개 변수로이를 설정할 수있는 인프라를 제공 할 때까지 기다리십시오.

e) (최상의 옵션). 손을 더럽 히고 CouchDB를 폴리싱하는 도와주세요! 모든 기여는 높이 평가됩니다.

디) RTFM (깜박거리다 :)

당신은 할 수없고, 왜 그것을 원하십니까?

그렇게 생각하십시오 :

  • MySQL로 데이터를 가져 오면 삽입 한 모든 행에 대한 인덱스를 업데이트하는 것이 더 비싸기 때문에 단일 실행에서 100 개의 쓰기 (또는 가져 오는 많은 행)보다 인덱스를 업데이트하는 것이 더 비싸기 때문에 표시 할 수 있습니다.
  • 이것이 CouchDB가 100 개의 변경 사항을 동시에 통합하는 데 저렴한 비용이 저렴하기 때문에 읽기의 색인을 업데이트하는 이유입니다.

이것은 CouchDB의 장점 중 하나입니다! :) 나는 이것이 CouchDB 전용 기능이라고 말하는 것이 아니라 읽기에서 이것을하는 것이 똑똑합니다.

당신이 할 수있는 한 가지는 update = false로 읽는 것입니다. 이는 더러운 읽기이며 기대하는 것을 반환하지 않을 수 있습니다. 항상이 작업을 수행하면 Cronjob을 통해 "일반"읽기를 예약하고 인덱스를 업데이트 할 수 있습니다. 나는 그것이 의미가 있다고 생각하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top