PS1팀 문경미
BigQuery의 기존 Table에서 사본 Table을 만들기 위해서 Copy, Clone, Snapshot 방법이 있습니다.
모두 사본 테이블을 만든다는 것은 동일하나 사용 목적과 사용 사례가 다릅니다.
1. BQ Table Copy 소개
기존 테이블의 데이터를 새로운 테이블로 복사하는 작업을 의미합니다.
기본적으로 데이터의 복사뿐만 아니라 원본 테이블의 구조 및 스키마도 동일하게 복사되며 새로운 독립 테이블을 생성되어 데이터에 변경 및 삭제 작업에서 소스 테이블의 영향을 받지 않습니다.
[ 사용 사례 ]
- 테이블 Backup
- 테이블 구조의 및 데이터의 완전한 복사가 필요한 경우
[ 생성 방법 ]
CREATE TABLE Copy 문을 사용하여 source table 테이블을 destination table 이라는 새 테이블에 복사합니다.
CREATE TABLE destination_dataset.destination_table
Copy source_dataset.source_table ;
[ 보관 비용 ]
새로운 독립적인 테이블이 생성되었기 때문에 기존 테이블과 동일한 모든 레코드에 대해 전체 스토리지 비용이 청구됩니다.
2. BQ Table Clone 소개
Copy 와 동일하게 기존 테이블의 데이터를 새로운 테이블로 복사하는 작업을 의미합니다.
데이터의 복사뿐만 아니라 원본 테이블의 구조 및 스키마도 동일하게 복사되며 새로운 독립 테이블을 생성합니다.
[ 사용 사례 ]
- 개발 및 테스트에 사용할 수 있는 운영 테이블 Backup
- 모든 데이터 복사가 아닌 특정 자체 분석 및 데이터 조작용이 필요한 경우
[ 생성 방법 ]
CREATE TABLE Clone 문을 사용하여 source table 테이블을 destination table 이라는 새 테이블에 복제합니다.
CREATE TABLE destination_dataset.destination_table
Clone source_dataset.source_table ;
[ 보관 비용 ]
Clone의 테이블의 데이터 변경이 일어난 경우에만 요금이 청구되므로 처음에는 테이블 Clone에 대한 스토리지 비용이 발생하지 않습니다.
소스 테이블과 Clone 테이블간 변경된 데이터에 대해서만 비용이 청구 됩니다.
Clone 테이블에는 존재하지만 소스 테이블의 데이터 변경 및 삭제되는 경우 Clone 스토리지에 대한 요금이 청구됩니다.
[ 이미지 1. 기본 테이블과 Clone 테이블의 가격 책정 차이점 ]
3. BQ Table Snapshot 소개
특정 기간의 테이블에 포함된 데이터를 보존합니다. 현재 테이블의 Snapshot을 저장하거나 이전 7일 이내에서 특정 시점의 테이블의 Snapshot을 만들 수 있으며 Snapshot의 만료 시간을 지정할 수 있습니다. 테이블 Snapshot은 읽기 전용으로 데이터 변경 및 삭제가 불가합니다.
[ 사용 사례 ]
- 읽기 전용의 사본 테이블이 필요한 경우
- 특정 시점의 데이터를 보존하고 나중에 참조하고자 하는 경우
[ 생성 방법 ]
- CREATE SNAPSHOT TABLE 사용하여 source table 테이블을 Snapshot 테이블을 생성합니다.
CREATE SNAPSHOT TABLE destination_dataset.destination_table
Clone source_dataset.source_table
OPTIONS (
expiration_timestamp = TIMESTAMP 'TIMESTAMP_VALUE');
[ 보관 비용 ]
테이블 Snapshot을 만들면 처음에는 테이블 Snapshot에 대한 스토리지 비용이 발생하지 않으며 테이블 Snapshot이 생성된 후에 새 데이터를 기본 테이블에 추가하는 경우 테이블 Snapshot의 해당 데이터 스토리지에 대한 요금이 청구되지 않습니다.
테이블 Snapshot에도 존재하는 데이터가 기본 테이블에서 변경되거나 삭제되면 변경 또는 삭제된 데이터의 테이블 Snapshot 스토리지에 대한 요금이 청구됩니다.
[ 이미지2. 기본 테이블과 Snapshot 테이블의 가격 책정 차이 ]
4. Copy, Clone, Snapshot 차이점
세 개의 복사 방법과 용도에 따라 사용 사례가 다르며 사용자의 환경과 요구에 따라 다르게 사용되어야 합니다.
[ 비교 ]
Copy | Clone | SNAPSHOT | |
---|---|---|---|
Mutability | Mutable | Mutable | Immutable |
Time Travel | Yes | Yes | Yes |
Storage | Fully allocated | Differential | Differential |
Replace | Yes | Yes | No |