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

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

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

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

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


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

이전 글(1부)에서 이전 CouchBase 버전에서 CouchBase 7.0의 범위 및 컬렉션으로 마이그레이션하는 고성능 방법의 메커니즘에 대해 설명했습니다. 이벤트.

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

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

마지막 이벤트 함수에 대한 요약입니다: ConvertBucketToCollections

파트 1에서는 이벤트 함수에 대해 다음과 같이 설정했습니다. 각 고유 유형에 "맥주" 및 "양조장"읽기+쓰기" 모드에서 대상 컬렉션에 버킷 바인딩 별칭을 추가해야 했습니다. 또한 대상 컬렉션을 만들어야 했습니다(이 경우 "bulk.data.beer" 및 "bulk.data.brewery

파트 1에서는 이벤트 함수에 다음과 같은 자바스크립트 코드를 사용했습니다. 각 고유 유형에 "맥주" 및 "양조장"를 사용하려면 자바스크립트 코드 블록을 복제하고 Couchbase 데이터 서비스에서 해당 바인딩 별칭 또는 대상 컬렉션에 대한 참조를 업데이트해야 했습니다.

파트 1의 기술은 효과가 있지만 유형이 많으면 어떻게 해야 하나요?

이벤트 기능을 사용하면 실제로 1부에서 설명한 대로 마이그레이션을 수행할 수 있지만 설정하는 데 약간의 작업이 필요한 것 같습니다.

80개의 서로 다른 유형이 있는 경우 이 기술을 사용하려면 (이벤트 함수를 만들고 필요한 키 공간을 만드는 데) 엄청난 양의 오류가 발생하기 쉽습니다. 마이그레이션 및 분할할 버킷에 80개의 유형이 있다면 각 유형에 대해 위에서 설명한 모든 작업을 수작업으로 하고 싶지 않을 것입니다.

사용자 지정 변환 버킷을 통한 자동화.pl

이 문제를 해결하기 위해 저는 작은 Perl 스크립트, 사용자 지정 버킷을 컬렉션으로 변환.pl를 클릭하면 두 개의 파일이 생성됩니다:

  • 사용자 지정 버킷을 컬렉션으로 변환.json, 는 이 포스트에서 설명한 위의 모든 작업을 수행하는 완전한 이벤트 함수입니다..
  • MakeCustomKeyspaces.sh, 는 필요한 모든 키스페이스를 빌드하고 생성된 이벤트 함수를 가져오는 셸 파일입니다.

이 스크립트는 GitHub에서 찾을 수 있습니다. https://github.com/jon-strabala/cb-buckets-to-collections.

참고, 스크립트 사용자 지정 버킷을 컬렉션으로 변환.pl 두 가지가 모두 필요합니다. Perl (실용적인 추출 및 보고 언어) 및 또한 jq (가볍고 유연한 명령줄 JSON 프로세서)가 시스템에 설치되어 있습니다.

예시: 80가지 유형으로 2억 5천만 개의 레코드 마이그레이션

키스팩에 2억 5천만 개의 문서가 있습니다.e "입력._기본값._기본값"와 함께 80개의 다른 유형으로 데이터를 유형별로 재구성하여 아래의 컬렉션으로 재구성하려고 합니다. 범위 "output.reorg를 속성 유형별로 구분합니다. 데이터 서비스와 저녁 서비스를 모두 실행하는 3개의 r5.2xlarge 인스턴스로 구성된 AWS 클러스터가 있습니다.

입력 버킷 "입력' 예제에서는 메모리 할당량이 16000MB로 구성되어 있습니다.

아래에서는 CustomConvertBucketToCollections.pl을 사용합니다. Perl 스크립트에서 https://github.com/jon-strabala/cb-buckets-to-collections. 보시다시피 자동화된 스크립트를 사용하여 마이그레이션을 수행하는 것은 간단할 수 있습니다.

1단계: 일회성 설정

2단계: 2억 5천만 개의 테스트 문서 만들기

대화형 실행 big_data_test_load.sh 명령을 사용합니다:

구성 매개변수를 입력합니다:

이제 키 공간에 2억 5천만 개의 테스트 문서가 있어야 합니다. 입력._기본값._기본값.

3단계: 이벤트 함수 및 키스페이스 스크립트 생성하기

대화형 실행 사용자 지정 버킷을 컬렉션으로 변환.pl 명령을 사용합니다:

구성 매개변수를 입력합니다:

대화형 Perl 스크립트에서 위의 기본 선택 사항 중 네 가지가 변경되었습니다.

3단계: MakeCustomKeyspaces.sh 업데이트(필요에 따라)

"vi MakeCustomKeyspaces.sh"를 클릭하고 필요한 값을 변경합니다. Unix sed 명령을 사용하여 버킷 "출력" 100에서 1600까지

4단계: MakeCustomKeyspaces.sh 스크립트 실행

를 출력합니다:

5단계: 이벤트 페이지에서 카우치베이스 UI 새로고침하기

카우치베이스 UI에서 새로운 이벤트 기능(또는 업데이트된 기능)을 찾으려면 이벤트 페이지로 이동하여 웹 브라우저를 새로고침하세요.

6단계: 사용자 지정 버킷을 컬렉션에 배포하기

카우치베이스 UI에서 이벤트 페이지로 이동하여 이벤트 기능 배포 "사용자 지정 버킷을 컬렉션으로 변환하기“.

45분 정도면 개편이 완전히 완료됩니다.

실제로 모든 문서는 유형별로 컬렉션으로 재구성됩니다. 이 작은 클러스터에서는 초당 93,000개의 문서가 처리되었습니다.

최종 생각

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

사용자 지정 버킷을 컬렉션으로 변환하는 CustomConvertBucketToCollections.pl Perl 스크립트에서 https://github.com/jon-strabala/cb-buckets-to-collections 유형이 많은 버킷을 컬렉션 패러다임으로 마이그레이션해야 할 때 유용한 도구입니다.

CustomConvertBucketToCollections.pl 스크립트를 자유롭게 개선하여 중간 구성 파일을 Eventing Perl 도구에서 모든 매개변수를 조정할 수 있습니다. 그런 다음 중간 구성 파일을 사용하여 이벤트 함수 및 설정 셸 스크립트를 만듭니다.

중간 구성 파일 예시:

리소스

참조

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

작성자

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

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

댓글 남기기