ssung_데이터 엔지니어링/7주차_데이터 웨어하우스 관리와 고급 SQL, BI 대시보드

데이터 웨어하우스와 고급 SQL, BI 대시보드 (4)

ssungcohol 2023. 11. 30. 23:06

Snowflake

  • 2014년 클라우드 기반 데이터웨어하우스로 시작
  • 지금은 데이터 클라우드라고 부를 수 있을 정도로 발전
  • 글로벌 클라우드 (AWS, GCP, Azure) 위에서 모두 동작 - 멀티 클라우드
  • 데이터 판매를 통한 매출을 가능하게 해주는 Data sharing/Marketplace 제공
  • ETL과 다양한 데이터 통합 기능을 제공

Snowflake 특징

  • 스토리지와 컴퓨팅 인프라가 별도로 설정되는 가변 비용 모델
    • Redshift 고정비용처럼 노드 수를 조정할 필요가 없고 distkey 등의 최적화 불필요
  • SQL 기반으로 빅데이터 저장, 처리, 분석을 가능하게 해줌
    • 비구조화된 데이터 처리와 머신러닝 기능도 제공
  • CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷 지원
    • S3, GC 클라우드 스토리지, Azure Blog Storage도 지원
  • 배치 데이터 중심이지만 실시간 데이터 처리 지원
  • Time Travel : 과거 데이터 쿼리 기능으로 트렌드를 분석하기 쉽게 해줌
  • 웹 콘솔 이외에도 Python API를 통한 관리/제어 가능
    • ODBC/JDBC 연결도 지원
  • 자체 스토리지 이외에도 클라우드 스토리지를 외부 테이블로 사용 가능
  • 멀티 클라우드와 다른 지역에 있는 데이터 공유 (Cross-Region Replication) 기능 지원
  • Snowflake의 계정 구성도 : Organization -> 1 + Account -> 1 + Databases

  • Organizations
    • 한 고객이 사용하는 모든 Snowflake 자원들을 통합하는 최상위 레벨 컨테이너
    • 하나 혹은 그 이상 Account들로 구성되며 이 모든 Account들의 접근권한, 사용트래킹, 비용들을 관리하는데 사용됨
  • Account
    • 하나의 Account는 자체 사용자, 데이터, 접근권한을 독립적으로 가짐
    • 하나의 Account는 하나 혹은 그 이상의 Database로 구성
  • Databases
    • 하나의 Database는 한 Account에 속한 데이터를 다루는 논리적인 컨테이너
    • 하나의 Database는 다수의 스키마와 거기에 속한 테이블과 뷰 등으로 구성되어 있음
    • 하나의 Database는 PB단위까지 스케일이 가능하고 독립적인 컴퓨팅 리소스를 가짐
       - 컴퓨팅 리소스 = Warehouses, Warehouses와 Databases는 일대일 관계가 아님
  • Data Marketplace
    • 데이터 메시 용어가 생기기 전부터 "데이터 마켓플레이스"라는 서비스 제공
  • Data Sharing ("Share, Don't Move")
    • 데이터 셋을 사내 혹은 파트너에게 스토리지 레벨에서 공유하는 방식

Snowflake 환경 설정 시 주의할 것

  • COPY를 사용해 벌크 업데이트를 수행할 때
    • AWS 어드민 사용자의 AWS_KEY_ID와 AWS_SECRET_KEY를 사용하면 안됨!
    • Snowflake의 S3 버킷 액세스를 위한 전용 사용자를 IAM으로 만들고 S3 읽기 권한 부여
    • 그 다음, 그 사용자의 AWS_KEY_ID와 AWS_SECRET_KEY를 사용할 것
COPY INTO dev.raw_data.session_timestamp
FROM '.....'
credentials=(AWS_KEY_ID='X..XX' AWS_SECRET_KEY='X..XX')
FILE_FORMAT = (type'CSV' skip_header=1 FIELD_OPTIONALLY_ENCLOSE_BY="")

Snowflake 사용자 권한 설정

Data Governance 관련 기능

  • Data Governance란?
    • 필요한 데이터가 적재적소에 올바르게 사용됨을 보장하기 위한 데이터 관리 프로세스
       - 품질 보장과 데이터 관련 법규 준수이 주 목적
    • 다음을 이룩하기 위함이 기본 목적
       - 데이터 기반 결정에서의 일관성
       - 데이터를 이용한 가치 만들기
       - 데이터 관련 법규 준수
  • Object Tagging
    • Enterprise 레벨에서만 가능한 기능
    • CREATE TAG로 생성
       - 문자열을 Snowflake object에 지정 가능
       - 시스템 태그도 있음
    • 지정된 tag는 구조를 따라 자동 계승
  • Data Classification
    • Enterprise 레벨에서만 가능한 기능
    • Object Tagging은 개인 정보 관리가 주요 용도 중의 하나이지만, 이를 매뉴얼하게 관리하기 쉽지 않아 나온 기능이 Data Classfication
    • 3가지 스텝으로 구성
       - Analyze : 테이블에 적용 시, 개인정보나 민감정보가 있는 컬럼들을 분류
       - Review : 사람 (데이터 엔지니어)이 보고 최종 리뷰 (결과 수정 가능)
       - Apply : 최종 결과를 System Tag로 적용
             - SNOWFLAKE.CORE.PRIVACY_CATEGORY (상위레벨)
                  - IDENTIFIER (식별자), QUASI_IDENTIFIER (준식별자), SENSITIVE
             - SNOWFLAKE.CORE.SEMANTIC_CATEGORY (하위레벨 - 세부정보)

  • Tag based Masking Policies
    • Enterprise 레벨에서만 가능한 기능
    • 먼저 Tag에 액세스 권한을 지정
       - 해당 Tag가 지정된 Snowflake Object의 액세스 권한을 그에 맞춰 제한하는 방식
    • 개인정보과 같은 Tag에 부여하는 것이 가장 많이 사용되는 패턴
       - Tag Lineage가 여기에도 적용
  • Access History
    • Enterprise 레벨에서만 가능한 기능
    • 데이터 액세스에 대한 감사 추적을 제공하여 보안과 규정 준수를 목적으로 함
       - 잠재적 보안 위반이나 무단 액세스 시도의 조사를 가능하게 해줌
       - 캡처된 정보에는 사용자 신원, IP 주소, Timestamp 및 기타 관련 세부 정보 포함
    • 'Access History'를 통해 다음 활동의 추적이 가능
       - 데이터베이스 로그린, 실행된 쿼리 테이블 및 뷰 액세스, 데이터 조작 작업
    • 해당 기능은 다른 모든 클라우드 데이터 웨어하우스에서도 제공
  • Object Dependencies
    • 데이터 거버넌스와 시스템 무결정 유지를 목저으로 함
    • 테이블이나 뷰를 수정하는 경우 이로 인한 영향을 자동으로 식별
       - 테이블 이름, 컬럼 이름을 변경하거나 삭제하는 경우
       - 데이터 리니지 분석을 자동으로 수행해줌
  • 계승 관계 분석을 통한 더 세밀한 보안 및 액세스 제어
    • 어떤 테이블의 개인정보 컬럼이 새로운 테이블을 만들 때 사용되는 경우
       - 원본 테이블에서의 권한 설정이 그대로 전파됨 (Tag 포함)
728x90