이벤트

이벤트를 통해 버킷을 컬렉션 및 범위로 마이그레이션하기: 1부

이벤트를 통해 버킷을 컬렉션 및 범위로 마이그레이션하기: 1부

먼저 시바니 굽타가 작성한 훌륭한 블로그를 소개해드리고 싶습니다, Couchbase 7.0에서 범위 및 컬렉션으로 마이그레이션하는 방법에서 버킷 기반 문서를 Couchbase의 범위 및 컬렉션으로 마이그레이션하는 다른 방법을 자세히 다루고 있습니다. Shivani가 다루는 여러 가지 비이벤트 메서드에 대해서도 읽어보시기 바랍니다.

Couchbase를 처음 사용하든 노련한 수의사라면 스코프와 컬렉션에 대해 들어보셨을 것입니다. 사용해 볼 준비가 되었다면 이 도움말을 참조하세요.

범위 및 컬렉션은 다음 버전에 도입된 새로운 기능입니다. 카우치베이스 서버 7.0 를 사용하여 Couchbase 내에서 데이터를 논리적으로 구성할 수 있습니다. 자세히 알아보기, 범위 및 컬렉션에 대한 이 소개를 읽어보세요..

레거시 RDBMS를 문서 데이터베이스에 매핑하거나 수백 개의 마이크로서비스 및/또는 테넌트를 단일로 통합하려는 경우 범위 및 컬렉션을 활용해야 합니다. 카우치베이스 클러스터(결과적으로 TCO가 훨씬 낮아집니다).


범위 및 컬렉션 마이그레이션에 이벤트 사용

이 문서에서는 이전 CouchBase 버전에서 CouchBase 7.0의 범위 및 컬렉션으로 마이그레이션하는 또 다른 고성능 방법의 메커니즘에 대해 설명합니다.

버킷에서 컬렉션으로 마이그레이션하려면 데이터 서비스(또는 KV)와 Eventing만 있으면 됩니다. 잘 조정된 대규모 Couchbase 클러스터에서는 초당 1백만 개 이상의 문서를 마이그레이션할 수 있습니다. 예, N1QL도 필요 없고 인덱스도 필요하지 않습니다.

후속 포스트(2부)에서는 수십 개의 대규모 마이그레이션을 수행할 수 있는 간단한 완전 자동화된 방법론을 제공하겠습니다.  (또는 수백 개) 데이터 유형의 간단한 Perl 스크립트.

전제 조건: 이벤트에 대해 알아보기

이 글에서는 최신 버전의 Couchbase(7.0.2)를 사용하지만 이전 7.0 버전도 정상적으로 작동합니다.

카우치베이스 또는 이벤트 서비스에 익숙하지 않은 경우, 다음 리소스를 통해 하나 이상의 이벤트 예시를 살펴보시기 바랍니다:

이벤트 함수: ConvertBucketToCollections

Eventing을 사용하면 순수한 비즈니스 로직을 작성할 수 있습니다. Eventing 서비스는 여러 노드에서 기능을 관리하고 확장(수평 및 수직)하는 데 필요한 전체 인프라를 성능과 안정성을 갖춘 방식으로 처리합니다.

모든 이벤트 함수에는 두 가지 진입점이 있습니다. 온업데이트(문서, 메타) 그리고 OnDelete(메타, 옵션). 이 예제에서는 후자의 진입점에 대해서는 걱정하지 않습니다.

문서가 변경되거나 변경되면(삽입, 업서트, 바꾸기 등) 문서 사본과 문서에 대한 일부 메타데이터가 작은 JavaScript 엔트리 포인트로 전달됩니다. 온업데이트(문서, 메타).

이벤트 함수는 다음 두 가지 배포 피드 경계를 사용하여 배포할 수 있습니다."지금부터" 또는 "모든 것". 후자는 Couchbase 6.6의 버킷 또는 Couchbase 7.0의 키스페이스(버킷/범위/컬렉션)에 있는 모든 현재 문서에 액세스할 수 있습니다..

