Couchbase는 통합 캐시 및 스토리지 기술을 결합한 고유한 NoSQL 데이터베이스를 제공합니다. NoSQL은 큰 인기를 얻고 있으며, 많은 고객이 RDBMS에 있는 데이터 중 일부를 Couchbase NoSQL로 내보내거나 매핑하려고 하는데, 바로 이 부분에서 Talend의 제품을 활용할 수 있습니다.

Talend는 비즈니스 프로세스 관리에서 엔터프라이즈 서비스 버스, 마스터 데이터 관리에 이르기까지 통합과 관련된 다양한 기능을 제공합니다. Talend의 새로운 빅데이터용 Open Studio 버전 5.3 릴리스에는 Couchbase 커넥터가 포함되어 있어, Couchbase Server를 기존의 운영 및 분석 데이터 원본과 함께 사용할 수 있는 수많은 시나리오를 가능하게 합니다.

Talend를 Couchbase Server와 함께 구성하고 사용하는 방법에 대한 기본적인 아이디어를 제공하기 위해 Talend Open Studio 소프트웨어를 사용하여 MySQL 데이터베이스 서버에서 JSON 문서 형식을 사용하여 Couchbase 데이터베이스 서버로 데이터를 내보내는 ETL 워크플로우를 만드는 간단한 시나리오를 안내해 드리겠습니다. 이 워크플로는 MySQL 데이터베이스 테이블에서 읽고 Couchbase Server에서 해당 JSON 문서를 생성합니다. 데이터 변환, 복잡한 매핑 등과 관련된 더 복잡한 시나리오를 지원하기 위해 예제를 구축하고 이를 보강할 수 있습니다. 다음 단계는 CentOS에서 테스트되었지만 다른 시스템에도 적용할 수 있습니다.

그럼 시작해 보겠습니다...

전제 조건

먼저 설치를 위해 필요한 사전 요구 사항을 살펴보겠습니다:

시작

이제 모든 것이 시작되었는지 확인해 보겠습니다.

  • 아직 시작하지 않았다면 MySQL을 시작합니다:
    • sudo 서비스 mysqld 시작
  • 아직 시작하지 않았다면 Couchbase를 시작합니다:
    • sudo /etc/init.d/couchbase-server 시작
  • 빅데이터용 Talend Open Studio를 시작합니다:
    • 다음 명령어 또는 이와 유사한 명령을 실행합니다(설치 디렉터리 및 버전에 따라 다름): /opt/TOS_BD-r101800-V5.3.0/TOS_BD-linux-gtk-x86_64

만들기

이제 Talend Open Studio를 사용하여 ETL 워크플로우를 만들어 보겠습니다.

  • Talend를 시작한 후 만들기 버튼을 클릭하고 프로젝트 이름(예: "MySQLToCouchbaseIntegration")을 입력한 후 마침을 클릭합니다.
  • 생성된 프로젝트를 선택하고 열기 버튼을 클릭합니다.

