BigQuery 리소스 구성

다른 Google Cloud 서비스와 마찬가지로 BigQuery 리소스는 계층 구조로 구성됩니다. 이러한 계층 구조를 사용하여 권한, 할당량, 슬롯 예약, 청구 등의 BigQuery 워크로드 측면을 관리할 수 있습니다.

리소스 계층 구조

BigQuery는 Google Cloud 리소스 계층 구조를 상속하고 BigQuery에 따라 달라지는 데이터 세트라는 추가적인 그룹화 메커니즘을 사용합니다. 이 섹션에서는 이 계층 구조의 요소를 설명합니다.

데이터 세트

데이터 세트는 BigQuery 리소스에 대한 액세스를 구성하고 제어하기 위해 사용되는 논리적 컨테이너입니다. 데이터 세트는 다른 데이터베이스 시스템의 스키마와 비슷합니다.

테이블, 뷰, 함수, 프로시져를 비롯하여 생성되는 대부분의 BigQuery 리소스는 데이터 세트 내에 생성됩니다. 연결 및 작업은 예외사항입니다. 이것들은 데이터 세트가 아니라 프로젝트와 연결됩니다.

데이터 세트는 위치를 갖습니다. 테이블을 만들면 테이블 데이터가 데이터 세트의 위치에 저장됩니다. 프로덕션 데이터에 대해 테이블을 만들기 전 위치 요구사항을 고려하세요. 데이터 세트를 만든 후에는 위치를 변경할 수 없습니다.

프로젝트

모든 데이터 세트는 프로젝트와 연결되어 있습니다. Google Cloud를 사용하려면 적어도 하나의 프로젝트를 만들어야 합니다. 프로젝트는 모든 Google Cloud 서비스 만들기, 사용 설정, 사용을 위한 기초를 형성합니다. 자세한 내용은 리소스 계층 구조를 참조하세요. 프로젝트는 여러 데이터 세트를 포함할 수 있으며, 위치가 서로 다른 데이터 세트가 동일한 프로젝트에 존재할 수 있습니다.

쿼리 실행 또는 테이블에 데이터 수집과 같은 작업을 BigQuery 데이터에서 수행하면 작업이 생성됩니다. 작업은 항상 프로젝트와 연결되지만 데이터를 포함하는 동일한 프로젝트에서 실행될 필요는 없습니다. 실제로 작업은 여러 프로젝트에 있는 데이터 세트에서 테이블을 참조할 수 있습니다. 쿼리 작업, 로드 작업, 내보내기 작업은 항상 해당 작업이 참조하는 테이블과 동일한 위치에서 실행됩니다.

각 프로젝트에는 연결된 Cloud Billing 계정이 있습니다. 프로젝트에 발생하는 비용은 해당 계정으로 청구됩니다. 주문형 가격 책정을 사용하는 경우 쿼리를 실행하는 프로젝트로 쿼리 비용이 청구됩니다. 용량 기반 가격 책정을 사용하는 경우 슬롯 예약이 해당 슬롯을 구입하는 데 사용된 관리 프로젝트에 청구됩니다. 스토리지 비용은 데이터 세트가 있는 프로젝트에 청구됩니다.

폴더

폴더는 프로젝트 위에 있는 추가적인 그룹화 메커니즘입니다. 폴더 내부의 프로젝트 및 폴더는 해당 상위 폴더의 액세스 정책을 자동으로 상속합니다. 폴더는 회사 내의 다양한 법인, 부서, 팀을 모델링하는 데 사용할 수 있습니다.

조직

조직 리소스는 조직(예: 회사)을 나타내며, Google Cloud 리소스 계층 구조의 루트 노드입니다.

BigQuery 사용을 시작하기 위해 조직 리소스가 필요하진 않지만 만드는 것이 좋습니다. 개별 사용자가 자신이 만든 리소스를 제어하는 대신 조직 리소스를 사용하면 관리자가 BigQuery 리소스를 중앙에서 제어할 수 있습니다.

다음 다이어그램은 리소스 계층 구조의 예시를 보여줍니다. 이 예시에서 조직은 폴더 내에 프로젝트를 갖고 있습니다. 이 프로젝트는 청구 계정과 연결되어 있고 3개의 데이터 세트를 포함합니다.

리소스 계층 구조

고려사항

