본문 바로가기
CSP (Cloud Service Provider)/GCP

BigQuery Clustering

by BTC_ming2 2022. 7. 8.

안녕하세요. MC에몽입니다.

오늘은 GCP의 Serverless Data Warehouse 제품인 BigQuery의 Clustering 기능에 대해 알아보는 시간을 가지겠습니다. 



BigQuery는 Partitioning 기능을 이용해 데이터를 어느 구역에 저장할 지 정할 수 있습니다.
Clustering은 Partitioning 나눈 구역을 일정한 순서에 맞게 데이터를 정렬 시키는 역할을 수행합니다. Columns 값을 기준으로 데이터를 집계하는 쿼리를 제출할 시, 정렬된 블록이 유사한 값으로 행을 배치하기 때문에 성능이 개선됩니다.여러 열을 사용해 테이블을 clustering할 때는 Columns 순서에 따라 데이터 정렬 순서가 달라지기 때문에 Columns 순서 지정이 중요합니다. Clustering columns은 최대 4개 지정 가능합니다.


다음은 clustering 기능을 사용할 때 필요한 권한입니다.
 - bigquery.tables.create
 - bigquery.tables.updateData
 - bigquery.jobs.create


다음은 clustering 기능의 장,단점을 살펴보도록 하겠습니다.
 1. 장점.
 - Columns을 필터링하는 쿼리나 데이터를 집계하는 쿼리와 같은 특정 유형 쿼리의 성능에 대해 개선이 가능합니다.
 - 정렬된 블록을 사용하여 불필요한 데이터 검색을 줄일 수 있습니다.
 - Clustering  Columns 의 값을 기준으로 데이터를 집계하는 쿼리를 제출하면 정렬된 블록이 유사한 값으로 행을 배치하기 때문에 성능 개선이 가능합니다.


 2. 단점
 - Partitioning 단독 사용 시 보다 많은 세부 설정 필요합니다.
 - Clustering 테이블 쿼리 및 결과는 표준 SQL만 지원합니다.
 - Clustering은 table 생성 시에만 clustering columns 지정 가능합니다.
 - 수정이 불가하여 생성 시 주의하여야 합니다.
 - Clustering columns은 top-level이 반복되지 않아야합니다.

 - STRING type 사용의 경우 BigQuery는 처음 1,024자만 사용하여 데이터 clustering이 가능합니다.
 - 아래 types만을 지원합니다.
  DATE
  BOOL
  GEOGRAPHY
  INT64
  NUMERIC
  BIGNUMERIC
  STRING
  TIMESTAMP
  DATETIME

 


See you later!

 



참고자료
[1] https://cloud.google.com/bigquery/docs/creating-clustered-tables?hl=ko#required_permissions
[2] https://cloud.google.com/bigquery/docs/clustered-tables?hl=ko
[3] https://cloud.google.com/bigquery/docs/creating-clustered-tables?hl=ko

댓글