Snowflake에서 BigQuery로 마이그레이션
이 문서에서는 Snowflake에서 BigQuery로 마이그레이션하는 방법을 소개합니다. 다음 섹션에서는 BigQuery 마이그레이션을 수행하는 데 도움이 되는 마이그레이션 도구를 소개하고, 마이그레이션을 계획하는 데 도움이 되도록 Snowflake와 BigQuery 간의 몇 가지 차이점을 설명합니다.
Snowflake에서 BigQuery로 워크플로 마이그레이션
BigQuery 마이그레이션을 계획할 때는 Snowflake에서 사용하는 다양한 워크플로와 각 워크플로를 개별적으로 마이그레이션하는 방법을 고려하세요. 기존 작업에 미치는 영향을 최소화하려면 SQL 쿼리를 BigQuery로 마이그레이션한 다음 스키마와 코드를 마이그레이션하는 것이 좋습니다.
SQL 쿼리 마이그레이션
SQL 쿼리를 마이그레이션하기 위해 BigQuery Migration Service는 Snowflake SQL 쿼리를 GoogleSQL SQL로 자동 변환하는 다양한 SQL 변환 기능을 제공합니다. 예를 들어 일괄 SQL 변환기를 사용하여 쿼리를 일괄적으로 변환하고, 대화형 SQL 변환기를 사용하여 개별 쿼리를 변환하고, SQL 변환 API를 사용할 수 있습니다. 이러한 변환 서비스에는 SQL 쿼리 이전 프로세스를 더욱 간소화하는 Gemini로 향상된 기능도 포함되어 있습니다.
SQL 쿼리를 번역할 때 번역된 쿼리를 주의 깊게 검토하여 데이터 유형과 테이블 구조가 올바르게 처리되었는지 확인하세요. 이를 위해 다양한 시나리오와 데이터로 광범위한 테스트 사례를 만드는 것이 좋습니다. 그런 다음 BigQuery에서 이러한 테스트 사례를 실행하여 결과를 원래 Snowflake 결과와 비교합니다. 차이가 있는 경우 변환된 쿼리를 분석하고 수정합니다.
스키마 및 코드 마이그레이션
Snowflake에서 스키마와 데이터를 마이그레이션하려면 BigQuery Data Transfer Service의 Snowflake 커넥터를 사용하여 데이터 전송을 설정하세요. 데이터 전송을 설정할 때 포함할 특정 Snowflake 테이블을 지정할 수 있으며, 전송 중에 커넥터가 테이블 스키마와 데이터 유형을 자동으로 감지하도록 할 수도 있습니다.
Snowflake 데이터 전송 설정에 대한 자세한 내용은 Snowflake 전송 예약을 참고하세요.
BigQuery 보안 기능
Snowflake에서 BigQuery로 마이그레이션할 때는Google Cloud 의 보안 처리 방법이 Snowflake와 어떻게 다른지 고려해야 합니다.
BigQuery의 보안은 Google Cloud의 Identity and Access Management(IAM)와 본질적으로 연결되어 있습니다. IAM 권한은 리소스에 대해 허용되는 작업을 정의하며 Google Cloud 수준에서 적용되므로 보안 관리에 대한 중앙 집중식의 일관된 접근 방식을 제공합니다. 다음은 Google Cloud의 주요 보안 기능입니다.
- 통합 보안: BigQuery는 Google Cloud의 보안 기능을 활용합니다. 여기에는 강력하고 원활한 보안 통합을 위한 세분화된 액세스 제어를 지원하는 IAM이 포함됩니다.
- 리소스 수준 보안: IAM은 리소스 수준 액세스 제어에 중점을 두어 다양한 BigQuery 리소스 및 서비스에 대한 권한을 사용자 및 그룹에 부여합니다. 이 접근 방식을 사용하면 사용자가 작업을 수행하는 데 필요한 권한만 갖도록 액세스 권한을 효과적으로 관리할 수 있습니다.
- 네트워크 보안: BigQuery는 Google Cloud의 강력한 네트워크 보안 기능(예: 가상 프라이빗 클라우드 및 비공개 연결)을 활용합니다.
Snowflake에서 BigQuery로 마이그레이션할 때는 다음 보안 관련 마이그레이션 요구사항을 고려하세요.
- IAM 구성: 기존 Snowflake 액세스 제어 정책과 일치하도록 BigQuery에서 IAM 역할과 권한을 구성해야 합니다. 여기에는 Snowflake 역할을 적절한 BigQuery IAM 역할 및 권한에 매핑하는 작업이 포함됩니다.
- 세분화된 액세스 제어: Snowflake에서 행 수준 또는 열 수준 보안을 사용하는 경우 승인된 뷰 또는 정책 태그를 사용하여 BigQuery에서 이에 상응하는 제어를 구현해야 합니다.
- 뷰 및 UDF 마이그레이션: 뷰 및 UDF를 마이그레이션할 때 연결된 보안 제어가 BigQuery의 승인된 뷰 및 승인된 UDF로 올바르게 변환되는지 확인합니다.
암호화
BigQuery는 기본적으로 저장 데이터와 전송 중 데이터를 암호화합니다. 암호화 키를 더 세밀하게 제어해야 하는 경우 BigQuery에서는 Cloud Key Management Service의 고객 관리 암호화 키를 지원합니다. 열 수준 암호화를 사용할 수도 있습니다.
BigQuery로 마이그레이션하는 동안과 마이그레이션 후 데이터 보안을 유지하려면 다음을 고려하세요.
- 키 관리: 고객 관리 키가 필요한 경우 Cloud Key Management Service에서 키 관리 전략을 수립하고 이러한 키를 사용하도록 BigQuery를 구성합니다.
- 데이터 마스킹/토큰화: 민감한 정보가 포함된 경우 데이터를 보호하기 위해 데이터 마스킹 또는 토큰화가 필요한지 평가합니다.
- 행 수준 보안: 승인된 뷰, 행 수준 보안 필터 또는 기타 적절한 방법을 사용하여 행 수준 보안을 구현합니다.
- 취약점 스캔 및 침투 시험: 정기적으로 취약점 스캔 및 침투 시험을 실행하여 BigQuery 환경의 보안 상황을 확인합니다.
역할
역할은 보안 가능한 객체에 대해 권한을 부여 및 취소할 수 있는 항목입니다.
IAM에서 권한은 역할로 그룹화됩니다. IAM은 세 가지 유형의 역할을 제공합니다.
- 기본 역할:
이러한 역할에는 소유자, 편집자, 뷰어 역할이 있습니다.Google Cloud 콘솔, Identity and Access Management API,
gcloud CLI를 사용해서 프로젝트 또는 서비스 리소스 수준에서 이러한 역할을 적용할 수 있습니다. 일반적으로 가장 강력한 보안을 위해서는 사전 정의된 역할을 사용해서 최소 권한의 원칙을 따르는 것이 좋습니다. - 사전 정의된 역할: 이러한 역할은 BigQuery와 같은 제품의 기능에 대해 보다 세부적인 액세스 권한을 제공하며 일반적인 사용 사례 및 액세스 제어 패턴을 지원합니다.
- 커스텀 역할: 이러한 역할은 사용자 지정 권한으로 구성됩니다.
액세스 제어
Snowflake를 사용하면 역할에 다른 역할을 부여하여 역할을 계층 구조로 만들 수 있습니다. IAM은 역할 계층 구조를 지원하지 않지만 리소스 계층 구조를 구현합니다. IAM 계층 구조에는 조직 수준, 폴더 수준, 프로젝트 수준, 리소스 수준이 포함됩니다. 계층 구조의 모든 수준에서 IAM 역할을 설정할 수 있으며 해당 상위 리소스의 모든 정책이 리소스에 상속됩니다.
BigQuery는 테이블 수준 액세스 제어를 지원합니다. 테이블 수준 권한은 테이블 또는 뷰에 액세스할 수 있는 사용자, 그룹, 서비스 계정을 결정합니다. 사용자에게 전체 데이터 세트에 대한 액세스 권한을 부여하지 않고도 특정 테이블 또는 뷰에 대한 액세스 권한을 사용자에게 부여할 수 있습니다.
또한 보다 세부적인 액세스를 위해서는 열 수준 액세스 제어 또는 행 수준 보안도 사용할 수 있습니다. 이 유형의 제어는 정책 태그 또는 유형 기반의 데이터 분류를 사용하여 민감한 열에 대해 세분화된 액세스 권한을 제공합니다.
또한 지정된 사용자가 기본 테이블에 대해 읽기 액세스 권한이 없어도 뷰를 쿼리할 수 있도록 보다 세분화된 액세스 제어를 위해 데이터 액세스를 제한하도록 승인된 뷰를 만들 수 있습니다.
기타 Snowflake 기능 마이그레이션
BigQuery로의 마이그레이션을 계획할 때 다음 Snowflake 기능을 고려하세요. 경우에 따라 Google Cloud 에서 다른 서비스를 사용하여 마이그레이션을 완료할 수 있습니다.
시간 이동: BigQuery에서는 시간 이동을 사용해서 이전 7일 이내의 어느 지점에서든 데이터에 액세스할 수 있습니다. 7일 이전의 데이터에 액세스해야 할 경우 예약된 스냅샷 정기적으로 내보내기를 고려하세요.
스트림: BigQuery는 Datastream에서 변경 데이터 캡처(CDC)를 지원합니다. 또한 Debezium과 같은 CDC 소프트웨어를 사용하여 Dataflow로 BigQuery에 레코드를 기록할 수 있습니다. BigQuery를 사용해서 CDC 파이프라인을 수동으로 설계하는 방법은 BigQuery에 데이터 웨어하우스 마이그레이션: 변경 데이터 캡처(CDC)를 참조하세요.
태스크: BigQuery를 사용하면 쿼리 및 스트림을 예약하거나 Datastream을 사용해서 쿼리에 통합을 스트리밍할 수 있습니다.
외부 함수: BigQuery는 Cloud Run Functions를 통해 외부 함수 호출을 지원합니다. 함수가 BigQuery 내부에서 실행되더라도 SQL UDF와 같은 사용자 정의 함수(UDF)를 사용할 수도 있습니다.
지원되는 데이터 유형, 속성 및 파일 형식
Snowflake와 BigQuery는 이름이 다른 경우도 있지만 대부분 동일한 데이터 유형을 지원합니다. Snowflake 및 BigQuery에서 지원되는 전체 데이터 유형 목록은 데이터 유형을 참고하세요. 대화형 SQL 변환기, SQL 변환 API, 일괄 SQL 변환기와 같은 SQL 변환 도구를 사용하여 다양한 SQL 언어를 GoogleSQL로 변환할 수도 있습니다.
BigQuery에서 지원되는 데이터 유형에 대한 자세한 내용은 GoogleSQL 데이터 유형을 참고하세요.
Snowflake는 다음 파일 형식으로 데이터를 내보낼 수 있습니다. 다음 형식을 BigQuery에 직접 로드할 수 있습니다.
- Cloud Storage에서 CSV 데이터 로드.
- Cloud Storage에서 Parquet 데이터 로드
- Cloud Storage에서 JSON 데이터 로드.
- Apache Iceberg에서 데이터 쿼리
마이그레이션 도구
다음 목록은 Snowflake에서 BigQuery로 데이터를 마이그레이션하는 데 사용할 수 있는 도구를 보여줍니다. Snowflake 마이그레이션 파이프라인에서 이러한 도구를 함께 사용하는 방법의 예는 Snowflake 마이그레이션 파이프라인 예시를 참고하세요.
COPY INTO <location>명령어: Snowflake에서 이 명령어를 사용하여 Snowflake 테이블에서 지정된 Cloud Storage 버킷으로 직접 데이터를 추출합니다. 엔드 투 엔드 예시는 GitHub에서 Snowflake에서 BigQuery로(snowflake2bq)를 참조하세요.- Apache Sqoop: Snowflake에서 HDFS 또는 Cloud Storage로 데이터를 추출하려면 Sqoop 및 Snowflake의 JDBC 드라이버를 사용하여 Hadoop 작업을 제출합니다. Sqoop는 Dataproc 환경에서 실행됩니다.
- Snowflake JDBC: JDBC를 지원하는 대부분의 클라이언트 도구 또는 애플리케이션에 이 드라이버를 사용합니다.
다음 일반 도구를 사용해서 Snowflake에서 BigQuery로 데이터를 마이그레이션할 수 있습니다.
- Snowflake용 BigQuery Data Transfer Service 커넥터 (미리보기): Cloud Storage 데이터를 BigQuery로 자동화된 방식으로 일괄 전송할 수 있습니다.
- Google Cloud CLI: 이 명령줄 도구를 사용해서 다운로드한 Snowflake 파일을 Cloud Storage에 복사합니다.
- bq 명령줄 도구: 이 명령줄 도구를 사용해서 BigQuery와 상호작용합니다. 일반적인 사용 사례에는 BigQuery 테이블 스키마 만들기, 테이블에 Cloud Storage 데이터 로드, 쿼리 실행이 포함됩니다.
- Cloud Storage 클라이언트 라이브러리: Cloud Storage 클라이언트 라이브러리가 사용되는 커스텀 도구를 사용해서 다운로드한 Snowflake 파일을 Cloud Storage에 복사합니다.
- BigQuery 클라이언트 라이브러리: BigQuery 클라이언트 라이브러리로 빌드된 커스텀 도구를 사용해서 BigQuery와 상호작용합니다.
- BigQuery 쿼리 스케줄러: 이 기본 제공되는 BigQuery 기능을 사용해서 반복되는 SQL 쿼리를 예약합니다.
- Cloud Composer: 이 완전 관리형 Apache Airflow 환경을 사용해서 BigQuery 로드 작업 및 변환을 조정합니다.
BigQuery에 데이터 로드에 대한 자세한 내용은 BigQuery에 데이터 로드를 참조하세요.
가격 책정
Snowflake 마이그레이션을 계획할 때는 BigQuery에서 데이터를 전송하고, 데이터를 저장하고, 서비스를 사용하는 비용을 고려하세요. 자세한 내용은 가격 책정을 참조하세요.
Snowflake 또는 AWS에서 데이터를 이동하는 데 이그레스 비용이 발생할 수 있습니다. 리전 간에 데이터를 전송하거나 서로 다른 클라우드 제공업체 간에 데이터를 전송할 때 추가 비용이 발생할 수도 있습니다.
시작하기
다음 섹션에서는 Snowflake에서 BigQuery로의 마이그레이션 프로세스를 요약합니다.
마이그레이션 평가 실행
Snowflake에서 BigQuery로 마이그레이션할 때 BigQuery 마이그레이션 평가 도구를 실행하여 Snowflake에서 BigQuery로 데이터 웨어하우스를 이동할 수 있는지와 이동했을 때의 이점을 평가하는 것이 좋습니다. 이 도구는 현재 Snowflake 환경을 이해하고 성공적인 마이그레이션에 필요한 작업을 추정하는 구조화된 접근 방식을 제공합니다.
BigQuery 마이그레이션 평가 도구를 실행하면 다음 섹션이 포함된 평가 보고서가 생성됩니다.
- 기존 시스템 보고서: 데이터베이스, 스키마, 테이블의 수, 총 크기(TB)를 포함한 기존 Snowflake 시스템 및 사용량의 개요를 제공합니다. 또한 크기별로 스키마를 나열하거나 잠재적인 준최적 리소스 사용률(쓰기가 없거나 읽기가 적은 테이블)을 알려줍니다.
- BigQuery 안정적인 상태 변환 제안: 마이그레이션 후 예상되는 BigQuery 시스템 상태를 보여줍니다. 여기에는 BigQuery에서 워크로드를 최적화하고 낭비를 방지하기 위한 추천이 포함되어 있습니다.
- 마이그레이션 계획: 마이그레이션 작업 자체에 대한 정보를 제공합니다. 예를 들면 기존 시스템에서 BigQuery 안정 상태로 전환입니다. 이 섹션에는 자동으로 변환된 쿼리 수와 각 테이블을 BigQuery로 이동하는 데 예상되는 시간이 포함됩니다.
마이그레이션 평가 결과에 대한 자세한 내용은 Looker Studio 보고서 검토를 참조하세요.
마이그레이션 검증
Snowflake 데이터를 BigQuery로 마이그레이션한 후 데이터 검증 도구(DVT)를 실행하여 새로 마이그레이션된 BigQuery 데이터에 대한 데이터 검증을 수행합니다. DVT는 테이블 수준부터 행 수준까지 다양한 기능을 검증하여 마이그레이션된 데이터가 의도한 대로 작동하는지 확인합니다.