1. Amazon Redshift Cluster Architecture
Leader node
Compute nodes
Node 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 기능
- Redshift Spectrum은 데이터를 Redshift에 적재하지 않고 S3 내에 있는 데이터 소스를 직접 읽을 수 있는 기능이다.
- Amazon Redshift Spectrum 참고 사이트 : https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/c-using-spectrum.html
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 요금
- Amazon Redshift 요금 참고 사이트 : https://aws.amazon.com/ko/redshift/pricing/
- Redshift Spectrum 쿼리당 요금
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에서 쿼리에 필요한 열만 스캔하게 되므로 비용 절감.