Snowflake에서 BigQuery로 마이그레이션 - 소개
이 문서에서는 Snowflake에서 BigQuery로 데이터를 마이그레이션하는 방법을 소개합니다.
BigQuery로의 마이그레이션을 지원하기 위해 Google Cloud 에서는 데이터 웨어하우스를 BigQuery로 마이그레이션하기 위한 포괄적인 솔루션인 BigQuery 마이그레이션 서비스를 제공합니다. 마이그레이션 서비스는 평가 및 계획, SQL 변환, 데이터 전송, 데이터 검증을 비롯한 마이그레이션의 각 단계를 지원하는 기능을 제공합니다. 자세한 내용은 BigQuery 마이그레이션 서비스 소개를 참고하세요.
기능 비교
다음 섹션에서는 BigQuery와 Snowflake의 주요 차이점과 유사점을 강조하고 BigQuery만의 몇 가지 기능을 소개합니다.
용어
다음 표에서는 Snowflake 용어와 BigQuery 용어를 비교해서 보여줍니다.
Snowflake | BigQuery |
---|---|
데이터베이스 | 데이터 세트 |
스키마 | 스키마 |
보기 | 뷰 |
보안 뷰 | 승인된 뷰 |
가상 웨어하우스 | 예약 |
구체화된 뷰 | 구체화된 뷰 |
마이크로 파티션 | 파티션 나누기 |
클러스터링 | 클러스터링 |
보안 강화된 사용자 정의 함수(UDF) | 승인된 UDF |
BigQuery 아키텍처
BigQuery는 확장성이 뛰어난 아키텍처를 갖춘 분석 데이터 웨어하우스입니다. BigQuery는 스토리지와 컴퓨팅을 분리하여 필요에 따라 이러한 구성요소를 독립적으로 확장할 수 있습니다. BigQuery의 아키텍처에 대한 자세한 내용은 BigQuery 개요를 참고하세요. 다음은 데이터 이전 프로세스와 관련된 BigQuery의 몇 가지 주요 기능입니다.
BigQuery는 관리 테이블을 사용하며 서드 파티 데이터 전송을 위한 유연한 옵션을 제공합니다. 여기에는 Parquet, Avro, ORC, CSV와 같은 휴대용 형식으로 Cloud Storage에서 직접 수집하는 것이 포함됩니다.
- BigQuery는 Apache Iceberg 테이블도 지원합니다. Iceberg는 데이터 레이크하우스 기능을 BigQuery에 제공하여 스키마 변경, 시간 이동, ACID 트랜잭션을 제공하는 개방형 테이블 형식입니다. 이를 통해 Iceberg를 사용하는 다른 시스템과 원활하게 통합할 수 있으며 데이터에 대한 유연성과 제어력이 향상됩니다.
BigQuery를 사용하면 테이블을 만들 때 명시적 파티셔닝 및 클러스터링을 정의할 수 있습니다. 이를 통해 데이터 조직을 세부적으로 제어할 수 있으므로 전략적으로 파티셔닝 및 클러스터링하여 쿼리 성능을 최적화하고 비용을 절감하며 특정 분석 요구사항에 맞게 데이터 레이아웃을 맞춤설정할 수 있습니다.
- 파티션 및 클러스터 추천자를 사용하여 BigQuery에서 프로젝트의 워크로드를 기반으로 파티셔닝 및 클러스터링 구성을 제안하도록 할 수도 있습니다.
BigQuery는 컴퓨팅 리소스를 자동으로 처리합니다. 가상 머신을 프로비저닝하거나 관리할 필요가 없습니다.
- 예측 가능한 워크로드의 경우 BigQuery는 예약을 제공하여 저렴한 비용으로 컴퓨팅 용량을 미리 예약할 수 있습니다. 이는 리소스 요구를 예측할 수 있는 일관된 워크로드에 유용할 수 있습니다.
- 마이그레이션 중에 Snowflake 사용 패턴을 분석하여 컴퓨팅 요구사항을 파악하고 BigQuery에서 주문형 가격 책정인지 예약 사용인지 가장 비용 효율적인 접근 방식을 결정하는 데 도움을 받으세요.
BigQuery 사용자 인터페이스
BigQuery 인터페이스는 Google Cloud 콘솔에 내장되어 있습니다.
BigQuery에는 bq 명령줄 도구라는 Python 기반 명령줄 도구도 있습니다.
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의 강력한 네트워크 보안 기능(예: Virtual Private 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 함수를 통해 외부 함수 호출을 지원합니다. 함수가 BigQuery 내부에서 실행되더라도 SQL UDF와 같은 사용자 정의 함수 (UDF)를 사용할 수도 있습니다.
시작하기
다음 섹션에서는 Snowflake에서 BigQuery로의 마이그레이션 프로세스를 요약합니다.
마이그레이션 평가 실행
Snowflake에서 BigQuery로 마이그레이션할 때 먼저 BigQuery 마이그레이션 평가 도구를 실행하여 Snowflake에서 BigQuery로 데이터 웨어하우스를 이동하는 것이 가능한지, 그리고 이동할 경우 어떤 이점이 있는지 평가하는 것이 좋습니다. 이 도구는 현재 Snowflake 환경을 이해하고 성공적인 마이그레이션에 필요한 노력을 추정하는 구조화된 접근 방식을 제공합니다.
BigQuery 마이그레이션 평가 도구를 실행하면 다음 섹션이 포함된 평가 보고서가 생성됩니다.
- 기존 시스템 보고서: 데이터베이스 수, 스키마 수, 테이블 수, 총 크기(TB)를 포함하여 기존 Snowflake 시스템 및 사용량의 스냅샷입니다. 또한 크기별로 스키마를 나열하고 쓰기가 없거나 읽기가 적은 테이블과 같은 잠재적인 준최적 리소스 사용률을 가리킵니다.
- BigQuery 안정적인 상태 변환 제안: 마이그레이션 후 BigQuery의 시스템을 보여줍니다. 여기에는 BigQuery에서 워크로드를 최적화하고 낭비를 방지하기 위한 추천이 포함되어 있습니다.
- 마이그레이션 계획: 마이그레이션 작업 자체에 대한 정보를 제공합니다. 예를 들면 기존 시스템에서 BigQuery 안정 상태로 전환입니다. 이 섹션에는 자동으로 변환된 쿼리 수와 각 테이블을 BigQuery로 이동하는 데 예상되는 시간이 포함됩니다.
마이그레이션 평가 결과에 대한 자세한 내용은 Looker Studio 보고서 검토를 참고하세요.
Snowflake에서 BigQuery로 마이그레이션 파이프라인 설정
마이그레이션 평가 결과를 검토한 후 마이그레이션 파이프라인을 설정하여 Snowflake 마이그레이션을 시작할 수 있습니다. 자세한 내용은 Snowflake에서 BigQuery로 마이그레이션 - 개요를 참고하세요.
마이그레이션 검증
Snowflake 데이터를 BigQuery로 이전한 후 데이터 유효성 검사 도구 (DVT)를 실행하여 새로 이전된 BigQuery 데이터에 대한 데이터 유효성 검사를 실행합니다. DVT는 테이블 수준에서 행 수준까지 다양한 기능을 검증하여 마이그레이션된 데이터가 의도한 대로 작동하는지 확인합니다.