BigQuery 리소스를 구성하는 방법을 선택할 때는 다음 항목을 고려하세요.

  • 할당량. 많은 BigQuery 할당량이 프로젝트 수준에서 적용됩니다. 일부는 데이터 세트 수준에서 적용됩니다. 쿼리 및 로드 작업과 같은 컴퓨팅 리소스와 관련된 프로젝트 수준 할당량은 스토리지 프로젝트가 아니라 작업을 만드는 프로젝트에 대해 계산됩니다.
  • 결제. 조직의 각 부서가 서로 다른 Cloud Billing 계정을 사용하도록 하려면 각 팀에 대해 서로 다른 프로젝트를 만듭니다. 조직 수준에서 Cloud Billing 계정을 만들고 여기에 프로젝트를 연결합니다.
  • 슬롯 예약. 예약된 슬롯은 범위가 조직 리소스로 지정됩니다. 예약된 슬롯 용량을 구입한 후 조직 내에서 프로젝트 또는 폴더에 슬롯 풀을 할당하거나 전체 조직 리소스에 슬롯을 할당할 수 있습니다. 프로젝트는 상위 폴더 또는 조직에서 슬롯 예약을 상속합니다. 예약된 슬롯은 슬롯 관리에 사용되는 관리 프로젝트와 연결되어 있습니다. 자세한 내용은 예약을 사용한 워크로드 관리를 참조하세요.
  • 권한. 권한 계층 구조가 데이터에 액세스해야 하는 조직 내 사용자에게 어떤 영향을 주는지 고려하세요. 예를 들어 전체 팀에 특정 데이터에 대해 액세스 권한을 부여하려면 액세스 관리를 간소화하기 위해 이 데이터를 단일 프로젝트에 저장할 수 있습니다.

    테이블 및 기타 항목은 해당 상위 데이터 세트의 권한을 상속합니다. 데이터 세트는 리소스 계층 구조(프로젝트, 폴더, 조직)에서 상위 항목으로부터 권한을 상속합니다. 리소스에 대해 작업을 수행하려면 사용자에게 리소스에 대한 관련 권한과 BigQuery 작업 만들기 권한이 모두 필요합니다. 작업 만들기 권한은 해당 작업에 사용되는 프로젝트와 관련됩니다.

패턴

이 섹션에서는 BigQuery 리소스 구성을 위한 두 가지 일반적인 패턴을 보여줍니다.

  • 중앙 데이터 레이크, 부서 데이터 마트. 이 조직은 원시 데이터를 저장하기 위해 통합된 스토리지 프로젝트를 만듭니다. 조직 내 부서는 분석을 위해 부서 자체의 데이터 마트 프로젝트를 만듭니다.

  • 부서 데이터 레이크, 중앙 데이터 웨어하우스. 각 부서는 부서 원시 데이터를 저장하기 위해 자체 스토리지 프로젝트를 만들고 관리합니다. 조직은 그런 후 분석을 위해 중앙 데이터 웨어하우스 프로젝트를 만듭니다.

이러한 각 방법에는 장점과 단점이 있습니다. 많은 조직들이 두 패턴 요소를 결합하여 사용합니다.

중앙 데이터 레이크, 부서 데이터 마트

이 패턴에서는 조직의 원시 데이터를 저장하기 위해 통합된 스토리지 프로젝트를 만듭니다. 데이터 수집 파이프라인은 또한 이 프로젝트에서 실행될 수 있습니다. 통합 스토리지 프로젝트는 조직을 위한 데이터 레이크와 같이 작동합니다.

각 부서에는 데이터 쿼리, 쿼리 결과 저장, 뷰 만들기를 위해 사용되는 고유한 전용 프로젝트가 있습니다. 이러한 부서 수준의 프로젝트는 데이터 마트로 작동합니다. 이것들은 부서의 결제 계정과 연결됩니다.

중앙 데이터 레이크 패턴

이 구조의 장점은 다음과 같습니다.

  • 중앙화된 데이터 엔지니어링 팀이 단일 위치에서 수집 파이프라인을 관리할 수 있습니다.
  • 원시 데이터는 부서 수준의 프로젝트와 격리됩니다.
  • 주문형 가격 책정의 경우 쿼리 실행 비용이 쿼리를 실행하는 부서에 청구됩니다.
  • 용량 기반 가격 책정의 경우 예상되는 컴퓨팅 요구사항을 기준으로 각 부서에 슬롯을 할당할 수 있습니다.
  • 각 부서는 프로젝트 수준 할당량 측면에서 다른 부서들과 격리되어 있습니다.

