이벤트

카우치베이스 이벤트 서비스를 사용한 이벤트 기반 데이터 마이그레이션 및 변환

최신 데이터 마이그레이션에는 단순한 리프트 앤 시프트가 아니라 애플리케이션이 대상 플랫폼의 강점을 즉시 활용할 수 있도록 변환, 정리, 보강이 필요합니다. 카우치베이스 카펠라의 Eventing 서비스는 데이터가 도착할 때 이벤트 기반의 인라인 변환을 지원하여 팀이 처음부터 스키마를 재구성하고, 값을 정규화하고, 메타데이터로 보강하고, SQL++, 검색, 분석 및 모바일 동기화를 위한 문서를 준비할 수 있도록 합니다.

목표

      • 모든 관계형 또는 비관계형 데이터베이스에서 애플리케이션 및 분석에서 즉시 사용할 수 있도록 데이터를 이동 중에 변환하는 Couchbase Capella로 반복 가능한 이벤트 중심 마이그레이션 패턴을 제공합니다.
        이 예제에서는 소스 데이터베이스로 MongoDB Atlas를 사용하겠습니다.
      • 다음을 사용하여 프로덕션에 바로 사용할 수 있는 최소한의 참조 구현을 제공합니다. cbimport 및 Capella Eventing을 사용하여 소스 스키마(예: 소수점, 중첩 구조, 식별자)를 쿼리에 최적화된 모델로 변환합니다.
      • 운영 가드레일, 전제 조건 및 검증 단계를 간략하게 설명하여 팀이 예측 가능한 결과와 필요한 경우 롤백 옵션으로 자신 있게 실행할 수 있도록 합니다.

이벤트 기반 마이그레이션이 필요한 이유

      • 인라인 변환은 문서가 도착할 때 스키마 정규화 및 보강을 적용하여 마이그레이션 후 재작업을 줄임으로써 컷오버를 가속화하고 위험을 낮춥니다.
      • 이벤트 기능을 사용하면 변환을 소스에서 제어하고 감사할 수 있으므로 환경 전반에서 일관성 있고 테스트 가능하며 반복 가능한 변경을 유지할 수 있습니다.
      • 그 결과 중간 리팩토링 단계 없이 SQL++, 전체 텍스트 검색, 벡터 검색, 분석 및 앱 서비스를 지원하는 Capella 지원 데이터가 생성됩니다.

전제 조건

      • 설치 MongoDB 데이터베이스 도구 (포함 몽고 수출, 몽고수입, 등)
      • Couchbase CLI 다운로드
      • Capella 유료 계정 및 클러스터 액세스, 허용된 IP 주소가 구성되고 Capella 루트 인증서가 다운로드 및 저장된 경우 ca.pem
      • 카우치베이스 카펠라에서 다음과 같은 아티팩트를 만듭니다:
          1. 이름이 있는 버킷입니다: 테스트
          2. 버킷 아래 범위: 테스트 이름과 함께: 샘플_에어비앤비
          3. 이름이 있는 두 개의 컬렉션 listingAndReviewsTemp 그리고 목록 및 리뷰
          4. 이름이 있는 자바스크립트 함수 데이터 변환
            아래 동영상을 보려면 클릭하세요. 카펠라 설정 그리고 클러스터 액세스 만들기 단계로 이동합니다.
      • 대상 버킷/범위/컬렉션에 대한 읽기/쓰기 액세스 권한이 있는 자격증명 및 cbimport 및 MongoDB 내보내기 유틸리티를 위한 CLI 도구가 설치되어 있어야 합니다.
      • MongoDB Atlas(소스) 및 Couchbase Capella(대상)에 대한 연결 문자열과 변환 전 초기 수집을 위한 임시 컬렉션입니다.

몽고DB 아틀라스를 사용한 소스 예제

대표적인 Airbnb 숙소 목록 문서에는 10진수 정규화, 식별자 처리, 중첩 필드, 쿼리 성능을 위한 평탄화 등 일반적인 변환 요구 사항이 나와 있습니다.

예제 필드는 다음과 같습니다. listing_url, 호스트 메타데이터, 좌표가 포함된 주소, 욕실 및 가격과 같은 필드의 소수점 래퍼를 MongoDB 확장 JSON 형식으로 사용할 수 있습니다.

이벤트 변환 패턴

      • 임시 컬렉션을 이벤트 소스로 사용(listingAndReviewsTemp) 및 대상 컬렉션(목록 및 리뷰)를 사용하여 변환된 문서를 계속 마이그레이션할 수 있습니다. idempotent 그리고 테스트 가능.
      • MongoDB 확장 JSON 소수를 기본 숫자로 변환하고, 도메인 가독성을 위해 필드 이름을 바꾸고, 원본에서 Couchbase 키를 도출합니다. _id, 를 사용하여 문서에 도장을 찍고 migrated_at.

1단계: MongoDB에서 내보내기

다음을 사용하여 문서를 JSON으로 내보내기 몽고 수출 와 함께 -jsonArray 를 사용하여 Couchbase로 일괄 가져오기 위한 정리 목록을 생성합니다.

몽고 내보내기 명령 실행 동영상을 따라하세요:

구문 예제:

