Redshift 웨어하우스 내부

Redshift 입문

Jason Myers

Principal Architect

아젠다

  • Redshift 클러스터 내부
    • 노드 유형
    • 리더 전용 함수
    • Redshift 클러스터 스토리지
  • 프레디케이트
  • Redshift Spectrum
    • 데이터베이스 구성 요소
    • 외부 테이블
Redshift 입문

Redshift 클러스터 아키텍처

리더 노드

  • 연결 제공
  • 쿼리 실행 계획 수립·분배
  • 전체 쿼리 실행 가능
  • 전용 함수 보유

컴퓨트 노드

  • 데이터 저장 제공
  • 로컬 데이터에 리더 노드 코드를 실행

Redshift 클러스터

Redshift 입문

리더 전용 함수

  • 리더에서만 실행
-- 'chocolate chip'의 11번째 위치부터 substr 선택
SELECT SUBSTR('chocolate chip', 11);

chip
  • 기본적으로 SUBSTRING 사용 권장
  • SUBSTR는 테이블 컬럼에서 오류 발생
-- 테이블의 field 컬럼에서 위치 1부터 substr 선택
SELECT SUBSTR(field, 1) FROM table;

ERROR: SUBSTR() function is not supported (Hint: use SUBSTRING instead)
Redshift 입문

노드 간 데이터 확인

SELECT host, 
       -- 사용 공간 비율 계산:
       -- 사용량에서 폐기(또는 회수 예정)량을 뺀 값을
       -- 용량으로 나눈 뒤 100을 곱함
       (used - tossed) / capacity * 100 as percent_used 
  FROM STV_PARTITIONS;
 host |  percent_used
======+==============
  0   |  24.9
  1   |  24.8
Redshift 입문

프레디케이트

SELECT table_A.columnX,
       table_B.columnY,
  FROM table_A
       INNER JOIN table_B 
          -- predicate
       ON table_B.foreign_key = table_A.primary_key 
       -- predicate
 WHERE table_B.columnZ = 'value';
  • 일반적으로 WHERE, HAVING, ON 절에 쓰이는 불리언 표현식
Redshift 입문

프레디케이트 푸시다운

푸시다운

Redshift 입문

일반적 내부 데이터베이스 구성 요소

데이터베이스 구성 요소

메타데이터 카탈로그

  • 스키마 정보 저장(컬럼, 키 등)
  • 스토리지 위치 참조

쿼리 엔진

  • 쿼리 계획 및 실행
  • 연결 제공

스토리지

  • 테이블 데이터 저장
  • 다양한 파일·테이블 형식 지원
Redshift 입문

Redshift Spectrum 아키텍처

AWS Glue 데이터 카탈로그

  • “외부” 테이블 정보를 저장

AWS S3 버킷

  • 테이블을 구성하는 파일 저장
  • CSV, JSON, 텍스트, Parquet 등 다수 형식 지원

Redshift Spectrum 아키텍처

Redshift 입문

연습해 봅시다!

Redshift 입문

Preparing Video For Download...