Pub/Sub to Java Database Connectivity(JDBC) 템플릿

Pub/Sub to JDBC(Java Database Connectivity) 템플릿은 기존 Pub/Sub 구독의 데이터를 JSON 문자열로 수집하고 결과 레코드를 JDBC에 쓰는 스트리밍 파이프라인입니다.

파이프라인 요구사항

  • 파이프라인을 실행하기 전에 Pub/Sub 구독이 있어야 합니다.
  • 파이프라인을 실행하기 전에 JDBC 소스가 있어야 합니다.
  • Pub/Sub 출력 데드 레터 주제는 파이프라인을 실행하기 전에 존재해야 합니다.

템플릿 매개변수

매개변수 설명
driverClassName JDBC 드라이버 클래스 이름입니다. 예를 들면 com.mysql.jdbc.Driver입니다.
connectionUrl JDBC 연결 URL 문자열입니다. 예를 들면 jdbc:mysql://some-host:3306/sampledb입니다. 이 값을 Cloud KMS 키로 암호화된 Base64 인코딩 문자열로 전달할 수 있습니다. Base64로 인코딩된 문자열에서 공백 문자를 삭제하세요.
driverJars JDBC 드라이버의 쉼표로 구분된 Cloud Storage 경로입니다. 예를 들면 gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar입니다.
username (선택사항) JDBC 연결에 사용할 사용자 이름입니다. 이 값을 Cloud KMS 키로 암호화된 Base64 인코딩된 문자열로 전달할 수 있습니다.
password (선택사항) JDBC 연결에 사용할 비밀번호입니다. 이 값을 Cloud KMS 키로 암호화된 Base64 인코딩된 문자열로 전달할 수 있습니다.
connectionProperties (선택사항) JDBC 연결에 사용할 속성 문자열입니다. 문자열 형식은 [propertyName=property;]*여야 합니다. 예를 들면 unicode=true;characterEncoding=UTF-8입니다.
statement 데이터베이스에 대해 실행할 문입니다. 이 문은 순서에 관계없이 테이블의 열 이름을 지정해야 합니다. 지정된 열 이름의 값만 JSON에서 읽고 문에 추가됩니다. 예를 들면 INSERT INTO tableName (column1, column2) VALUES (?,?)입니다.
inputSubscription 읽어올 Pub/Sub 입력 구독으로, projects/<project>/subscriptions/<subscription> 형식입니다.
outputDeadletterTopic 전달할 수 없는 메시지를 전달할 Pub/Sub 주제입니다. 예를 들면 projects/<project-id>/topics/<topic-name>입니다.
KMSEncryptionKey (선택사항) 사용자 이름, 비밀번호, 연결 문자열을 복호화하는 Cloud KMS 암호화 키입니다. Cloud KMS 키가 전달되면 사용자 이름, 비밀번호, 연결 문자열이 모두 암호화되어 전달되어야 합니다.
extraFilesToStage 작업자에 스테이징할 파일의 쉼표로 구분된 Cloud Storage 경로 또는 Secret Manager 보안 비밀입니다. 이러한 파일은 각 작업자의 /extra_files 디렉터리에 저장됩니다. 예를 들면 gs://<my-bucket>/file.txt,projects/<project-id>/secrets/<secret-id>/versions/<version-id>입니다.

템플릿 실행

콘솔

  1. Dataflow 템플릿에서 작업 만들기 페이지로 이동합니다.
  2. 템플릿에서 작업 만들기로 이동
  3. 작업 이름 필드에 고유한 작업 이름을 입력합니다.
  4. (선택사항): 리전 엔드포인트의 드롭다운 메뉴에서 값을 선택합니다. 기본 리전은 us-central1입니다.

    Dataflow 작업을 실행할 수 있는 리전 목록은 Dataflow 위치를 참조하세요.

  5. Dataflow 템플릿 드롭다운 메뉴에서 the Pub/Sub to JDBC template을 선택합니다.
  6. 제공된 매개변수 필드에 매개변수 값을 입력합니다.
  7. 작업 실행을 클릭합니다.

gcloud