2단계: 이벤트 배포

      • 임시 컬렉션을 소스로 사용하여 이벤트 발생 함수를 구성합니다(listingAndReviewsTemp) 및 대상 컬렉션(목록 및 리뷰)를 대상으로 지정한 다음 배포하여 문서를 자동으로 변환하고 작성합니다.
      • 이벤트에서 성공 지표와 로그를 모니터링하고, 데이터 도구에서 개수와 무작위 샘플을 확인하여 충실도와 스키마 적합성을 확인합니다.
      • 동영상 보기 설정 및 배포를 위한

코드: 이벤트 기능(OnUpdate)

3단계: 임시 컬렉션으로 가져오기

내보낸 JSON을 임시 컬렉션으로 수집(listingAndReviewsTemp)를 사용하여 cbimport 목록 형식과 Capella의 TLS 인증서를 사용합니다.

구문 예제:

시청하기 카우치베이스 데이터 가져오기 단계로 이동합니다:

이 단계에서는 대상 컬렉션을 비워 두세요. 이벤트가 변환 후에 채웁니다.


유효성 검사 체크리스트

      • 원본과 변환된 대상 간의 문서 수가 필터링된 필드 및 변환에 대해 예상되는 편차 내에서 정렬됩니다.
      • 확장 JSON에서 파싱된 숫자 필드(예: 가격, 욕실)는 예상 숫자 범위와 일치하며 키는 원래 ID와 일대일로 매핑됩니다.
      • SQL++의 대표적인 쿼리(호스트별 조회, 좌표별 지리적 공간 근접성, 가격 범위 필터)는 변환된 데이터에 대한 예상 결과를 반환합니다.
      • Couchbase로 문서를 가져오는 동안 새 ID는 listingAndReviewsTemp 컬렉션의 UUID가 됩니다.
      • 지정된 이벤트 스크립트는 다음을 제거합니다. _id 필드에서 문서 ID 필드를 몽고DB 고유 식별자의 UUID 의 값으로 _id 몽고DB에 있던 그대로
      • 시청하기 가져오기 유효성 검사 비디오

운영 팁

      • 먼저 소규모 배치로 실행하여 이벤트 및 백필 자세의 성능을 검증하고, 변환 처리량이 안정되면 규모를 확장합니다.
      • 이벤트 기능의 버전을 유지하고, 동일한 컬렉션과 내보내기 데이터의 스냅샷으로 비프로덕션의 변경 사항을 테스트한 후 승격하세요.
      • 임시 수집에 TTL 적용 listingAndReviewsTemp 를 사용하여 스토리지 비용을 절약할 수 있습니다. 읽기 TTL에 대한 자세한 정보 Couchbase 문서에서

확장된 사용 사례

      • 전자상거래: 가격 및 통화 정규화, 재고 상태 강화, 빠른 제품 세부 정보 쿼리를 위한 SKU 속성 비정규화
      • IoT 파이프라인: 장치/시간 창별로 센서 판독값을 집계하고 수집 시 이상 징후를 표시하여 다운스트림 처리 지연을 줄입니다.
      • 사용자 프로필: 이메일/전화 번호 표준화, 지리적 필드 도출, 규정 준수 지원 데이터 세트에 대한 동의/감사 메타데이터 첨부
      • 다중 데이터베이스 통합: 이기종 스키마를 Capella의 SQL++, FTS 및 벡터 검색 기능에 맞는 통합 모델로 조화시킵니다.
      • 콘텐츠 카탈로그: 중첩된 미디어 메타데이터를 평평하게 만들고, 검색 가능한 키워드를 추출하며, 지연 시간이 짧은 검색 환경을 위해 패싯을 미리 계산합니다.
      • 재무 기록: 소수점 및 날짜 유형을 변환하고, 계보 및 조정 태그를 첨부하고, 수집 시 수동 검토를 위해 예외를 라우팅합니다.

다음 단계

      • 임시 컬렉션을 델타의 랜딩 존으로 재사용하고 지속적인 마이그레이션을 위해 이벤트가 대상에 업서트되도록 하여 증분 동기화를 추가합니다.
      • 변환된 문서 위에 FTS와 벡터 인덱스를 레이어링하여 재색인 주기 없이도 컷오버 후 시맨틱 및 하이브리드 검색 패턴을 사용할 수 있습니다.
      • 데이터 스트리밍 또는 ETL 기술을 사용하여 다양한 관계형 및 비관계형 소스에서 Couchbase로 데이터를 지속적으로 스트리밍하여 라이브 데이터 마이그레이션 시나리오를 수행할 수 있습니다(몇 가지 예는 다음과 같습니다):

결론

이벤트 기반 마이그레이션은 일회성 포트를 최소한의 사후 처리 작업으로 깔끔하고 쿼리 가능한 데이터를 Capella에서 생성하는 내구성 있는 변환 파이프라인으로 전환합니다. MongoDB에서 내보내고, 임시 컬렉션으로 가져오고, 제어된 Eventing 변환을 적용하면 대상 모델은 첫날부터 SQL++, 검색, 분석 및 앱 서비스에 사용할 준비가 완료됩니다.

무료로 시작하기

Capella 환경을 스핀업하고 소규모 샘플로 이 패턴을 엔드투엔드 테스트하여 확장하기 전에 매핑, 성능 및 쿼리 동작을 검증하세요.

무료 티어 클러스터 시작 무료 티어에 가입하기 를 클릭해 오늘 실험을 실행하세요!

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

Author

Posted by 키쇼르 데쉬판데 - 솔루션 엔지니어

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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