이 구조를 사용할 때는 다음과 같은 권한이 일반적입니다.

  • 중앙 데이터 엔지니어링 팀에는 스토리지 프로젝트에 대해 BigQuery 데이터 편집자 및 BigQuery 작업 사용자 역할이 부여됩니다. 이를 통해 스토리지 프로젝트에서 데이터를 수집하고 수정할 수 있습니다.
  • 부서 분석가에게는 중앙 데이터 레이크 프로젝트의 특정 데이터 세트에 대해 BigQuery 데이터 뷰어 역할이 부여됩니다. 이렇게 하면 데이터를 쿼리할 수 있지만, 원시 데이터를 업데이트하거나 삭제할 수 없습니다.
  • 부서 분석가에게는 또한 부서의 데이터 마트 프로젝트에 대해 BigQuery 데이터 편집자 역할 및 작업 사용자 역할이 부여됩니다. 이렇게 하면 프로젝트에서 테이블을 만들고 업데이트하고, 쿼리 작업을 실행하여, 부서별 사용을 위해 데이터를 변환하고 집계할 수 있습니다.

자세한 내용은 기본 역할 및 권한을 참조하세요.

부서 데이터 레이크, 중앙 데이터 웨어하우스

이 패턴에서 각 부서는 해당 부서의 원시 데이터를 저장하는 자체 스토리지 프로젝트를 만들고 관리합니다. 중앙 데이터 웨어하우스 프로젝트는 원시 데이터의 집계 또는 변환을 저장합니다.

분석가는 데이터 웨어하우스 프로젝트에서 집계된 데이터를 쿼리하고 읽을 수 있습니다. 데이터 웨어하우스 프로젝트는 또한 비즈니스 인텔리전스(BI) 도구에 대한 액세스 레이어를 제공합니다.

부서 데이터 레이크 패턴

이 구조의 장점은 다음과 같습니다.

  • 각 부서에 대해 개별 프로젝트를 사용하여 부서 수준에서 데이터 액세스를 더 간단하게 관리할 수 있습니다.
  • 중앙 분석팀에 분석 작업 실행을 위해 단일 프로젝트가 사용되어, 쿼리를 더 쉽게 모니터링할 수 있습니다.
  • 사용자는 원시 데이터로부터 격리되어 유지되는 중앙화된 BI 도구에서 데이터에 액세스할 수 있습니다.
  • 분석 및 외부 도구의 모든 쿼리를 처리하기 위해 데이터 웨어하우스 프로젝트에 슬롯을 할당할 수 있습니다.

이 구조를 사용할 때는 다음과 같은 권한이 일반적입니다.

  • 데이터 엔지니어에게는 해당 부서의 데이터 마트에서 BigQuery 데이터 편집자 및 BigQuery 작업 사용자 역할이 부여됩니다. 이러한 역할을 통해 데이터를 수집하고 데이터 마트로 변환할 수 있습니다.
  • 분석가에게는 데이터 웨어하우스 프로젝트의 BigQuery 데이터 편집자 및 BigQuery 작업 사용자 역할이 부여됩니다. 이러한 역할을 통해 데이터 웨어하우스에서 집계 뷰를 만들고 쿼리 작업을 실행할 수 있습니다.
  • BigQuery를 BI 도구에 연결하는 서비스 계정에는 데이터 레이크의 원시 데이터 또는 데이터 웨어하우스 프로젝트에서 변환된 데이터를 저장할 수 있는, 특정 데이터 세트에 대한 BigQuery 데이터 뷰어 역할이 부여됩니다.

자세한 내용은 기본 역할 및 권한을 참조하세요.

또한 데이터 마트 프로젝트의 원시 데이터를 볼 수 있는 권한을 부여하지 않고 승인된 뷰승인된 사용자 정의 함수(UDF)와 같은 보안 기능을 사용하여 특정 사용자에게 집계된 데이터를 제공할 수 있습니다.

이 프로젝트 구조는 데이터 웨어하우스 프로젝트에서 많은 동시 쿼리를 일으킬 수 있습니다. 따라서 동시성 쿼리 제한에 도달할 수 있습니다. 이 구조를 채택할 경우 프로젝트에 대해 이 할당량 제한을 늘리는 것이 좋습니다. 또한 쿼리 실행을 위해 슬롯 풀을 구입할 수 있도록 용량 기반 결제를 사용하는 것이 좋습니다.