스크립트 버킷을 컬렉션으로 변환하기 메인 Eventing 문서에서 Eventing을 활용하여 소스 버킷에서 대상 버킷으로 데이터를 가져오고 데이터를 컬렉션으로 분할하는 방법을 보여줍니다..

1단계: 샘플 데이터 로드

Couchbase UI에서 "설정/샘플 버킷". 확인 맥주 샘플 버튼을 클릭합니다."샘플 데이터 로드“.

2단계: 필요한 키 스페이스 만들기

이 예제에는 버킷 3개가 필요합니다: "beer-sample" (즉, 마이그레이션할 문서 저장소), "rr100″ (즉, 다른 이벤트 함수와 공유할 수 있는 이벤트용 스크래치 패드) 및 대량 (마이그레이션된 컬렉션을 만들 버킷). "rr100″ 및 "bulk" 버킷의 크기는 최소 100MB여야 합니다.

Couchbase UI에서 "버킷"를 누르고 "버킷 추가' 링크를 클릭합니다.

100MB 크기의 버킷 두 개를 만듭니다."rr100"(이벤트 저장소 또는 스크래치 패드용) 및 "대량"(마이그레이션 대상의 경우)를 입력합니다.

버킷에서 "rr100″ 범위 만들기 "이벤트“.

범위에서 "rr100.이벤트" 컬렉션 만들기 "메타데이터“.

버킷에서 "대량" 범위 만들기 "데이터“.

범위에서 "bulk.data" 컬렉션 만들기 "맥주" 및 "양조장“.

이 시점에서 다음과 같이 3개의 버킷이 있어야 합니다:

에 다음 컬렉션을 추가하여 "bulk" 버킷:

및 "rr100″ 버킷:

3단계: 이벤트 함수 만들기

Couchbase UI에서 "이벤트"를 누르고 "기능 추가' 링크를 클릭합니다.

이벤트 기능의 설정은 다음과 같습니다:

버튼 누르기 "저장'를 클릭한 다음 함수 편집기 패널에 이 스크립트를 붙여넣습니다:

코드 편집기의 모습은 다음과 같아야 합니다:

버튼 누르기 "저장 및 반환

ConvertBucketToCollections의 기능

그리고 온업데이트(문서, 메타) 로직이 모든 데이터를 처리합니다. 맥주 샘플._default._default 키스페이스에 저장되며, 과거(과거) 및 새로운(미래) 돌연변이에 대해 다음을 수행합니다.

    • 먼저 doc.유형 가 거의 동일한 두 개의 코드 블록에서 일치하는지 확인합니다. 맥주또는 양조장. 일치하는 항목이 있으면 계속 진행합니다.
    • 글로벌 상수 DO_COPY (함수 설정을 통해 상수 바인딩 별칭으로 제공됨)을 확인하여 항목을 복사해야 하는지 여부를 확인합니다.
    • 만약 DO_COPY 가 참이면 문서가 대상 컬렉션 또는 키 공간에 기록됩니다. beer_col 또는 brewery_col (버킷 바인딩 별칭을 통해 함수 설정을 통해 정의됨) 일치하는 코드 블록에 따라 다릅니다.
    • 글로벌 상수 DO_DELETE (함수 설정을 통해 상수 바인딩 별칭을 통해 제공)를 확인하여 소스 키 공간 또는 컬렉션에서 항목을 제거해야 하는지 여부를 확인합니다(함수 설정을 통해 버킷 바인딩 별칭을 통해 정의).
    • 만약 DO_DELETE 가 참이면 문서가 컬렉션 또는 키 공간에서 제거됩니다. src_col (함수 설정을 통해 버킷 바인딩 별칭을 통해 정의됨).

더 나은 성능을 위해 워커를 1에서 vCPU 수로 늘릴 수도 있지만, 데이터 세트가 사소하므로 워커 수를 하나(1)로 남겨두겠습니다. 참고: 작업자 설정은 기능 설정 대화 상자 가운데에 있는 확장 가능한 섹션 설정에서 찾을 수 있습니다..

이벤트 함수 배포

이제 Eventing 기능을 배포할 차례입니다. ConvertBucketToCollections 마이그레이션 스크립트의 코드와 디자인을 약간 검토했으니 이제 모든 것이 함께 작동하는지 확인해 볼 차례입니다.

