-
[Bigquery] Physical Storage란DB/Bigquery 2024. 2. 13. 22:40
개요
2023년 7월에 빅쿼리에서 physical storage라는 저장 방식을 추가하였습니다. physical storage를 사용하면 기존에 logical storage보다 저장 비용을 크게 절감시킬 수 있습니다.
logical storage는 저장시키고자 하는 데이터의 크기를 거의 그대로 저장하는 반면 physical storage는 데이터를 압축해서 가지고 있는 방식으로 보입니다.
physical storage와 logical storage 비용은 다음과 같습니다.
physical storage가 활성/비활성 데이터 저장 비용이 기존 logical storage보다 비싸고 Time travel & fail-safe 스토리지 용량에 대한 비용이 청구가 되므로 사용을 하려면 다음과 같은 확인 사항이 필요합니다.
- time travel: 시간 이동 스토리지(데이터 삭제 또는 변경)
logical storage, physical storage 비용 확인하기
DECLARE active_logical_gib_price FLOAT64 DEFAULT 0.02; DECLARE long_term_logical_gib_price FLOAT64 DEFAULT 0.01; DECLARE active_physical_gib_price FLOAT64 DEFAULT 0.04; DECLARE long_term_physical_gib_price FLOAT64 DEFAULT 0.02; WITH storage_sizes AS ( SELECT table_schema AS dataset_name, -- Logical SUM(IF(deleted=false, active_logical_bytes, 0)) / power(1024, 3) AS active_logical_gib, SUM(IF(deleted=false, long_term_logical_bytes, 0)) / power(1024, 3) AS long_term_logical_gib, -- Physical SUM(active_physical_bytes) / power(1024, 3) AS active_physical_gib, SUM(active_physical_bytes - time_travel_physical_bytes) / power(1024, 3) AS active_no_tt_physical_gib, SUM(long_term_physical_bytes) / power(1024, 3) AS long_term_physical_gib, -- Restorable previously deleted physical SUM(time_travel_physical_bytes) / power(1024, 3) AS time_travel_physical_gib, SUM(fail_safe_physical_bytes) / power(1024, 3) AS fail_safe_physical_gib, FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_PROJECT WHERE total_physical_bytes > 0 -- Base the forecast on base tables only for highest precision results AND table_type = 'BASE TABLE' GROUP BY 1 ) SELECT dataset_name, -- Logical ROUND(active_logical_gib, 2) AS active_logical_gib, ROUND(long_term_logical_gib, 2) AS long_term_logical_gib, -- Physical ROUND(active_physical_gib, 2) AS active_physical_gib, ROUND(long_term_physical_gib, 2) AS long_term_physical_gib, ROUND(time_travel_physical_gib, 2) AS time_travel_physical_gib, ROUND(fail_safe_physical_gib, 2) AS fail_safe_physical_gib, -- Compression ratio ROUND(SAFE_DIVIDE(active_logical_gib, active_no_tt_physical_gib), 2) AS active_compression_ratio, ROUND(SAFE_DIVIDE(long_term_logical_gib, long_term_physical_gib), 2) AS long_term_compression_ratio, -- Forecast costs logical ROUND(active_logical_gib * active_logical_gib_price, 2) AS forecast_active_logical_cost, ROUND(long_term_logical_gib * long_term_logical_gib_price, 2) AS forecast_long_term_logical_cost, -- Forecast costs physical ROUND((active_no_tt_physical_gib + time_travel_physical_gib + fail_safe_physical_gib) * active_physical_gib_price, 2) AS forecast_active_physical_cost, ROUND(long_term_physical_gib * long_term_physical_gib_price, 2) AS forecast_long_term_physical_cost, -- Forecast costs total ROUND(((active_logical_gib * active_logical_gib_price) + (long_term_logical_gib * long_term_logical_gib_price)) - (((active_no_tt_physical_gib + time_travel_physical_gib + fail_safe_physical_gib) * active_physical_gib_price) + (long_term_physical_gib * long_term_physical_gib_price)), 2) AS forecast_total_cost_difference FROM storage_sizes ORDER BY (forecast_active_logical_cost + forecast_active_physical_cost) DESC;
위 쿼리를 실행하면 다음과 같이 확인할 수 있습니다.
여기서 forecast_total_cost_difference 값이 양수라면 physical storage로 변환했을 때, 비용 절감 효과를 얻을 수 있습니다.
physical storage로 변환하기
변환은 쿼리도 존재하지만 빅쿼리 콘솔에서 간편하게 변경할 수 있습니다. 데이터셋의 세부정보 수정을 누른 후, 고급 옵션을 열면 하단에 스토리지 청구 모델을 변경할 수 있습니다.
변경 후에는 14일이 지나야 다시 변경이 가능하고 변경 후 적용되기까지는 24시간이 소요됩니다.
Physical storage 주의사항
Physical storage로 변환하기 위해선 몇가지 확인 사항이 필요합니다.
- 중복되는 데이터가 많은지
- 테이블의 데이터가 수정, 삭제 빈도가 잦은지
1번의 경우는 확인하기 어렵기 때문에 차치하고 2번을 자세히 살펴보면 physical storage는 logical storage와 다르게 Time travel & fail-safe 스토리지 용량에 대한 비용이 청구가 됩니다.
즉, 수정이나 삭제된 데이터를 보관하는 용량까지 비용 청구가 일어난다는 이야기입니다.
현재 빅쿼리에서는 time travel을 데이터셋 단위로 2일에서 7일까지 설정할 수 있고 기본값은 7일입니다.
예를 들어, A 데이터셋에 time travel이 최소 단위인 2일로 설정되어 있고 해당 데이터셋에 1개의 테이블의 크기가 1기가라고 할 때, 해당 테이블을 1시간마다 replace table로 데이터를 교체한다면 logical storage는 1기가이지만 physical storage는 time travel로 인한 47기가와 실제 크기인 1기가의 합인 48기가 정도가 됩니다.
따라서 physical storage를 최대한 활용하기 위해선 데이터의 수정 및 삭제 빈도가 낮아야 합니다.
요약
- physical storage를 사용하면 데이터 압축으로 인해 빅쿼리 저장 비용을 크게 절감시킬 수 있음
- 그러나 physical storage 비용이 기존 저장 방식인 logical storage보다 비용이 2배 비쌈
- 데이터의 수정 및 삭제가 잦게 일어나는 데이터셋일 경우 기존 데이터 크기보다 더 커질 수 있으므로 비용이 더 청구될 수 있음
레퍼런스
https://cloud.google.com/bigquery/docs/information-schema-table-storage?hl=ko#example_2
https://medium.com/@sobhan.af/how-bigquery-physical-storage-works-1138dd796171