테이블
테이블 (Tables)
BigQuery에서 데이터를 저장하는 기본 단위가 테이블이에요. 테이블은 행으로 정리된 개별 레코드를 담고, 각 레코드는 컬럼(필드라고도 불러요)으로 구성돼요. 모든 테이블은 컬럼 이름·데이터 타입 같은 정보를 담은 스키마(schema) 로 정의돼요. 스키마를 만들 때 지정할 수도 있고, 테이블을 데이터로 처음 채우는 쿼리 잡이나 로드 잡에서 선언할 수도 있어요.
테이블 이름을 완전히 지정할 때는 GoogleSQL에서 projectname.datasetname.tablename 형식을, bq 명령줄 도구에서는 projectname:datasetname.tablename 형식을 써요.
테이블의 종류
BigQuery가 지원하는 테이블 유형은 크게 세 가지예요.
- 표준 BigQuery 테이블: BigQuery 스토리지에 저장된 구조화된 데이터
- 외부 테이블 (External tables): BigQuery 밖에 저장된 데이터를 참조하는 테이블
- 뷰 (Views): SQL 쿼리로 만들어지는 논리적 테이블
표준 BigQuery 테이블
표준 BigQuery 테이블은 구조화된 데이터를 담고, 컬럼형(columnar) 형식으로 BigQuery 스토리지에 저장돼요. 표준 테이블에는 세 가지 종류가 있어요.
- 테이블: 스키마가 있고, 스키마의 모든 컬럼에 데이터 타입이 있는 것
- 테이블 클론 (Table clones): 기본 테이블과의 델타만 저장하는 가볍고 쓸 수 있는 사본. 테이블 클론과 기본 테이블 사이의 차이만 저장해요.
- 테이블 스냅샷 (Table snapshots): 특정 시점의 테이블 사본. 읽기 전용이지만 스냅샷에서 테이블을 복원할 수 있어요. 스냅샷과 기본 테이블이 다른 바이트만 저장하므로, 전체 사본보다 스토리지를 보통 덜 써요.
외부 테이블
외부 테이블은 BigQuery 스토리지 밖에 저장되고, BigQuery 밖 데이터를 참조해요. 대표적인 종류는 이런 것들이에요.
- BigLake 테이블: Cloud Storage, Amazon S3, Azure Blob Storage 같은 데이터 저장소의 구조화된 데이터를 참조해요. 테이블 수준의 세밀한 보안을 적용할 수 있어요.
- 객체 테이블 (Object tables): Cloud Storage 같은 저장소의 비구조화된 데이터를 참조해요.
- 비-BigLake 외부 테이블: Cloud Storage, Google Drive, Bigtable 같은 저장소의 구조화된 데이터를 참조해요. BigLake 테이블과 달리 테이블 수준의 세밀한 보안은 적용할 수 없어요.
뷰
뷰는 SQL 쿼리로 정의되는 논리적 테이블이에요. 두 종류가 있어요.
- 뷰 (Views): 쿼리할 때마다 실행되는 SQL 쿼리로 정의되는 논리적 테이블
- 구체화된 뷰 (Materialized views): 뷰 쿼리 결과를 주기적으로 캐시해 두는 미리 계산된 뷰. 캐시된 결과는 BigQuery 스토리지에 저장돼요.
테이블 제한사항
몇 가지 기억할 제한이 있어요.
- 테이블 이름은 데이터셋 내에서 고유해야 해요.
- 테이블 데이터를 내보낼 때 지원하는 대상은 Cloud Storage뿐이에요.
- API 호출 시 데이터셋의 테이블이 50,000개에 가까워지면 열거 성능이 느려져요.
- Google Cloud 콘솔은 데이터셋마다 최대 50,000개 테이블까지 표시할 수 있어요.
테이블 할당량
테이블에 대해 실행할 수 있는 여러 잡 유형에 할당량·한도가 적용돼요. 테이블 데이터 로드(로드 잡), 테이블 데이터 내보내기(추출 잡), 테이블 데이터 쿼리(쿼리 잡), 테이블 복사(복사 잡)가 대표적이에요. 테이블 전용 할당량 오류로는 '테이블 가져오기 또는 쿼리 추가 할당량 오류', '테이블에 대한 미결 DML 문이 너무 많음' 같은 게 있어요.
테이블 가격과 보안
테이블 생성·사용 비용은 테이블과 파티션에 저장된 데이터량과 그 데이터에 대한 쿼리 기준으로 계산돼요. 데이터 로드·복사·내보내기 등 많은 테이블 작업은 무료지만, 마찬가지로 BigQuery 할당량·한도의 적용은 받아요.
테이블 접근을 제어하려면 IAM으로 리소스 접근을 관리하면 돼요.
더 알아보기
- Create and use tables — 테이블 만들기·사용하기
- Manage tables — 테이블 관리
- Modify table schemas — 스키마 수정
- Table clones
- Table snapshots