1. Amazon Redshift Cluster Architecture

Leader node

  • SQL endpoint
  • Store metadata
  • Coordinates parallel SQL processing

Compute nodes

  • Local, columnar storage
  • Executes queries in parallel
  • Load, backup, restore


Node slices

  • 개별 노드는 복수의 slices로 구성
  • Slices별 메모리,CPU, Disk 공간 할당
  • Slices별 독립적인 워크로드를 병렬로 실행


  • 데이터 백업시 전송(In Transit)/저장(At rest) 암호화 기능 제공
  • Amazon S3로 로딩, 백업, 복구 수행
  • 클러스터 용량 만큼의 백업스토리지 기본 제공(무료)
  • 타 리전으로 스냅샷 비동기 복제 기능 제공
  • Streaming restore를 통해 빠르게 쿼리 재개 가능
  • 디스크 장애, 노드의 복구는 자동으로 관리됨


2. Amazon Redshift 기능

  • 데이터 Load/Unload
  • 컬럼 압축(Column Compression)
  • 데이터 분산(Data Distribution)
  • Spectrum 기능
  • 데이터 정렬(Sorting Data) 와 Zone Maps
  • 백업 및 복구
  • 업그레이드 및 확장


2.1. 데이터 Load/Unload

    1) Redshift의 데이터 Load 는 아래와 같은 기능을 제공한다.

  • S3 : 병렬적인 데이터 로딩 지원
  • Dynamo DB : Copy 명령어를 통해 DDB Table로 로딩
  • EMR : Copy 명령어를 통해 병렬 로딩 지원
  • Remote 호스트에서 데이터 로딩 : EC2등의 호스트에 ssh접속 복수의 호스트에 개별적인 연결 후, 병렬 로딩 지원


   2) Redshift의 데이터 Unload는 Amazon S3로 저장할 수 있는 기능을 제공한다.

2.2. 컬럼 압축(Column Compression)

  • Compression은 DW 시스템이 스토리지에서 데이터를 읽는 크기를 줄여 IO 최소화 시키고, 쿼리 성능을 향상 시키는 주요 기능
  • COPY 명령을 사용해서 Amazon Redshift로 데이터를 로딩하면 데이터 분석을통해 최적의 압축 수행
  • 압축 기능의 자동 적용을 위해 COPY 명령어 사용을 권장


2.3. 데이터 분산(Data Distribution)

   1) Redshift는 분산형(MPP) 시스템

  • 클러스터는 Leader node와 Compute node로 구성
  • Compute node는 하나 이상의 slices로 구성
  • 각 slices는 데이터를 포함

   2) Amazon Redshift Optimizations

  • 쿼리는 모든 slices 들에 걸쳐 병렬 수행 : 최적의 쿼리 성능은 모든 Slices들에 걸쳐 데이터를 고르게 분산 


    


  • DISTKEY(Distribution key)

           - 명시적으로 지정한 컬럼을 기준으로 각 레코드의 슬라이스 배치가 결정됨
           - 컬럼 카디널리티에 따라 슬라이스간 상당한 편차가 발생 가능함.

           예) 여러 테이블에서 조인의 대상이 되는 경우 DISTKEY로 분산

  • ALL

           - 모든 레코드가 각 컴퓨팅 노드에 동일하게 복제함.

           예) 작은 테이블은 ALL(마스터 테이블)

  • EVEN

           - 각 레코드가 슬라이스에 라운드 로빈 방식으로 분산,균등하게 데이터 저장함.

           예) 조인을 자주하지 않고 비정규화 된 테이블을 EVEN으로 분산


2.4. Spectrum 기능



2.5. 데이터 정렬(Sorting Data) 와 Zone Maps

  • Slices내에서, 데이터는 sort key를 기반으로 정렬
  • 쿼리에서 가장 빈번하게 사용되는 것을 sort key로 사용
  • sort key 적용 시 Redshift가 전체 블록을 읽는 것을 피할 수 있음.


2.6. 백업 및 복구

   2.6.1. 백업

  • Amazon S3로 자동으로 중분 백업 데이터 저장
  • 시스템 스냅샷에 대한 유지기간 설정(1~35일)
  • 필요에 따라 사용자가 수동으로 스냅샷 생성 가능
  • Streaming restore 기능 지원으로 클러스터가 만들어지면 즉시 쿼리 수행 가능

   2.6.2. 복구

  • 스냅샷을 이용하여 클러스터 All 또는 특정 Table 복원 가능
  • 노드의 자동 복구 기능 제공
  • 자주 사용되는 데이터가 먼저 복구

2.7. 업그레이드 및 확장

  • 온라인 중에 resizing 실행가능(Read Only 모드로 전환)
  • 백그라운드에서 새로운 클러스터 프로비전닝
  • 데이터는 노드간 병렬로 복제 수행
  • 소스 클러스터에 대한 비용만 발생


3. Redshift 요금

Redshift Spectrum에서 스캔한 byte 수에 대해 비용이 부과되며, 쿼리당 최소 10MB를 기준으로 다음 MB 단위로 올림 처리된다.

Redshift Spectrum을 사용하면 스캔한 데이터의 테라바이트당 5 USD를 기준으로, 다음 메가바이트로 반올림 처리되므로 쿼리당 최소 10메가바이트의 요금이 부과된다.
예를 들어 10GB의 데이터를 스캔하는 경우, 0.05 USD가 부과되고, 1테라바이트의 데이터를 스캔하는 경우, 5 USD가 부과된다.

CREATE/ALTER/DROP TABLE과 같은 DDL(Data Definition Language) 문 및 실패한 쿼리에 대해서는 비용이 부과되지 않는다.

- Redshift Spectrum이 지원하는 형식 중 하나를 사용하여 데이터를 압축하면 스캔한 용량이 줄어들어 비용을 절감.
- Parquet 또는 ORC와 같은 컬럼 방식으로 데이터를 저장하면, Redshift Spectrum에서 쿼리에 필요한 열만 스캔하게 되므로 비용 절감.



+ Recent posts