BigQuery 기본기
BigQuery는 서버리스 데이터 웨어하우스입니다. 인프라 관리 없이 페타바이트급 데이터를 표준 SQL로 분석할 수 있으며, 저장과 컴퓨팅이 분리된 구조가 특징입니다.
아키텍처 핵심
섹션 제목: “아키텍처 핵심”- 저장/컴퓨팅 분리: Colossus(저장) + Dremel(쿼리 엔진), 필요 시에만 컴퓨팅 사용
- 컬럼 지향 저장: 조회하는 컬럼만 스캔 →
SELECT *지양이 곧 비용 절감 - 자동 복제/암호화: 별도 백업 구성 없이 내구성 확보
요금 모델
섹션 제목: “요금 모델”| 모델 | 과금 기준 | 적합한 경우 |
|---|---|---|
| 온디맨드 | 쿼리가 스캔한 바이트 | 사용량 적거나 불규칙 |
| 슬롯 (Editions) | 예약한 컴퓨팅 용량(시간) | 사용량 많고 예측 가능 |
저장 요금은 별도이며, 90일간 수정 없는 테이블은 장기 저장 요금으로 자동 할인됩니다.
비용 최적화 3종 세트
섹션 제목: “비용 최적화 3종 세트”1. 파티셔닝
섹션 제목: “1. 파티셔닝”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로 전체 스캔 사고 방지.
2. 클러스터링
섹션 제목: “2. 클러스터링”CREATE TABLE ds.events_clusteredPARTITION BY DATE(event_time)CLUSTER BY user_idAS SELECT * FROM ds.events;파티션 내부를 특정 컬럼으로 정렬해 스캔량 추가 절감. WHERE/JOIN에 자주 쓰는 컬럼 기준.
3. 쿼리 습관
섹션 제목: “3. 쿼리 습관”SELECT *금지 — 필요한 컬럼만- 실행 전 드라이런으로 스캔량 확인:
bq query --dry_run LIMIT은 비용을 줄이지 않음 (스캔 후 잘라냄) — 파티션/클러스터 필터가 핵심- 반복 조회는 구체화 뷰(Materialized View) 검토
데이터 적재 패턴
섹션 제목: “데이터 적재 패턴”| 방법 | 특징 |
|---|---|
| 배치 로드 (GCS → BQ) | 무료, 대량 적재 기본 |
| Storage Write API | 스트리밍 적재 표준 (기존 스트리밍 API 대체) |
| Datastream | CDC 기반 DB 복제 |
| 외부 테이블 / BigLake | GCS 데이터를 이동 없이 쿼리 |
AI와의 연계
섹션 제목: “AI와의 연계”- BQML: SQL로 모델 학습/예측 (
CREATE MODEL) - 원격 모델: Gemini를 SQL에서 호출해 텍스트 분석 (
ML.GENERATE_TEXT) - 벡터 검색:
VECTOR_SEARCH로 임베딩 기반 검색 → RAG 구성 가능