Datastream을 사용하여 BigQuery에서 파티션을 나눈 테이블로 데이터 수집

쿼리 성능을 향상시키고 비용을 제어하려면 BigQuery 테이블을 더 작은 세그먼트로 분할해야 할 수 있습니다. Datastream은 BigQuery의 테이블 파티션 나누기를 지원하지 않으므로 스트림을 시작하기 전 파티션을 수동으로 추가해야 합니다. BigQuery의 파티셔닝에 대한 일반적인 내용은 파티션을 나눈 테이블 소개를 참조하세요.

BigQuery에서 테이블 파티션 나누기

BigQuery에서 테이블의 파티션을 나누려면 사용 사례에 따라 다음 섹션에 설명된 옵션 중 하나를 사용합니다.

옵션 1: 테이블이 BigQuery에 이미 있으면 스트림에 포함됨

  1. 스트림의 소스 구성에서 테이블을 제외합니다. 소스 구성에서 객체를 포함하거나 제외하는 방법에 대한 자세한 내용은 소스 데이터베이스 구성을 참조하세요.
  2. Datastream이 테이블의 모든 이벤트 처리를 완료했는지 확인할 때까지 몇 분 정도 기다립니다.
  3. BigQuery에서 파티션을 나눈 테이블을 만듭니다. 원래 BigQuery 테이블에 있는 데이터를 유지하려면 테이블에 다른 임시 이름을 지정합니다.
  4. 원본 테이블의 데이터를 파티션을 나눈 새 테이블로 복사합니다.
  5. 원본 테이블을 삭제하거나 이름을 바꿉니다.
  6. 새 테이블의 임시 이름을 원래 테이블의 이름으로 변경합니다.
  7. 스트림 구성에 소스 테이블을 추가합니다.

옵션 2: BigQuery에 테이블이 없음

  1. 다음 방법 중 하나를 사용하여 BigQuery에 테이블을 만듭니다.

    • BigQuery 마이그레이션 툴킷을 사용합니다.
    • Datastream 호환 BigQuery 테이블을 수동으로 만듭니다. 예를 들어 테이블을 만들고 TIMESTAMP 열을 기준으로 데이터의 파티션을 나누려면 다음과 유사한 쿼리를 사용하면 됩니다.

      CREATE TABLE dataset.partitioned_table (
      'id' INT64,
      'name' STRING
      'update_date' DATETIME,
      'datastream_metadata' STRUCT<'uuid' STRING, 'source_timestamp' INT64>,
      PRIMARY KEY ('id') NOT ENFORCED
      )
      PARTITION BY TIMESTAMP(update_date)
      
  2. 파티션을 나눈 테이블을 만든 후 max_staleness 값이 요구사항에 따라 설정되었는지 확인합니다. 값을 설정하지 않으면 기본값 0이 설정됩니다. 자세한 내용은 max_staleness 옵션으로 BigQuery 테이블 사용을 참조하세요.

  3. 스트림 구성에 소스 테이블을 추가합니다.

  4. 선택적으로 스트림에 수동 백필을 설정한 경우 테이블에 대한 백필을 시작합니다.