Openflow Connector for Google BigQuery 정보¶
참고
이 커넥터에는 `Snowflake Connector 약관<https://www.snowflake.com/legal/snowflake-connector-terms/>`_이 적용됩니다.
Openflow Connector for Google BigQuery 는 Google BigQuery 프로젝트를 Snowflake에 연결하고 일정에 따라 선택한 데이터 세트, 테이블, 뷰에서 데이터를 복제합니다. 커넥터는 각 테이블에 대해 초기 전체 로드를 수행한 후 BigQuery의 네이티브 변경 내용 추적 기능을 사용하여 증분 업데이트를 수행합니다. 뷰는 자르기 및 로드 전략을 사용하여 복제됩니다.
사용 사례¶
커넥터는 다음 사용 사례를 지원합니다.
Snowflake에 복제: 다운스트림 분석 및 모델링을 위해BigQuery에서 Snowflake로 데이터 세트를 지속적으로 미러링합니다. 증분 변경 사항은 10분의 지연 기간을 두고 일정에 따라 적용됩니다.
선택적 복제: 제어 기능이 있는 광범위한 범위를 위해 이름 또는 정규식 필터를 사용하여 포함할 리전, 데이터 세트, 테이블, 뷰를 정의합니다.
마이그레이션 및 변경 사항 캡처: 마이그레이션을 위해 일회성 스냅샷 로드를 수행한 다음 BigQuery의 변경 기록을 통해 증분 동기화를 실행하여 테이블을 동기화 상태로 유지합니다.
뷰 복제: 구성 가능한 일정에 따라 자르기 및 로드 전략을 사용하여 표준 및 구체화된 복제 BigQuery 뷰를 Snowflake에 복제합니다.
테이블 복제 수명 주기¶
테이블의 복제 주기는 스키마 검색 및 데이터의 초기 스냅샷 로드로 시작됩니다. 데이터가 Snowflake에 수집된 후 주기가 증분 동기화로 전환됩니다.
스키마 자체 검사: 커넥터는 소스 테이블의 스키마를 검색하고, 해당 데이터 타입의 유효성을 검사하고, Snowflake에서 해당 대상 스키마와 테이블을 생성합니다.
스냅샷 로드: 스키마와 테이블을 생성한 후 커넥터는 BigQuery 테이블에서 Snowflake로 모든 기존 데이터의 전체 복사를 수행합니다. 이 프로세스는 구성의 각 테이블에 대해 순차적으로 실행됩니다.
증분 동기화: 초기 로드가 완료되면 테이블이 예약된 증분 동기화 모드로 전환됩니다. 각 실행에서 커넥터는 BigQuery의 CHANGES 함수를 사용하여 마지막 동기화 이후 발생한 행 수준 변경(삽입, 업데이트, 삭제)의 저널을 읽습니다. 그런 다음 이러한 변경 사항을 가져와 Snowflake의 대상 테이블에 병합합니다.
Openflow 요구사항¶
최소 런타임 크기는 ``Medium``이어야 합니다. 대규모 데이터 볼륨을 복제하는 경우 더 큰 런타임 및 다중 노드 Openflow 설정을 사용합니다.
제한 사항¶
BigQuery는 소스 데이터를 가져오는 데 사용되는 데이터 스트림이 최소 6시간 동안 유효함을 보장합니다. 따라서 데이터 스트림이 만료되지 않도록 하려면 소스 테이블을 읽는 프로세스를 6시간 이내에 완료해야 합니다. 100GB보다 큰 데이터 볼륨이 있는 테이블을 수집할 때는 더 큰 다중 노드 런타임을 사용해야 합니다.
BigQuery의 BIGNUMERIC 유형은 Snowflake의 NUMBER 유형(38자리)보다 높은 전체 자릿수(최대 76자리)를 지원합니다. 커넥터는 Snowflake 제한을 초과하는 BIGNUMERIC 열에서 값을 수집할 수 없습니다.
커넥터는 외부 테이블 복제를 지원하지 않습니다.
뷰 복제는 자르기 및 로드 전략만 사용합니다. 증분 동기화(CDC)는 뷰에 지원되지 않습니다.
증분 동기화에는 업데이트와 삭제를 올바르게 처리하기 위한 기본 키가 필요합니다. 기본 키가 없는 테이블의 경우 커넥터는 삭제를 지원하지 않으며 업데이트를 새 삽입으로 처리합니다.
참고
기본 키 제약 조건이 충족되는지 확인해야 합니다. 기본 키로 표시된 필드가 고유하지 않은 경우 증분 모드 중에 데이터 불일치가 발생할 수 있습니다.
커넥터는 증분 업데이트를 위해 `BigQuery의 CHANGES <https://cloud.google.com/bigquery/docs/reference/standard-sql/time-series-functions#changes>`_를 사용합니다. 이 함수는 테이블 기록의 마지막 10분을 쿼리할 수 없으므로 증분 모드에서 복제된 데이터는 소스보다 최소 10분의 지연이 있습니다.
증분 동기화 프로세스는 BigQuery CHANGES 함수로 인해 최대 24시간 데이터 윈도우로 제한됩니다. 테이블의 복제 지연이 이 기간을 초과하면 커넥터는 변경 윈도우를 24시간으로 잘라 동기화를 진행합니다. 이 잘림으로 인해 데이터가 손실될 수 있습니다.
커넥터는 BigQuery CHANGES 함수의 다른 모든 제한 사항을 상속합니다. 자세한 내용은 `BigQuery CHANGES 함수 설명서 <https://cloud.google.com/bigquery/docs/reference/standard-sql/time-series-functions#changes>`_를 참조하세요.
뷰 복제¶
커넥터는 BigQuery에서 Snowflake로의 표준 뷰 및 구체화된 뷰 복제를 지원합니다. 테이블 복제와 달리 뷰는 증분 동기화(CDC)를 지원하지 않습니다. 대신, 커넥터는 잘라내기 및 로드 전략을 사용합니다. 즉, 각 동기화 주기에서 커넥터는 Snowflake 대상 테이블의 데이터를 소스 뷰의 현재 내용으로 완전히 바꿉니다.
뷰 동기화 빈도는 뷰 동기화 빈도 매개 변수를 사용하여 테이블 증분 동기화 빈도와 별도로 구성됩니다. 실행은 겹치지 않습니다. 주기가 구성된 간격보다 오래 걸리는 경우 다음 실행은 이전 실행이 완료될 때까지 기다립니다.
포함된 뷰 이름 및 포함된 뷰 이름 정규식 매개 변수를 사용하여 복제할 뷰를 필터링할 수 있습니다. 이러한 필터는 복제를 위해 선택한 모든 데이터 세트에 적용됩니다.
커넥터는 뷰 수집 중에 BigQuery에 임시 테이블을 생성합니다. 임시 테이블 데이터 세트 매개 변수를 사용하여 이러한 임시 테이블에 대한 전용 데이터 세트를 지정합니다. 임시 테이블에는 별도의 데이터 세트를 사용하고 수집된 데이터 세트는 이 목적으로 사용하지 않는 것이 좋습니다.
데이터 타입 매핑¶
커넥터는 BigQuery 데이터 타입을 해당 Snowflake 데이터 타입으로 매핑합니다.
BigQuery 데이터 타입 |
Snowflake 데이터 타입 |
|---|---|
BIGNUMERIC |
NUMBER |
NUMERIC |
NUMBER |
GEOGRAPHY |
VARCHAR |
DATETIME |
TIMESTAMP_NTZ |
JSON |
OBJECT |
STRUCT |
OBJECT |
RANGE |
OBJECT |
INTERVAL |
OBJECT |
TIMESTAMP |
TIMESTAMP_NTZ |
DATE |
DATE |
TIME |
TIME |
INT64 / INTEGER |
NUMBER |
FLOAT64 |
FLOAT |
BOOL / BOOLEAN |
BOOLEAN |
STRING |
VARCHAR |
BYTES |
BINARY |
ARRAY |
ARRAY |
Google BigQuery의 데이터 변경 사항 추적¶
커넥터의 증분 동기화 기능은 `BigQuery의 네이티브 CHANGES 함수 <https://cloud.google.com/bigquery/docs/reference/standard-sql/time-series-functions#changes>`_를 기반으로 합니다. 소스 테이블에서 변경 기록을 활성화하면 BigQuery는 모든 행 수준 수정 사항(삽입, 업데이트, 삭제)의 내부 저널을 유지 관리합니다.
커넥터는 구성된 증분 동기화 빈도 일정에 따라 이 저널을 쿼리하여 변경 사항 피드를 검색합니다. 커넥터는 이러한 변경 사항을 동일한 BigQuery 데이터 세트 내의 저널 테이블로 구체화합니다. 이 저널 테이블은 일관된 명명 규칙(<sourceTableName>_<incremental_number>_<hash>_journal)을 따릅니다.
이러한 저널 테이블은 복제 프로세스 중에 커넥터에 의해 전적으로 관리되며 Snowflake의 최종 대상 테이블에 데이터를 병합하는 데 사용됩니다.
경고
어떤 식으로든 저널 테이블을 수정하지 마세요. 저널 테이블을 수정하면 동기화 프로세스가 중단되고 데이터 무결성 문제가 발생할 수 있습니다.
병합 작업은 기본 키(PK)가 있는 테이블 및 없는 테이블에 대해 변경 사항을 다르게 처리합니다.
기본 키가 있는 테이블¶
기본 키가 있는 테이블의 경우 커넥터는 다음과 같이 데이터 변경 사항을 처리합니다.
기본 키가 없는 테이블¶
기본 키가 없는 테이블의 경우 커넥터는 다음과 같이 데이터 변경 사항을 처리합니다.
- 삽입 및 업데이트:
INSERT또는 ``UPDATE``로 식별된 행은 동일한 방식으로 처리되며 해당 Snowflake 테이블에 삽입됩니다.- 삭제:
지원 안 됨.
참고
커넥터는 열이 생성될 때 대상 테이블 스키마에 ``_SNOWFLAKE_DELETED``(BOOLEAN)를 자동으로 추가합니다.
구성된 동기화 빈도 일정과 실제 동기화 빈도¶
증분 동기화 빈도 일정에 따라 테이블 동기화 빈도가 결정됩니다. 지정한 일정이 테이블을 동기화하는 데 필요한 실제 시간보다 더 자주 발생하면 시스템이 지정한 일정을 따르지 않습니다. 이는 증분 주기가 순차적으로 실행되어야 하고 중첩될 수 없기 때문에 발생합니다.
스키마 진화¶
커넥터는 소스 BigQuery 테이블에서 몇 가지 일반적인 스키마 변경 사항을 지원합니다. 다음 스키마 변경 사항이 감지되어 Snowflake 대상 테이블에 전파됩니다.
- 열 추가:
BigQuery에 추가된 새 열은 해당 Snowflake 테이블에 자동으로 추가됩니다.
- 열 삭제(일시 삭제):
열이 BigQuery에서 삭제된 경우 커넥터는 Snowflake에서 “일시 삭제”를 수행합니다. 열은 대상 테이블에서 삭제되지 않습니다. 대신, 열 이름 끝에
_SNOWFLAKE_DELETED접미사를 추가하여 이름을 바꿉니다. 예를 들어, ``my_column``은 ``my_column_SNOWFLAKE_DELETED``가 됩니다. 이를 통해 Snowflake의 과거 데이터가 보존됩니다.- 열 이름 바꾸기:
열 이름 바꾸기 작업은 2단계 프로세스입니다.
원래 열은 “일시 삭제”되고
_SNOWFLAKE_DELETED접미사가 추가되어 이름이 바뀝니다.새 이름의 새 열이 Snowflake 테이블에 추가됩니다.
- 기본 키 수정:
기본 키 추가, 제거, 변경이 지원됩니다.
- 데이터 타입 변경 사항:
기존 유형을 확장하는 변경 사항만 허용됩니다. 열의 유형을 좁히거나 호환되지 않는 유형으로 변환하는 변경은 지원되지 않으며 해당 테이블에 대한 복제가 실패하게 됩니다.
다음 단계¶
커넥터 설정 방법에 대한 자세한 내용은 다음 항목을 참조하세요.