콘텐츠로 이동

BigQuery 기본기

BigQuery는 서버리스 데이터 웨어하우스입니다. 인프라 관리 없이 페타바이트급 데이터를 표준 SQL로 분석할 수 있으며, 저장과 컴퓨팅이 분리된 구조가 특징입니다.

  • 저장/컴퓨팅 분리: Colossus(저장) + Dremel(쿼리 엔진), 필요 시에만 컴퓨팅 사용
  • 컬럼 지향 저장: 조회하는 컬럼만 스캔 → SELECT * 지양이 곧 비용 절감
  • 자동 복제/암호화: 별도 백업 구성 없이 내구성 확보
모델과금 기준적합한 경우
온디맨드쿼리가 스캔한 바이트사용량 적거나 불규칙
슬롯 (Editions)예약한 컴퓨팅 용량(시간)사용량 많고 예측 가능

저장 요금은 별도이며, 90일간 수정 없는 테이블은 장기 저장 요금으로 자동 할인됩니다.

CREATE TABLE ds.events (
event_time TIMESTAMP,
user_id STRING,
payload JSON
)
PARTITION BY DATE(event_time)
OPTIONS (require_partition_filter = TRUE);

날짜 파티션 + require_partition_filter로 전체 스캔 사고 방지.

CREATE TABLE ds.events_clustered
PARTITION BY DATE(event_time)
CLUSTER BY user_id
AS SELECT * FROM ds.events;

파티션 내부를 특정 컬럼으로 정렬해 스캔량 추가 절감. WHERE/JOIN에 자주 쓰는 컬럼 기준.

  • SELECT * 금지 — 필요한 컬럼만
  • 실행 전 드라이런으로 스캔량 확인: bq query --dry_run
  • LIMIT은 비용을 줄이지 않음 (스캔 후 잘라냄) — 파티션/클러스터 필터가 핵심
  • 반복 조회는 구체화 뷰(Materialized View) 검토
방법특징
배치 로드 (GCS → BQ)무료, 대량 적재 기본
Storage Write API스트리밍 적재 표준 (기존 스트리밍 API 대체)
DatastreamCDC 기반 DB 복제
외부 테이블 / BigLakeGCS 데이터를 이동 없이 쿼리
  • BQML: SQL로 모델 학습/예측 (CREATE MODEL)
  • 원격 모델: Gemini를 SQL에서 호출해 텍스트 분석 (ML.GENERATE_TEXT)
  • 벡터 검색: VECTOR_SEARCH로 임베딩 기반 검색 → RAG 구성 가능