728x90
1. Snowflake 데이터 클라우드의 기능 및 아키텍처
1.1 Snowflake 데이터 클라우드의 주요 기능
1) 탄력적 스토리지 (Elastic Storage)
- 개념: Snowflake는 데이터와 컴퓨팅 자원을 분리하여 설계되었으며, 이를 통해 스토리지와 컴퓨팅을 독립적으로 확장할 수 있습니다. 이 구조는 데이터 저장 방식과 컴퓨팅 자원을 구분하여 유연성과 비용 효율성을 제공합니다.
- 기능: 사용자가 저장하는 모든 데이터는 Snowflake의 내부 스토리지 계층에 압축 및 암호화된 형태로 저장됩니다. 데이터가 늘어날 때 자동으로 스토리지가 확장되고 필요에 따라 축소되므로, 스토리지 용량에 대해 걱정할 필요가 없습니다.
- 장점: 무제한에 가까운 스토리지를 제공하여 정형, 반정형, 비정형 데이터까지 관리할 수 있습니다. Snowflake는 마이크로 파티션 단위로 데이터를 저장하며, 파티션 가지치기(Pruning) 기법을 통해 불필요한 파티션을 빠르게 걸러내고 필요한 데이터만 조회하여 쿼리 성능을 최적화할 수 있습니다.
2) 탄력적 컴퓨팅 (Elastic Compute)
- 개념: Snowflake는 가상 웨어하우스(Virtual Warehouse)라는 컴퓨팅 리소스를 통해 데이터 처리와 분석을 수행합니다. 가상 웨어하우스는 각 작업에 맞춰 크기와 수를 유동적으로 조절할 수 있으며, 작업이 끝나면 자동으로 중지되어 비용을 절감합니다.
- 기능: 사용자는 가상 웨어하우스의 크기와 수를 자유롭게 설정할 수 있으며, 각 웨어하우스가 독립적으로 작동하기 때문에 다수의 작업을 병렬로 처리할 수 있습니다. 작업 후 자동으로 중지되어 비용 절감 효과를 얻을 수 있습니다.
- 장점: Snowflake는 멀티 클러스터 웨어하우스 기능을 제공하여 동시성 처리 능력을 향상합니다. 요청이 집중되는 시간대에 추가 클러스터를 생성해 성능 저하 없이 여러 사용자가 동시에 쿼리를 실행할 수 있습니다.
3) Snowflake의 세 계층 아키텍처 (Three-layer Architecture)
- 스토리지 계층: Snowflake의 데이터를 물리적으로 저장하는 계층으로, 데이터는 자동 압축 및 암호화를 통해 안전하게 저장됩니다.
- 컴퓨팅 계층: SQL 쿼리와 데이터 처리를 담당하는 가상 웨어하우스가 위치하는 계층으로, 컴퓨팅 자원을 자유롭게 확장하거나 축소할 수 있습니다.
- 서비스 계층: 사용자 인증, 메타데이터 관리, 쿼리 최적화 등의 기능을 제공하며, Snowflake의 데이터 관리와 보안을 위한 주요 역할을 수행합니다. 서비스 계층에는 메타데이터 캐시와 결과 캐시가 포함되어 있어 자주 실행되는 쿼리의 성능을 크게 향상시킵니다.
4) 클라우드 파트너 카테고리 (Cloud Partner Categories)
- 개념: Snowflake는 AWS, Microsoft Azure, Google Cloud Platform과 파트너십을 통해 다양한 클라우드 환경에서 사용자가 원하는 플랫폼을 선택하여 Snowflake를 구축할 수 있습니다.
- 장점: 특정 클라우드 제공업체에 구애받지 않고 Snowflake를 사용할 수 있어 다양한 클라우드 환경에서 일관된 성능을 유지할 수 있습니다. 또한 다중 리전 지원을 통해 고가용성과 장애 복구 기능을 강화하여 한 리전에서 장애가 발생하더라도 다른 리전으로 빠르게 복구할 수 있어 비즈니스 연속성을 보장합니다.
5) Snowflake 에디션 (Snowflake Editions)
- Standard Edition: 기본적인 데이터 관리 기능을 제공하며, 소규모 비즈니스에 적합한 에디션입니다.
- Enterprise Edition: 추가적인 보안 및 성능 옵션을 포함하고 있으며, Time Travel과 Fail-Safe 기능을 통해 데이터 복구가 가능합니다. Time Travel은 데이터 변경 내역을 최대 90일간 보관하여 필요 시 과거 데이터로 복구할 수 있습니다.
- Business Critical Edition: 금융 및 의료 분야와 같은 높은 보안 요건을 요구하는 환경에 적합하며, 고유한 암호화 키와 네트워크 보안 기능을 제공합니다.
- Virtual Private Snowflake (VPS): 전용 Snowflake 환경을 제공하여 가장 높은 수준의 데이터 보안과 네트워크 격리를 보장하며, 독립적인 클라우드 리소스와 네트워크 환경을 제공합니다.
1.2 주요 Snowflake 도구와 사용자 인터페이스
1) Snowsight
- 설명: Snowflake의 최신 웹 기반 UI로, 데이터베이스 관리, 쿼리 작성, 사용량 모니터링 등을 수행할 수 있습니다. 시각적 대시보드를 통해 실시간으로 데이터베이스 성능과 쿼리 히스토리를 확인할 수 있습니다.
- 특징: Snowsight는 사용자 쿼리 프로파일링 기능을 제공하여 쿼리 실행 계획 및 성능 지표를 시각적으로 분석할 수 있어 쿼리 최적화에 유용합니다.
2) SnowSQL
- 설명: Snowflake의 CLI 도구로, 명령줄에서 SQL 쿼리를 실행하고 데이터를 로드하는 등의 작업을 수행할 수 있습니다. 자동화 스크립트를 통해 일관된 데이터 처리를 지원합니다.
- 특징: SnowSQL은 로컬 컴퓨터에서 Snowflake 데이터베이스에 대한 쿼리를 자동화할 수 있으며, 명령어와 플래그를 활용해 다양한 옵션을 제공합니다. 예를 들어 snowsql -a account -u user -p password 명령어를 통해 Snowflake에 연결할 수 있습니다.
3) Snowflake 커넥터
- 설명: Python, Node.js, .NET 등 다양한 프로그래밍 언어와 애플리케이션에서 Snowflake 인스턴스에 연결할 수 있는 API입니다.
- 특징: Snowflake 커넥터는 데이터 분석 및 데이터 과학 도구와의 통합을 돕고, 외부 애플리케이션과의 데이터 흐름을 원활하게 만듭니다.
4) Snowflake 드라이버
- 설명: JDBC와 ODBC 드라이버를 통해 BI 도구와 Snowflake를 연결할 수 있습니다. 이를 통해 SQL 쿼리를 Snowflake로 전송하고, BI 도구에서 시각화할 수 있습니다.
5) Snowpark
- 설명: Snowflake 내에서 Python, Java, Scala와 같은 언어를 사용해 데이터 처리 파이프라인을 구축할 수 있는 도구입니다. Snowflake의 컴퓨팅 리소스를 활용하여 대용량 데이터를 효과적으로 처리할 수 있습니다.
- 특징: Snowpark는 Snowflake의 데이터 워크로드를 확장하고 데이터 파이프라인을 통합하여 데이터 엔지니어링과 데이터 과학의 유연성을 극대화합니다.
6) SnowCD (Continuous Data)
- 설명: Snowflake의 연속 데이터 파이프라인으로, 데이터가 실시간으로 Snowflake에 지속적으로 로드됩니다. 이를 통해 실시간 데이터 분석이 가능합니다.
- 특징: SnowCD는 실시간 스트리밍 데이터를 Snowflake로 가져와 데이터 분석, 시각화, 보고서 작성에 활용할 수 있어 빠르게 변화하는 데이터를 관리하기에 적합합니다.
1.3 Snowflake 카탈로그 및 오브젝트
1) 데이터베이스 (Database)
- 설명: Snowflake의 최상위 데이터 오브젝트로, 여러 스키마와 테이블, 뷰를 포함하며 논리적 데이터 구성을 이룹니다. 데이터베이스는 사용자와 애플리케이션이 접근하는 모든 데이터의 집합을 구성하며, 그 안에 다양한 스키마, 테이블, 뷰 등의 구조적 오브젝트가 계층적으로 배치됩니다.
- 기능: 각 데이터베이스는 Time Travel 기능을 통해 데이터 변경 내역을 최대 90일까지 보관하며 과거 상태로 되돌릴 수 있습니다. 이를 통해 의도치 않은 데이터 손실이나 변경에 대한 복구를 지원합니다.
2) 스테이지 (Stage)
- 설명: 스테이지는 외부 또는 내부 소스에서 Snowflake로 데이터를 로드하기 위한 임시 저장 공간으로, 데이터 로드 및 언로드 작업을 손쉽게 수행할 수 있게 합니다.
- 기능: Snowflake는 내부 스테이지와 외부 스테이지를 지원합니다. 내부 스테이지는 Snowflake의 자체 스토리지에 데이터를 저장하고, 외부 스테이지는 Amazon S3, Azure Blob Storage, Google Cloud Storage와 같은 외부 클라우드 스토리지에서 데이터를 로드합니다. 스테이지를 사용하면 여러 파일 형식(CSV, JSON, Parquet 등)을 지원하여 손쉽게 데이터를 로드할 수 있습니다.
3) 스키마 (Schema)
- 설명: 데이터베이스의 논리적 하위 구조로, 데이터베이스 내에서 테이블과 뷰를 포함하는 오브젝트의 집합을 정의합니다. 스키마는 다양한 프로젝트나 부서별로 데이터를 구분하여 관리할 수 있도록 설계됩니다.
- 기능: 스키마는 사용자 권한 관리와 데이터 정리, 접근성을 높이는 데 사용되며, 특정 테이블이나 뷰에 대한 접근을 스키마 단위로 제한할 수 있습니다. Snowflake에서는 다양한 스키마를 생성하여 데이터를 계층적으로 구성할 수 있습니다.
4) 테이블 (Table)
- 설명: 구조화된 데이터를 저장하는 오브젝트로, 표 형식의 행과 열로 구성되어 SQL 쿼리를 통해 데이터를 관리할 수 있습니다.
- 기능: Snowflake는 여러 유형의 테이블을 지원합니다:
- 표준 테이블: 데이터를 영구적으로 저장하는 기본 테이블.
- 임시 테이블: 세션 동안만 데이터가 유지되는 테이블로, 세션이 끝나면 삭제됩니다.
- 단기 테이블 (Transient Table): 영구적인 데이터 저장소이지만, Fail-Safe 기능이 없는 경량 테이블입니다.
- 클론 테이블: 특정 시점의 데이터를 복사하여 새로운 테이블로 저장할 수 있으며, 데이터의 복사본을 손쉽게 생성하여 다양한 테스트에 활용할 수 있습니다.
5) 뷰 (View)
- 설명: 실제 데이터를 저장하지 않고, 특정 쿼리의 결과를 논리적 테이블 형태로 제공하는 오브젝트입니다.
- 기능: 뷰는 실시간으로 데이터를 조회하며, 복잡한 쿼리 로직을 간결하게 작성할 수 있도록 지원합니다. Snowflake는 다음과 같은 뷰를 제공합니다:
- 표준 뷰 (Standard View): 지정된 쿼리의 결과를 실시간으로 제공합니다.
- 보안 뷰 (Secure View): 데이터에 대한 권한을 추가로 설정하여, 특정 사용자나 역할에 따라 데이터 노출을 제어합니다.
- 자료 뷰 (Materialized View): 데이터의 물리적 복사본을 저장하여 조회 성능을 최적화합니다.
6) 데이터 유형 (Data Types)
- 설명: Snowflake는 다양한 데이터 유형을 지원하여 정형 데이터뿐 아니라 반정형 데이터(VARIANT, OBJECT, ARRAY)도 처리할 수 있습니다.
- 기능: Snowflake는 표준 SQL 데이터 유형인 INTEGER, VARCHAR, BOOLEAN, DATE 등과 함께, 반정형 데이터 유형을 지원하여 JSON, XML 등의 데이터를 처리할 수 있습니다. VARIANT는 반정형 데이터를 담는 데이터 유형으로, 다양한 데이터 형식이 혼합된 JSON 데이터를 손쉽게 저장하고 처리할 수 있습니다.
7) UDF 및 UDTF
- 설명: UDF(User-Defined Function)는 SQL, Python, JavaScript 등의 언어로 작성한 사용자 정의 함수로, 특정 데이터 처리 로직을 함수로 작성하여 재사용할 수 있습니다. UDTF(User-Defined Table Function)는 여러 행을 반환하는 함수입니다.
- 기능: UDF를 사용하면 복잡한 계산이나 변환 로직을 함수로 만들어 SQL 쿼리에서 재사용할 수 있으며, Python이나 JavaScript와 같은 언어를 통해 고급 데이터 처리가 가능합니다. UDTF는 테이블 형식으로 데이터를 반환하여 복잡한 데이터 조작 작업을 단순화합니다.
8) Stored Procedure
- 설명: 복잡한 논리와 절차적 SQL을 포함한 작업을 저장하고 재사용할 수 있는 Snowflake 오브젝트로, 반복적이거나 정기적인 작업을 자동화하는 데 사용됩니다.
- 기능: 저장 프로시저는 JavaScript로 작성되며, Snowflake에서 특정 쿼리와 작업을 자동화하거나 트랜잭션을 처리할 때 유용합니다. 예를 들어, 데이터를 조건에 맞게 업데이트하거나 삭제하는 작업을 스크립트로 저장하고 필요할 때 호출할 수 있습니다.
9) 스트림 (Stream)
- 설명: 스트림은 특정 테이블에서 발생한 데이터 변경 사항을 기록하여 CDC(변경 데이터 캡처)에 활용할 수 있습니다.
- 기능: 스트림은 삽입, 수정, 삭제된 행을 추적하여, 변경된 데이터를 별도로 관리하고 ETL 작업에서 변경 데이터만을 처리할 수 있게 합니다. 이를 통해 Snowflake에서 실시간 데이터 업데이트를 처리하거나 증분 로드 작업을 간편하게 수행할 수 있습니다.
10) 태스크 (Task)
- 설명: 정해진 일정에 따라 작업을 자동으로 실행하는 스케줄링 오브젝트로, ETL 및 데이터 파이프라인 작업을 자동화할 수 있습니다.
- 기능: 태스크는 시간 기반 스케줄 또는 다른 태스크와의 의존 관계를 정의하여 특정 시간이나 이벤트 발생 시 작업을 실행합니다. 이를 통해 Snowflake 내에서 정기적으로 데이터를 갱신하거나 리포트를 생성하는 작업을 자동화할 수 있습니다.
11) 파이프 (Pipe)
- 설명: Snowpipe에서 사용하는 데이터 파이프라인 오브젝트로, 데이터를 연속적으로 Snowflake로 로드할 수 있도록 합니다.
- 기능: 파이프는 외부 스토리지의 파일을 감지하고 변경 사항이 생길 때마다 데이터를 Snowflake로 로드합니다. 이를 통해 외부 소스에서 실시간 데이터를 Snowflake로 가져와 최신 상태로 유지할 수 있습니다.
12) 공유 (Share)
- 설명: 데이터 공유를 위해 사용하는 오브젝트로, 데이터를 Snowflake 내외부의 다른 계정 또는 클라우드 사용자와 안전하게 공유할 수 있습니다.
- 기능: Snowflake의 Secure Data Sharing 기능을 사용해 데이터를 쉽게 공유하며, 데이터를 복사하거나 이동하지 않고 공유할 수 있습니다. 이를 통해 공유된 데이터는 실시간으로 조회할 수 있으며, Snowflake 마켓플레이스를 통해 데이터를 공유하고 거래할 수도 있습니다.
13) 시퀀스 (Sequence)
- 설명: Snowflake에서 고유한 숫자 시퀀스를 생성하는 오브젝트로, 데이터베이스 내에서 고유한 ID를 생성할 때 주로 사용됩니다.
- 기능: 시퀀스는 자동으로 증가하는 정수를 반환하며, 주로 PK(Primary Key) 또는 고유한 ID가 필요한 경우 활용됩니다. Snowflake는 시퀀스 오브젝트를 사용하여 일관성 있는 고유 식별자를 제공할 수 있습니다.
1.4 Snowflake 스토리지 개념
1) 마이크로 파티션 (Micro-partition)
- 개념: Snowflake는 데이터를 물리적 스토리지에 마이크로 파티션이라는 작은 블록 단위(최대 16MB)로 저장합니다. 각 마이크로 파티션은 압축되어 저장되며, 물리적인 위치에 상관없이 논리적으로만 구분됩니다.
- 기능: 마이크로 파티션은 데이터를 소규모로 나누어 효율적으로 저장하며, 파티션에 메타데이터를 추가하여 빠른 검색과 쿼리 최적화를 지원합니다. 파티션에는 데이터 범위, 열 정보 등이 포함된 메타데이터가 저장되어 있어 쿼리 시 메타데이터 기반으로 검색이 가능합니다.
- 장점: 쿼리 성능 최적화를 위해 파티션 가지치기(Pruning) 기법을 사용하여, 쿼리 시 불필요한 파티션을 빠르게 걸러냅니다. 이는 특히 대량 데이터 조회 시 필요한 데이터만을 빠르게 찾는 데 유리합니다.
2) 데이터 클러스터링 (Data Clustering)
- 개념: 데이터 클러스터링은 마이크로 파티션이 특정 열 값을 기준으로 정렬되는 과정으로, 자주 조회되는 열이나 특정 범위의 데이터를 최적화하는 데 유리합니다.
- 기능: 데이터가 특정 열의 값에 따라 클러스터링되면, 쿼리 시 이 열의 데이터만을 대상으로 빠르게 검색할 수 있습니다. Snowflake는 자동 클러스터링 기능을 통해 데이터 분포를 효율적으로 관리하여, 사용자가 클러스터링을 별도로 유지할 필요 없이 최적의 상태로 유지됩니다.
- 장점: 자주 조회되는 특정 데이터 범위를 빠르게 검색할 수 있어 쿼리 성능이 향상됩니다. 또한 자동 클러스터링을 통해 데이터가 최적의 상태로 관리되어 성능 유지에 도움을 줍니다.
3) 데이터 스토리지 모니터링 (Data Storage Monitoring)
- 개념: Snowflake는 저장된 데이터의 상태와 사용량을 실시간으로 모니터링할 수 있는 도구를 제공합니다.
- 기능: Snowflake의 모니터링 도구를 통해 스토리지 사용량, 각 데이터베이스와 테이블의 스토리지 점유율 등을 확인할 수 있으며, 이를 통해 스토리지 사용을 최적화할 수 있습니다.
- 장점: 스토리지 모니터링 기능을 활용해 비효율적으로 저장된 데이터를 확인하고 최적화하여 비용 절감 및 성능 유지를 도울 수 있습니다.
Reference
https://docs.snowflake.com/ko/guides
728x90
'Snowflake' 카테고리의 다른 글
[Snowflake] Snowflake SnowPro Core 시험 Cheat Sheet 3 (성능 개념) (0) | 2024.10.29 |
---|---|
[Snowflake] SnowPro Core 시험 Cheat Sheet 2 (계정 액세스 및 보안) (0) | 2024.10.27 |
[Snowflake] Snowflake Secure Data Sharing 이해 및 사용하기 (0) | 2024.10.25 |
[Snowflake] Snowflake Time Travel 이해 및 사용하기 (0) | 2024.10.25 |
[Snowflake] Snowflake의 Iceberg 테이블이란? (12) | 2024.10.20 |