외부 데이터 소스 소개
이 페이지에서는 BigQuery 외부에 저장된 데이터 쿼리의 개요를 제공합니다.
외부 데이터 소스는 데이터가 BigQuery 스토리지에 저장되어 있지 않더라도 BigQuery에서 직접 쿼리할 수 있는 데이터 소스입니다. 예를 들어 다른 Google Cloud 데이터베이스, Cloud Storage의 파일 또는 다른 클라우드 제품에 BigQuery에서 분석하려는 데이터가 있는데 마이그레이션 준비가 되지 않았을 수 있습니다.
외부 데이터 소스의 사용 사례에는 다음이 포함됩니다.
- ELT(extract-load-transform) 워크로드의 경우
CREATE TABLE ... AS SELECT
쿼리를 사용하여 한 번에 데이터를 로드 및 정리하고 정리된 결과를 BigQuery 스토리지에 씁니다. - 외부 데이터 소스에서 자주 변경되는 데이터와 BigQuery 테이블을 조인합니다. 외부 데이터 소스를 직접 쿼리하면 데이터가 변경될 때마다 BigQuery 스토리지를 새로고침할 필요가 없습니다.
BigQuery에서 외부 데이터를 쿼리하는 2가지 메커니즘으로는 외부 테이블과 통합 쿼리가 있습니다.
외부 테이블
외부 테이블은 메타데이터 및 스키마를 BigQuery 스토리지에 저장한다는 점에서 표준 BigQuery 테이블과 유사합니다. 하지만 데이터는 외부 소스에 있습니다.
외부 테이블은 데이터 세트 내에 포함되어 있으며 표준 BigQuery 테이블을 관리하는 것과 동일한 방식으로 관리합니다. 예를 들어 테이블 속성 보기, 액세스 제어 설정 등을 수행할 수 있습니다. 이러한 테이블을 쿼리할 수 있으며 대부분의 경우 다른 테이블과 조인할 수 있습니다.
외부 테이블에는 네 가지 종류가 있습니다.
- BigLake 테이블
- BigQuery Omni 테이블
- 객체 테이블
- BigLake 외의 외부 테이블
BigLake 테이블
BigLake 테이블을 사용하면 액세스 위임으로 외부 데이터 스토어의 구조화된 데이터를 쿼리할 수 있습니다. 액세스 위임은 BigLake 테이블에 대한 액세스 권한을 기본 데이터 스토어에 대한 액세스 권한과 분리합니다. 서비스 계정과 연결된 외부 연결은 데이터 스토어에 연결하는 데 사용됩니다. 이 서비스 계정이 데이터 스토어에서 데이터 가져오기를 처리하므로 사용자에게 BigLake 테이블에 대한 액세스 권한만 부여하면 됩니다. 이렇게 하면 행 수준 및 열 수준 보안을 포함하여 테이블 수준에서 세부 조정된 보안을 적용할 수 있습니다. Cloud Storage 기반 BigLake 테이블의 경우 동적 데이터 마스킹도 사용할 수 있습니다. Amazon S3 또는 Blob Storage 데이터가 있는 BigLake 테이블을 사용하는 멀티 클라우드 분석 솔루션에 대한 자세한 내용은 BigQuery Omni를 참조하세요.
자세한 내용은 BigLake 테이블 소개를 참조하세요.
객체 테이블
객체 테이블을 사용하면 Cloud Storage에서 구조화되지 않은 데이터를 분석할 수 있습니다. BigQuery ML을 사용하여 원격 함수로 분석하거나 추론을 수행한 다음 이러한 작업 결과를 BigQuery의 나머지 구조화된 데이터와 조인할 수 있습니다.
BigLake 테이블과 마찬가지로 객체 테이블은 액세스 위임을 사용하여 Cloud Storage 객체에 대한 액세스로부터 객체 테이블에 대한 액세스를 분리합니다. 서비스 계정과 연결된 외부 연결은 Cloud Storage에 연결하는 데 사용되므로 사용자에게 객체 테이블에 대한 액세스 권한만 부여하면 됩니다. 이렇게 하면 행 수준 보안을 적용하고 사용자가 액세스할 수 있는 객체를 관리할 수 있습니다.
자세한 내용은 객체 테이블 소개를 참조하세요.
BigLake 외의 외부 테이블
BigLake 외의 외부 테이블을 사용하면 외부 데이터 스토어에서 구조화된 데이터를 쿼리할 수 있습니다. BigLake 외의 외부 테이블을 쿼리하려면 외부 테이블과 외부 데이터 소스 모두에 대한 권한이 있어야 합니다. 예를 들어 Cloud Storage에서 데이터 소스를 사용하는 BigLake 외부 테이블을 쿼리하려면 다음 권한이 있어야 합니다.
bigquery.tables.getData
bigquery.jobs.create
storage.buckets.get
storage.objects.get
자세한 내용은 외부 테이블 소개를 참조하세요.
통합 쿼리
통합 쿼리를 사용하면 Spanner 또는 Cloud SQL 데이터베이스에 쿼리 문을 보내고 결과를 임시 테이블로 다시 가져올 수 있습니다. 통합 쿼리는 BigQuery Connection API를 사용하여 Spanner 또는 Cloud SQL에 연결을 설정합니다.
쿼리에서 EXTERNAL_QUERY
함수를 사용하여 쿼리 문을 외부 데이터베이스로 전송하며 이때 해당 데이터베이스의 SQL 언어를 사용합니다.
결과는 GoogleSQL 데이터 유형으로 변환됩니다.
자세한 내용은 통합 쿼리 소개를 참조하세요.
외부 데이터 소스 특성 비교
다음 표에서는 외부 데이터 소스의 동작을 비교해서 보여줍니다.
BigLake 테이블 | 객체 테이블 | BigLake 외의 외부 테이블 | 통합 쿼리 | |
---|---|---|---|---|
액세스 위임 사용 | 예, 서비스 계정 사용 | 예, 서비스 계정 사용 | 아니요 | 예, 데이터베이스 사용자 계정 사용(Cloud SQL만 해당) |
여러 소스 URI 기반 | 예 | 예 | 예(Cloud Storage만 해당) | 해당 없음 |
행 매핑 | 행은 파일 콘텐츠를 나타냄 | 행은 파일 메타데이터를 나타냄 | 행은 파일 콘텐츠를 나타냄 | 해당 없음 |
커넥터를 사용하여 다른 데이터 처리 도구에서 액세스할 수 있음 | 예(Cloud Storage만 해당) | 아니요 | 예 | 해당 없음 |
다른 BigQuery 테이블에 조인할 수 있음 | 예(Cloud Storage만 해당) | 예 | 예 | 예 |
임시 테이블로 액세스할 수 있음 | 예(Cloud Storage만 해당) | 아니요 | 예 | 예 |
Amazon S3와 연동 | 예 | 아니요 | 아니요 | 아니요 |
Azure Storage와 연동 | 예 | 아니요 | 아니요 | 아니요 |
Bigtable과 연동 | 아니요 | 아니요 | 예 | 아니요 |
Spanner와 연동 | 아니요 | 아니요 | 아니요 | 예 |
Cloud SQL과 연동 | 아니요 | 아니요 | 아니요 | 예 |
Google Drive에서 작동 | 아니요 | 아니요 | 예 | 아니요 |
Cloud Storage와 연동 | 예 | 예 | 예 | 아니요 |
다음 단계
- BigLake 테이블 자세히 알아보기
- 객체 테이블 자세히 알아보기
- 외부 테이블 자세히 알아보기
- 통합 쿼리 자세히 알아보기
- BigQuery 가격 책정 알아보기