Understanding storage cost
Understanding storage cost (저장 비용 이해)
저장 비용은 다음의 비용을 나타내요.
- 대량 데이터 로드/언로드를 위해 스테이징된 파일(압축 또는 비압축으로 저장).
- Time Travel용 과거 데이터를 포함한 데이터베이스 테이블.
- 데이터베이스 테이블용 Fail-safe.
- 클론을 소유한 테이블에서 삭제된 데이터를 참조하는 데이터베이스 테이블의 클론.
본문
Snowflake에 데이터를 저장하는 월간 비용은 테라바이트(TB)당 균일 요금을 기반으로 해요. 청구되는 금액은 내 계정 유형(Capacity 또는 On Demand)과 리전(US 또는 EU)에 따라 달라져요.
저장 가격은 Snowflake Pricing Guide를 참고해요.
스테이징된 파일 비용
대량 데이터 로드/언로드를 위해 스테이징된 파일은 파일 크기를 기반으로 저장 비용을 발생시켜요. 데이터 로드에 대한 자세한 내용은 Load data into Snowflake를 참고해요.
데이터베이스 비용
데이터베이스 비용은 데이터베이스 테이블에 저장된 데이터를 포함해요. 데이터베이스 비용은 Time Travel을 위해 유지되는 과거 데이터도 포함해요. Snowflake는 테이블에 저장된 모든 데이터를 자동으로 압축하고 압축된 파일 크기를 사용해 계정의 총 저장 사용량을 계산해요.
또한 Data storage considerations를 참고해요.
Time Travel과 Fail-safe 비용
Time Travel과 Fail-safe 요금은 데이터가 변경된 때부터 각 24시간 기간(즉, 1일)에 대해 계산돼요. 과거 데이터가 유지되는 일 수는 테이블 유형과 테이블의 Time Travel 보존 기간을 기반으로 해요.
Snowflake는 업데이트되거나 삭제된 개별 테이블 행을 복원하는 데 필요한 정보만 유지해 과거 데이터에 필요한 저장량을 최소화해요. 결과적으로 저장 사용량은 변경된 테이블의 백분율로 계산돼요. 테이블의 전체 복사본은 테이블이 드롭되거나 잘릴 때만 유지돼요.
또한 Storage costs for Time Travel and Fail-safe를 참고해요.
임시·일시적 테이블 비용
Time Travel과 Fail-safe와 관련된 저장 비용을 관리하는 데 도움이 되도록, Snowflake는 temporary와 transient 두 가지 테이블 유형을 제공해요. 임시·일시적 테이블은 영구 테이블과 같은 요금이 발생하지 않아요.
- 일시적(transient)·임시(temporary) 테이블은 명시적으로 드롭될 때까지 Snowflake가 내 계정에 청구하는 저장 요금에 기여해요. 이 테이블 유형에 저장된 데이터는 존재하는 동안 계정에 청구되는 전체 저장 요금에 기여해요.
- 임시 테이블은 보통 ETL 또는 다른 세션 특정 데이터 같은 비영구적 세션 특정 과도 데이터에 사용돼요. 임시 테이블은 관련 세션의 수명 동안만 존재해요. 세션이 끝나면 임시 테이블 데이터가 제거되고 복구할 수 없어요. 임시 테이블은 그것을 만든 특정 세션 밖에서 접근할 수 없어요.
- 일시적 테이블은 명시적으로 드롭될 때까지 존재하고 적절한 권한이 있는 모든 사용자에게 사용 가능해요.
- 일시적·임시 테이블은 0일 또는 1일의 Time Travel 보존 기간을 가질 수 있어요.
- 일시적·임시 테이블은 Fail-safe 기간이 없어요.
- 일시적·임시 테이블은 최대 1일치의 저장 비용을 발생시킬 수 있어요.
다음 표는 테이블 유형에 따른 다양한 시나리오를 보여줘요.
| 테이블 유형 | Time Travel 보존 기간(일) | Fail-safe 기간(일) | 유지되는 최소·최대 과거 데이터(일) |
|---|---|---|---|
| Permanent | 0 또는 1(Snowflake Standard Edition) | 7 | 7, 8 |
| 0~90(Snowflake Enterprise Edition) | 7 | 7, 97 | |
| Transient | 0 또는 1 | 0 | 0, 1 |
| Temporary | 0 또는 1 | 0 | 0, 1 |
임시·일시적 테이블로 저장 비용 관리
데이터를 영구, 임시, 또는 일시적 테이블 중 어디에 저장할지 선택할 때 다음을 고려해요.
- 임시 테이블은 만들어진 세션이 끝나면 드롭돼요. 임시 테이블에 저장된 데이터는 테이블이 드롭된 후 복구할 수 없어요.
- 일시적 테이블의 과거 데이터는 Time Travel 보존 기간이 끝난 후 Snowflake가 복구할 수 없어요. Snowflake와 독립적으로 복제하거나 재생성할 수 있는 데이터에만 일시적 테이블을 사용해요.
- 팩트 테이블 같은 장수명 테이블은 Fail-safe로 완전히 보호되도록 항상 영구로 정의해야 해요.
- 단명 테이블(즉, <1일)(예: ETL 작업 테이블)은 Fail-safe 비용을 없애기 위해 일시적으로 정의할 수 있어요.
- 다운타임과 손실된 데이터를 다시 로드하는 데 필요한 시간이 요소라면, 영구 테이블은 추가 Fail-safe 비용에도 불구하고 일시적 테이블보다 더 나은 전체 솔루션을 제공할 수 있어요.
참고
테이블의 기본 유형은 영구(permanent)예요. 테이블을 임시 또는 일시적으로 정의하려면 테이블 생성 중에 유형을 명시적으로 지정해야 해요.
하이브리드 테이블 저장 비용
하이브리드 테이블 저장 비용은 저장하는 데이터의 양에 따라 달라져요. 저장 비용은 기가바이트(GB)당 균일 월별 요금을 기반으로 해요. 하이브리드 테이블 저장의 단위 가격을 다루는 Snowflake Service Consumption Table의 Table 3(b)를 참고해요.
데이터의 행 저장소(row-store) 복사본에 대한 하이브리드 테이블 저장은 전통적인 Snowflake 저장보다 더 비싸다는 점을 유의해요. 컬럼 저장소(객체 저장소)의 현재 데이터 복사본은 청구되지 않아요.
과거 Time Travel 데이터는 표준 저장 가격으로 청구돼요.
자세한 내용은 Evaluate cost for hybrid tables를 참고해요.
테이블, 스키마, 데이터베이스 클로닝 비용
Snowflake의 제로 카피 클로닝 기능은 어떤 테이블(하이브리드 테이블 제외), 스키마, 또는 데이터베이스의 "스냅샷"을 빠르게 찍고, 처음에 기본 저장을 공유하는 그 객체의 파생 복사본을 만드는 편리한 방법을 제공해요. 이는 추가 비용을 발생시키지 않는(클론 객체에 변경이 있을 때까지) 즉각적 백업을 만드는 데 매우 유용할 수 있어요.
그러나 클로닝은 각 클론이 자체 별도 수명 주기를 가지므로 총 저장 사용량 계산을 더 복잡하게 만들어요. 이는 원본 객체나 클론에 대한 변경을 서로 독립적으로 할 수 있고, 이러한 변경이 CDP(Clone Data Protection)를 통해 보호된다는 것을 의미해요.
예를 들어 테이블의 클론을 만들면 클론은 클론 시점에 원본 테이블의 모든 기존 마이크로 파티션을 공유하므로 저장을 사용하지 않아요. 그러나 행은 원본 테이블과 독립적으로 클론에 추가, 삭제, 또는 업데이트될 수 있어요. 클론에 대한 각 변경은 클론이 배타적으로 소유하고 CDP를 통해 보호되는 새 마이크로 파티션을 만들어요.
또한 클론은 클론의 수·반복에 제한 없이 클로닝될 수 있어(예: 클론의 클론의 클론을 만들 수 있음), 각각 자체 공유·독립 저장 부분을 가진 클론 객체의 n-수준 계층을 만들어요.
Cross-Cloud Auto-Fulfillment 비용
Cross-Cloud Auto-Fulfillment는 수동 데이터 복제 없이 다른 클라우드 리전의 소비자에게 데이터 제품을 제공하게 해줘요. 데이터 제품이 다른 리전으로 자동 이행되면 저장과 다른 비용이 발생해요. 자세한 내용은 Auto-fulfillment costs를 참고해요.
저장 요청 비용
외부 쿼리 엔진이 Snowflake Horizon Catalog를 통해 Snowflake Storage를 사용하는 Apache Iceberg™ 테이블에 접근하면, Snowflake는 기본 저장 시스템에 보내진 각 HTTP 요청에 대해 요청당 요금을 청구해요. 요율은 요청 유형에 따라 달라져요.
- PUT, COPY, POST, PATCH, LIST 작업은 "class 1" 요청으로 청구돼요.
- GET과 SELECT 작업은 "class 2" 요청으로 청구돼요.
Snowflake는 Horizon Catalog를 통한 테이블 접근에 대해서만 청구해요. Snowflake 쿼리 엔진을 사용한 직접 접근은 요금이 부과되지 않아요. FDN과 스테이지 접근 같은 비-Iceberg 접근은 저장 요청 요금을 발생시키지 않아요. 자세한 내용은 Request cost를 참고해요.
더 알아보기
- Exploring storage cost