셸 또는 터미널에서 템플릿을 실행합니다.

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/PubSub_to_Jdbc \
    --region REGION_NAME \
    --parameters \
driverClassName=DRIVER_CLASS_NAME,\
connectionURL=JDBC_CONNECTION_URL,\
driverJars=DRIVER_PATHS,\
username=CONNECTION_USERNAME,\
password=CONNECTION_PASSWORD,\
connectionProperties=CONNECTION_PROPERTIES,\
statement=SQL_STATEMENT,\
inputSubscription=INPUT_SUBSCRIPTION,\
outputDeadletterTopic=OUTPUT_DEADLETTER_TOPIC,\
KMSEncryptionKey=KMS_ENCRYPTION_KEY

다음을 바꿉니다.

  • JOB_NAME: 선택한 고유한 작업 이름
  • VERSION: 사용할 템플릿 버전

    다음 값을 사용할 수 있습니다.

  • REGION_NAME: Dataflow 작업을 배포할 리전(예: us-central1)
  • DRIVER_CLASS_NAME: 드라이버 클래스 이름입니다.
  • JDBC_CONNECTION_URL: JDBC 연결 URL
  • DRIVER_PATHS: JDBC 드라이버의 쉼표로 구분된 Cloud Storage 경로
  • CONNECTION_USERNAME: JDBC 연결 사용자 이름
  • CONNECTION_PASSWORD: JDBC 연결 비밀번호
  • CONNECTION_PROPERTIES: JDBC 연결 속성(필요한 경우)
  • SQL_STATEMENT: 데이터베이스에 대해 실행할 SQL 문
  • INPUT_SUBSCRIPTION: 읽어올 Pub/Sub 입력 구독
  • OUTPUT_DEADLETTER_TOPIC: 전달할 수 없는 메시지를 전달할 Pub/Sub
  • KMS_ENCRYPTION_KEY: Cloud KMS 암호화 키

API

REST API를 사용하여 템플릿을 실행하려면 HTTP POST 요청을 전송합니다. API 및 승인 범위에 대한 자세한 내용은 projects.templates.launch를 참조하세요.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "jobName": "JOB_NAME",
   "parameters": {
       "driverClassName": "DRIVER_CLASS_NAME",
       "connectionURL": "JDBC_CONNECTION_URL",
       "driverJars": "DRIVER_PATHS",
       "username": "CONNECTION_USERNAME",
       "password": "CONNECTION_PASSWORD",
       "connectionProperties": "CONNECTION_PROPERTIES",
       "statement": "SQL_STATEMENT",
       "inputSubscription": "INPUT_SUBSCRIPTION",
       "outputDeadletterTopic": "OUTPUT_DEADLETTER_TOPIC",
       "KMSEncryptionKey":"KMS_ENCRYPTION_KEY"
   },
   "environment": { "zone": "us-central1-f" },
}

다음을 바꿉니다.

  • PROJECT_ID: Dataflow 작업을 실행하려는 Google Cloud 프로젝트 ID
  • JOB_NAME: 선택한 고유한 작업 이름
  • VERSION: 사용할 템플릿 버전

    다음 값을 사용할 수 있습니다.

  • LOCATION: Dataflow 작업을 배포할 리전(예: us-central1)
  • DRIVER_CLASS_NAME: 드라이버 클래스 이름입니다.
  • JDBC_CONNECTION_URL: JDBC 연결 URL
  • DRIVER_PATHS: JDBC 드라이버의 쉼표로 구분된 Cloud Storage 경로
  • CONNECTION_USERNAME: JDBC 연결 사용자 이름
  • CONNECTION_PASSWORD: JDBC 연결 비밀번호
  • CONNECTION_PROPERTIES: JDBC 연결 속성(필요한 경우)
  • SQL_STATEMENT: 데이터베이스에 대해 실행할 SQL 문
  • INPUT_SUBSCRIPTION: 읽어올 Pub/Sub 입력 구독
  • OUTPUT_DEADLETTER_TOPIC: 전달할 수 없는 메시지를 전달할 Pub/Sub
  • KMS_ENCRYPTION_KEY: Cloud KMS 암호화 키

다음 단계