Couchbase는 통합 캐시 및 스토리지 기술을 결합한 고유한 NoSQL 데이터베이스를 제공합니다. 많은 고객과 잠재 고객이 바이너리 데이터 및/또는 JSON 문서를 저장하는 데 사용하고 있습니다. 프로덕션 시스템의 적절한 크기를 결정하려면 평균 문서 크기를 파악해야 하는 경우가 많습니다. Couchbase 크기 조정에 대해 자세히 알아보려면 Perry의 이 훌륭한 블로그 세트를 참조하세요:

이 블로그 항목에서는 뷰를 사용하여 평균 문서 크기(바이너리 데이터 및 JSON 문서의 경우)를 계산하는 간단한 방법을 자세히 설명합니다.

이는 개발 또는 스테이징 시스템에서만 사용하도록 되어 있습니다. not 를 사용하면 모든 문서를 인덱싱하는 동안 오버헤드가 발생하므로 실제 프로덕션 시스템에서는 사용하지 않습니다.

 

뷰는 자바스크립트로 작성하는 함수로, Couchbase 서버에 저장된 문서의 정보를 추출, 필터링, 집계 및 찾을 수 있습니다.

 

뷰를 만드는 첫 번째 단계는 다음을 제공하는 것입니다. 지도 함수를 사용하여 특정 정보에 대한 항목을 필터링하고 일부 정보를 추출할 수 있습니다. 맵 함수의 결과는 키/값 쌍의 정렬된 목록이며, 이를 색인. 맵 함수의 결과는 Couchbase 서버에 의해 디스크에 유지되며 문서가 변경되면 점진적으로 업데이트됩니다.

또한 선택적으로 다음과 같이 감소 함수를 사용하여 정보를 합산, 집계하거나 계산을 수행할 수 있습니다.

보기에 대한 자세한 내용은 개발 가이드에서 확인할 수 있습니다:
http://www.couchbase.com/docs/couchbase-devguide-2.1.0/understanding-views.html

 

이제 뷰를 만드는 데 필요한 사항을 살펴보겠습니다:

 

지도뷰에 대한 맵 함수의 다음 코드는 키가 문서의 키이고 값이 문서의 길이인 간단한 키 값 쌍 인덱스를 생성합니다:

 

함수 (문서, 메타) {

 if (meta.type == "json") {

   var size = JSON.stringify(doc).length;

   emit(meta.id, size);

 }

 if (meta.type == "base64") {

   var size = decodeBase64(doc).length;

   emit(meta.id, size);    

 }

}

 

이 함수는 JSON 문서(JSON.stringify 사용) 및 바이너리 문서(decodeBase64 사용)에 대해 작동합니다.

 

이 기능은 필요에 따라 특정 문서의 평균 크기를 계산할 수 있도록 확장될 수 있습니다.

감소마지막으로, 축소 함수를 만듭니다(Couchbase의 Aaron에게 감사드립니다(https://twitter.com/apage43)  )를 사용하여 값을 집계하고 값의 수로 나누어 평균 문서 크기를 계산하는 뷰를 만들었습니다. 이 함수는 맵 및 축소 구문을 따르기 때문에 처음에는 약간 복잡해 보이지만 카운트, 합계 및 평균을 출력합니다(기본 제공 함수에서는 평균을 제공하지 않기 때문에 이 함수를 매우 쉽게 사용할 수 있도록 만들고 싶었습니다).

 

함수 (키, 값, 재환원) {

 if(!rereduce) {

   var total = 0,

       count = 0;

   for (v in values) {

     total+= values[v];

     count++;

   }

 } else {

   var count = 0;

       합계 = 0;

   for (v in values) {

     total += values[v]['total'];

     count += values[v]['count'];

   }    

 }

 var 평균 = 총계 / 카운트;

 반환 {카운트: 카운트,

           합계: 합계,

           평균: 평균};

}

 

출력은 카우치베이스 보기 편집기에서 다음과 같이 표시됩니다:

 

쿼리를 실행하기 전에 reduce를 true로 지정해야 합니다:

뷰를 만들고 저장한 후 결과 표시를 클릭하면 다음과 같이 평균 문서 크기가 한 줄로 표시됩니다:

짜잔!

의견과 질문을 alexis@couchbase.com 으로 보내주세요.

작성자

게시자 알렉시스 루스

Alexis Roos는 Salesforce의 선임 엔지니어링 관리자입니다. Alexis는 20년 이상의 소프트웨어 엔지니어링 경력을 보유하고 있으며, 지난 5년간은 대규모 데이터 과학 및 엔지니어링에 중점을 두고 유럽의 SI, Sun Microsystems/Oracle 및 Radius Intelligence, Concurrent, Couchbase를 비롯한 여러 스타트업에서 근무했습니다.

댓글 하나

  1. 키 크기와 키 수를 기준으로 램 요구량을 알려주는 계산기를 찾으려고 하는데요? 몇 주 전에 사용했던 기억이 나는데 더 이상 찾을 수 없나요? 아직 가지고 계신가요?

  2. 멋지네요. 정말 도움이 되었습니다.
    고마워요!

  3. 헤만트 마스타 5월 14, 2018에서 4:01 오후

    이 보기는 Couchbase 5.1에서 작동하지 않습니다. 도움이 필요하신가요?

    1. 헤만트 마스타 5월 14, 2018에서 4:02 오후

      실제로 카우치베이스 5.1에서 뷰를 만들 수 없습니다. 뷰를 저장하려고 할 때 실패합니다.

댓글 남기기