이 시점에서 JavaScript에 함수가 있으므로 다음을 수행해야 합니다. 에 추가하십시오. 카우치베이스 클러스터를 활성 상태로 배포합니다.

버튼 누르기 "배포“.

이벤트 서비스에서 이벤트 함수를 배포하는 데 약 18초가 소요되며, 이 시점에서 7303개의 항목이 처리된 것을 즉시 확인할 수 있습니다. 데이터 세트가 정적이므로 모든 항목이 처리되었으므로 완료된 것입니다. 데이터 세트가 정적이므로 모든 항목이 처리되었으므로 완료된 것입니다.

 

버튼 누르기 "배포 취소“.

마이그레이션된 데이터 살펴보기

이제 이벤트 함수 사용을 마쳤으므로 버킷과 컬렉션을 검사하여 어떤 일이 일어났는지 확인할 수 있습니다.

Couchbase UI에서 "버킷

이제 버킷에 대해 "범위 및 컬렉션"을 선택합니다."bulk"을 클릭한 다음 범위를 확장 "데이터".

Couchbase UI에서 "문서"을 클릭한 다음 키스페이스 "bulk.data.beer'를 클릭하면 해당 컬렉션에 마이그레이션된 문서가 표시됩니다.

Couchbase UI에서 "문서"을 클릭한 다음 키스페이스 "bulk.data.brewery'를 클릭하면 해당 컬렉션에 마이그레이션된 문서가 표시됩니다.

 

이벤트 기능 개선하기

이벤트는 즉석에서 데이터를 보강할 수 있으며, 버킷(Couchbase 6.x)을 별도의 컬렉션(Couchbase 7.0)으로 실제로 분할하는 경우 더 이상 유형 속성을 추가합니다. 이제 함수를 수정하여 데이터를 변환해 보겠습니다.

예를 들어 "abhi_brewery" 소스 데이터에서 in 맥주 샘플._default._default:

이벤트 함수에 대한 수정 사항은 다음과 같습니다:

그리고 새로운 전역 상수를 하나 추가하기 때문에 DROP_TYPE를 클릭하고 다음과 같이 설정을 수정합니다:

최종 생각

이 글이 도움이 되었으며 이벤트에 대해 더 자세히 알아보고 싶다면 여기를 클릭하세요. 카우치베이스 이벤트 서비스.

이제 Eventing을 사용하여 버킷을 범위와 컬렉션으로 마이그레이션하는 메커니즘을 이해하셨으니, 다음 포스트(2부)에서 간단한 완전 자동화된 방법론을 통해 수십 개의 데이터 유형으로 대규모 마이그레이션을 수행하는 간단한 Perl 스크립트.

리소스

참조

카우치베이스와 이벤트 서비스의 기능이 마음에 드셨는지, 앞으로 비즈니스에 어떤 도움이 되는지 여러분의 의견을 듣고 싶습니다. 아래 댓글이나 다음에서 의견을 공유해 주세요. 카우치베이스 포럼.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Jon Strabala, 수석 제품 관리자, Couchbase

존 스트라발라는 카우치베이스 이벤트 서비스를 담당하는 수석 제품 관리자입니다. Couchbase에 입사하기 전에는 항공우주 분야의 EDA를 시작으로 오늘날 "IoT"와 "대규모 데이터"에 초점을 맞춘 엔터프라이즈 소프트웨어 구축으로 전환하는 등 20년 이상 다양한 영역에서 소프트웨어 제품을 구축했습니다. Jon은 여러 소규모 소프트웨어 컨설팅 회사에서 근무하다가 결국 자신의 회사를 설립하고 경영하게 되었습니다. 그는 압축 비트맵과 컬럼 스토어와 같은 새로운 기술에 기여하고 상용화하는 데 있어 NoSQL/NewSQL에 대한 폭넓은 경험을 가지고 있습니다. Jon은 서던 캘리포니아 대학교에서 전기공학 학사 및 컴퓨터공학 석사 학위를, 캘리포니아 대학교 어바인 캠퍼스에서 MBA를 취득했습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.