클러스터링된 테이블 소개

이 문서에서는 BigQuery의 테이블 클러스터링 기능을 간략하게 설명합니다.

개요

BigQuery에서 클러스터링된 테이블을 만들 때, 테이블 데이터는 테이블 스키마에 있는 1개 이상의 열에 있는 콘텐츠를 기준으로 자동 정렬됩니다. 지정하는 열은 관련 데이터를 배치하는 데 사용됩니다. 여러 열을 사용해 테이블을 클러스터링할 때는 열 순서 지정이 중요합니다. 지정된 열의 순서에 따라 데이터의 정렬 순서가 결정됩니다.

클러스터링은 절을 필터링하는 데 사용하는 쿼리나 데이터를 집계하는 쿼리와 같은 특정 유형의 쿼리의 성능을 개선할 수 있습니다. 데이터가 쿼리 작업이나 로드 작업에 의해 클러스터링된 테이블에 작성될 때 BigQuery는 클러스터링 열의 값을 사용해 데이터를 정렬합니다. 이러한 값은 데이터를 BigQuery 스토리지의 여러 블록에 정리하는 데 사용됩니다. 클러스터링 열을 기준으로 데이터를 필터링하는 절이 포함된 쿼리를 제출하면 BigQuery는 정렬된 블록을 사용하여 불필요한 데이터 검색을 줄입니다.

마찬가지로, 클러스터링 열의 값을 기준으로 데이터를 집계하는 쿼리를 제출하면 정렬된 블록이 값이 유사한 행과 같은 위치에 배치되므로 성능이 향상됩니다.

클러스터링을 사용해야 하는 경우

현재 BigQuery는 파티션을 나눈 테이블의 클러스터링을 허용합니다. 다음과 같은 경우 파티션을 나눈 테이블을 클러스터링합니다.

  • 데이터가 이미 날짜, 타임스탬프 또는 정수 열을 기준으로 여러 파티션으로 나뉘었습니다.
  • 일반적으로 쿼리에서 특정 열에 대해 필터 또는 집계를 사용하고 있습니다.

다음을 기준으로 파티션을 나눈 테이블에 테이블 클러스터링이 가능합니다.

현재 파티션을 나누지 않은 테이블에는 클러스터링이 불가능합니다.

클러스터링과 파티션 나누기를 함께 사용하는 경우 날짜 또는 타임스탬프 열을 기준으로 데이터를 여러 파티션으로 나눈 다음 다양한 열 집합으로 클러스터링할 수 있습니다. 이 경우 각 파티션의 데이터는 클러스터링 열의 값을 기준으로 클러스터링됩니다. 파티션을 나누면 스캔된 파티션을 기준으로 쿼리 비용을 정확히 추정할 수 있습니다.

파티션을 나눈 테이블 클러스터링

날짜 또는 타임스탬프 열을 기준으로 파티션을 나눈 테이블에서는 각 파티션에 하루 동안의 데이터가 포함됩니다. 데이터가 저장되면 BigQuery는 블록의 모든 데이터가 단일 파티션에 속하도록 확인합니다. 파티션을 나눈 테이블은 쿼리 작업, 데이터 조작 언어(DML) 문, 데이터 정의 언어(DDL) 문, 로드 작업, 복사 작업과 같이 테이블을 수정하는 모든 작업에서 이러한 속성을 유지합니다. 즉, BigQuery가 파티션을 나누지 않은 테이블보다 더 많은 메타데이터를 유지해야 합니다. 파티션의 수가 증가하면 메타데이터 오버헤드의 양도 증가합니다.

전역에서 데이터의 파티션을 나누면 더 많은 메타데이터를 유지해야 하지만 BigQuery는 쿼리를 실행하기 전에 쿼리에 의해 처리된 바이트를 더욱 정확히 예측할 수 있습니다. 이렇게 비용을 계산하면 최종 쿼리 비용의 상한가를 알 수 있습니다.

클러스터링된 테이블에서 BigQuery는 클러스터링 열 값을 기준으로 데이터를 자동 정렬하며 이를 최적화된 크기의 저장소 블록으로 정리합니다. 클러스터링되고 파티션이 나누어진 테이블을 만들어 더욱 세부적으로 정렬할 수 있습니다. 클러스터링된 테이블에서는 해당 테이블을 수정하는 각 작업과 관련하여 정렬 속성이 유지됩니다. 그 결과 BigQuery가 쿼리에 의해 처리된 바이트나 쿼리 비용을 정확히 예측하지 못할 수도 있습니다. 데이터 블록이 쿼리 중에 제거되면 BigQuery는 쿼리 비용을 줄이기 위해 최선을 다합니다.

자동 재클러스터링

클러스터링된 테이블에 데이터가 추가될 때 새로 삽입되는 데이터가 작성되는 블록은 이전에 작성된 블록과 키 범위가 중복될 수 있습니다. 이렇게 중복된 키가 있으면 테이블 정렬 속성이 약화됩니다.

BigQuery는 클러스터링된 테이블의 성능 특성을 유지하기 위해 백그라운드에서 자동 재클러스터링을 수행하여 테이블의 정렬 속성을 복원합니다. 파티션을 나눈 테이블의 경우에는 각 파티션 범위 내의 데이터에 대해 클러스터링이 유지됩니다.

클러스터링된 테이블의 할당량 및 한도

파티션을 나눈 테이블에서 클러스터링된 테이블 기능을 사용한다면 파티션을 나눈 테이블의 한도가 적용됩니다.

할당량과 한도는 다음을 포함하여 클러스터링된 테이블에 대해 실행할 수 있는 다양한 유형의 작업에 적용됩니다.

모든 할당량 및 한도에 대한 자세한 내용은 할당량 및 한도를 참조하세요.

클러스터링된 테이블 가격

BigQuery에서 클러스터링된 테이블을 만들고 사용할 때 부과되는 요금은 데이터를 대상으로 실행하는 쿼리와 테이블에 저장된 데이터의 양에 따라 결정됩니다.

클러스터링된 테이블에 데이터를 로드하거나, 테이블 및 파티션을 복사하거나, 데이터를 내보내는 등 클러스터링된 테이블과 관련해서 수행하는 많은 작업에는 요금이 청구되지 않습니다. 이러한 작업에는 BigQuery의 할당량 및 한도가 적용됩니다. 모든 무료 작업에 대한 자세한 내용은 가격 책정 페이지의 무료 작업을 참조하세요.

클러스터링된 테이블의 자세한 가격 책정 예시는 가격 책정 페이지를 참조하세요.

개발 중인 기능

다음 기능은 현재 개발 중이며 아직 사용할 수 없습니다.

  • 파티션을 나누지 않은 테이블의 클러스터링

다음 단계