talend-open-studio-for-big-data

 

  • Talend에서 계정을 만들거나 건너뛰기 버튼을 클릭하면 IDE가 열립니다.
  • IDE 초기화가 완료될 때까지 기다렸다가 시작 창을 닫거나 최소화합니다.
  • 리포지토리 패널에서 작업 디자인을 왼쪽 클릭한 다음 작업 만들기를 오른쪽 클릭합니다.
  • 작업 이름(예: "MySQLToCouchbase통합작업")을 입력하고 마침을 클릭합니다.

 talend-mysql-to-couchbase-integration

 

  • 이렇게 하면 작업 아티팩트를 끌어서 놓을 수 있는 패널이 생성되고 오른쪽에 팔레트가 표시됩니다.
  • 팔레트에서 tMyslInput 위젯(데이터베이스/MySQL 아래에서 찾을 수 있음)을 왼쪽으로 끌어다 놓습니다.

 talend-job-myql-to-couchbase

 

  • 팔레트에서 데이터베이스/카우치베이스 아래에서 찾을 수 있는 tCouchbaseOutput 위젯을 오른쪽으로 끌어다 놓습니다.

  • 두 구성 요소 모두 Talend 소프트웨어와 함께 제공되지 않는 jar 파일이 필요합니다. Talend에는 jar 파일을 추가하는 방법을 설명하는 위키가 있습니다. 때때로 jar 파일은 IDE에서 직접 다운로드하거나 모듈 패널에서 jar 기호("외부 JAR 추가 도구 설명"이 있는 기호)를 클릭하여 수동으로 다운로드하여 Talend에 로드해야 할 수도 있습니다.

 talend-modules

  • 다음 단계로 처리하기 전에 항아리를 로드/해결해야 합니다. 자세한 정보 보기
  • 패널에서 tMysqlInput을 더블 클릭하면 하단에 컴포넌트 패널이 표시됩니다.
  • 패널에 MySQL 데이터베이스 연결 정보를 입력합니다. 모든 필드는 큰따옴표(즉, ")로 묶어야 합니다.
  • 테이블 이름 오른쪽에 있는 ... 버튼을 클릭하고 세계를 확장한 다음 도시 항목을 선택하고 확인 버튼을 클릭합니다.
  • 기본 쿼리를 제거하고 "SELECT * FROM City"로 대체합니다.
  • 아래는 스크린샷의 예시입니다:

talend-basic-settings

  • 스키마 추측 버튼을 클릭하면 스키마 창이 나타나고, 적절하게 창을 이동하고 크기를 조정할 수 있습니다.
  • 다음과 같이 변경하여 스키마를 편집합니다:
    • ID에 무효화 가능 확인
    • 인구에 대해 무효화 가능 확인
    • ID 유형을 문자열로 변경
    • 아래와 같이 DB 유형을 입력하고 확인 버튼을 클릭합니다.
      • INT for ID
      • 이름에 대한 VARCHAR
      • 국가 코드용 VARCHAR
      • 지구의 VARCHAR
      • INT 인구
  • 아래는 스크린샷의 예시입니다:

 talend-schema

  • tMysqlInput을 마우스 왼쪽 버튼으로 클릭한 다음 마우스 오른쪽 버튼으로 클릭하여 행/메인을 선택하고 화살표를 tMysqlInput 컴포넌트에서 tCouchbaseOutput 컴포넌트로 드래그합니다. 둘 사이에 화살표가 만들어져야 합니다.

 tmysql-input_1

  • 패널에서 tCouchbaseOutput을 왼쪽 클릭하면 하단에 컴포넌트 패널이 표시됩니다.
  • 패널에 Couchbase 데이터베이스 연결 정보를 입력합니다. 모든 필드는 큰따옴표(즉, ")로 묶어야 합니다.
  • 이 예에서는 버킷 이름이 기본값이며 인증이 설정되어 있지 않으므로 사용자 이름과 비밀번호는 ""로 남겨져 있습니다.
  • 버튼을 클릭하고 필드를 풀 URI(예: http://localhost:8091/pools)로 변경하여 URI를 입력해야 합니다.
  • 키는 ID(기본값)와 삽입할 데이터에 대한 액션으로 남겨둬야 합니다.
  • 아래는 스크린샷의 예시입니다:

 talend-component

  • JSON 트리 구성 ... 버튼을 클릭하면 테이블 스키마에서 JSON으로 매핑할 수 있는 매퍼가 나타납니다.
  • 왼쪽 스키마 목록에서 모든 스키마 속성(다중 선택 사용)을 선택하고 오른쪽 링크 대상 창의 루트태그에 끌어다 놓은 다음 대상 노드의 하위 요소로 만들기를 선택한 다음 확인 버튼을 클릭합니다.
  • 출력은 다음과 같이 표시되어야 합니다:

talend-tcouchbaseoutput_1

  • 오른쪽의 링크 대상 창에서 ID 속성을 선택하고 루프 요소로 설정을 마우스 오른쪽 버튼으로 클릭한 다음 확인 버튼을 클릭합니다.

talend-tcouchbaseoutput_1-loop-element

 

  • 모든 것이 정상이면 디자이너 패널의 두 아이콘에 오류 징후가 표시되지 않아야 하며, 이 경우 이제 작업을 실행할 수 있습니다.
  • 실행 패널을 클릭하면 작업이 빌드되고 실행됩니다.
  • Couchbase 서버 버킷에 액세스하여 문서가 로드되었는지 확인합니다: http://localhost:8091/index.html#sec=buckets
  • 이렇게 하면 기본 버킷에 4079개의 문서가 추가되었을 것입니다:

 talend-data-buckets

  • 개별 문서를 드릴다운하여 살펴볼 수 있습니다:

 talend-default-documents

  • 짜잔!

앞서 설명한 것처럼 훨씬 더 복잡한 시나리오를 만들 수 있으며, 곧 더 정교한 예시를 통해 후속 조치를 취할 예정입니다.

다음 주소로 의견과 피드백을 보내주세요. alexis@couchbase.com

작성자

게시자 알렉시스 루스

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

댓글 하나

  1. 좋은 게시물! 감사합니다! 카우치베이스에 외부 데이터를 공급하는 방법이 궁금합니다. 좋은 답변의 첫 번째 부분입니다. 한 번의 마이그레이션에 유용 할 수 있습니다. 하지만 지속적인 통합 프로세스는 어떻습니까?

    1. 안녕하세요,

      데이터 원본의 유형과 원본 자체(또는 상단에 있는 도구)에서 사용할 수 있는 기능에 따라 달라집니다.
      예를 들어 Oracle \"world\"에서는 DCN(데이터베이스 변경 알림), Golden Gate와 같은 기능을 사용하여 데이터베이스 변경 사항을 수신하고 데이터를 Couchbase로 다시 푸시할 수 있습니다. (이와 관련된 코드를 작성하려면 시간이 좀 필요합니다.)

      ETL 도구에서 이 기능을 사용할 수 있는지 여부는 모르겠지만 코드에서는 사용할 수 있습니다.

      안부
      Tug

      1. 윌버트 클린턴 7월 22, 2015에서 1:30 오후

        ETL에 대한 의견을 제공하게 되어 정말 기쁩니다.
        도구가 있습니다. 이러한 도구는 전 세계의 모든 사람들에게 매우 중요하고 유용합니다.
        세계.

        ETL

    2. 연속 내보내기의 경우, 최근에 삽입된 ID를 추적하고 이를 기준으로 가져오기를 필터링할 수 있습니다.
      실제로 Talend는 MySQL이 최신 삽입 ID를 읽을 수 있는 구성 요소인 tMysqlLastInsertId를 제공합니다.
      자세한 내용은 Talend Open Studio 구성 요소 참조 가이드에서 확인할 수 있습니다.

      감사합니다,

      Alexis

    3. 에드워드 오스트 8월 25, 2013에서 9:19 오후

      Talend는 엔터프라이즈 구독과 함께 변경 데이터 캡처(CDC) 구성 요소를 제공합니다. 대부분의 데이터베이스에서 이 구성 요소는 로그 기반이 아닌 트리거 방식입니다. CDC 구성 요소 자체는 원하는 폴링 간격에 따라 실행되도록 예약할 수 있습니다. 그런 다음 델타 레코드를 Couchbase 데이터 소스에 게시합니다. 이 방법은 많은 사용 사례에서 작동하지만, 실시간보다는 '업무 시간'에 더 적합합니다. 야간 배치 실행은 아니지만, 지연 시간이 짧은 설계를 위한 "실시간" 솔루션으로 간주해서는 안 됩니다.

      Ed Ost

  2. 멋진 도구 - 다음 마이그레이션에 이 도구를 사용할 수 있기를 기대합니다.

  3. 알렉시스에게 안내해 주셔서 감사합니다.
    문제는 카우치베이스가 \'인구에 대한 INT\'의 스키마 정의를 무시한다는 것입니다.
    ETL-Job을 실행한 후 문서는 다음과 같이 표시됩니다:
    {
    \"ID\": \"도시:1000\",
    \"유형\": \"도시\",
    \"이름\": \"Taman\",
    \"국가 코드\": \"IDN\",
    \"지구\": \"동부 자바\",
    \"인구\": \"107000\"
    }

    이렇게 표시되어야 할 것 같습니다:
    따옴표가 없는 인구수. 이유: _sum 줄이기 함수를 사용하기 위해서입니다.

    {
    \"ID\": \"도시:1000\",
    \"유형\": \"도시\",
    \"이름\": \"Taman\",
    \"국가 코드\": \"IDN\",
    \"지구\": \"동부 자바\",
    \"인구\": 107000
    }

    1. 윌버트 클린턴 8월 10, 2015에서 7:38 오후

      ETL에 대한 의견을 제공하게 되어 정말 기쁩니다.
      도구가 있습니다. 이러한 도구는 전 세계의 모든 사람들에게 매우 중요하고 유용합니다.
      세계. ETL 도구는 모든 데이터를 다음과 같이 변환하는 데 도움이 되는 모든 사람에게 유용합니다.
      모든 데이터베이스를 빠르고 쉽고 편안하게 관리할 수 있습니다.
      ETL

  4. Q1: 타겟 노드에 링커를 추가할 때 정적 값을 설정하는 방법은 무엇인가요?
    Q2: 정수 값을 Couchbase 정수 값(문자열이 아님)에 매핑하는 방법은 무엇인가요?

댓글 남기기