쿼리 성능을 향상시키고 비용을 제어하려면 BigQuery 테이블을 더 작은 세그먼트로 분할해야 할 수 있습니다. Datastream은 BigQuery의 테이블 파티션 나누기를 지원하지 않으므로 스트림을 시작하기 전 파티션을 수동으로 추가해야 합니다. BigQuery의 파티셔닝에 대한 일반적인 내용은 파티션을 나눈 테이블 소개를 참조하세요.
BigQuery에서 테이블 파티션 나누기
BigQuery에서 테이블의 파티션을 나누려면 사용 사례에 따라 다음 섹션에 설명된 옵션 중 하나를 사용합니다.
옵션 1: 테이블이 BigQuery에 이미 있으면 스트림에 포함됨
- 스트림의 소스 구성에서 테이블을 제외합니다. 소스 구성에서 객체를 포함하거나 제외하는 방법에 대한 자세한 내용은 소스 데이터베이스 구성을 참조하세요.
- Datastream이 테이블의 모든 이벤트 처리를 완료했는지 확인할 때까지 몇 분 정도 기다립니다.
- BigQuery에서 파티션을 나눈 테이블을 만듭니다. 원래 BigQuery 테이블에 있는 데이터를 유지하려면 테이블에 다른 임시 이름을 지정합니다.
- 원본 테이블의 데이터를 파티션을 나눈 새 테이블로 복사합니다.
- 원본 테이블을 삭제하거나 이름을 바꿉니다.
- 새 테이블의 임시 이름을 원래 테이블의 이름으로 변경합니다.
- 스트림 구성에 소스 테이블을 추가합니다.
옵션 2: BigQuery에 테이블이 없음
다음 방법 중 하나를 사용하여 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)
파티션을 나눈 테이블을 만든 후
max_staleness
값이 요구사항에 따라 설정되었는지 확인합니다. 값을 설정하지 않으면 기본값0
이 설정됩니다. 자세한 내용은max_staleness
옵션으로 BigQuery 테이블 사용을 참조하세요.선택적으로 스트림에 수동 백필을 설정한 경우 테이블에 대한 백필을 시작합니다.