[DataWearhouse] Redshift 특징 및 구성_TIL

Redshift의 특징

- AWS에서 지원하는 데이터 웨어하우스 서비스

- 2PB의 데이터까지 처리 가능 : 최소 160GB로 시작해서 점진적으로 용량 증감 가능

- Still OLAP

  • 응답속도가 빠르지 않기 때문에 프로덕션 데이터베이스로 사용불가

- 컬럼 기반 스토리지

  • 레코드 별로 저장하는 것이 아니라 컬럼별로 저장함
  • 컬럼별 압축이 가능하며 컬럼을 추가하거나 삭제하는 것이 아주 빠름

- 벌크 업데이트 지원

  • 레코드가 들어있는 파일을 S3로 복사 후 COPY커맨드로 Redshift로 일괄 복사

- 고정 용량/비용 SQL 엔진

  • 최근 가변 비용 옵션도 제공(Redshift Serverless)

- 데이터 공유 기능 (Datashare):

  • 다른 AWS계정과 특정 데이터 공유 가능. Snowflake의 기능을 따라함

- 다른 데이터 웨어하우스처럼 primary key uniqueness를 보장하지 않음

  • 프로덕션 데이터베이스(ex. MySQL, Oracle...)들은 보장함

- Postgresql 8.x와 SQL이 호환됨

  • 하지만 Postgresql 8.x의 모든 기능을 지원하지 않음 (ex. text타입 존재하지 않음)

- Postgresql 8.x를 지원하는 툴이나 라이브러리로 액세스 가능 (JDBC / ODBC)

- 다시한번 SQL이 메인 언어라는 점 명심

  • 그래서 데이터 모델링(테이블 디자인)이 아주 중요

Redshift 스케일링 방식

  • 용량이 부족할 때 마다 새로운 노드를 추가하는 방식으로 스케일링
  • 예) Scale Out 방식과 Scale UP 방식
    • dc2.large가 하나면 최대 0.16TB까지의 용향을 갖게됨
    • 공간이 부족해지면 dc2.large한대를 더 추가 -> 총 0.32TB(Scale OUT)
    • 아니면 사양을 더 좋은 것으로 업그레이드 -> dc2.8xlarge한대로 교체 (Scale Up)
  • 이를 Resizing이라 부르며 Auto Scaling옵션을 설정하면 자동으로 이뤄짐
  • 이는 Snowflake나 BigQuery의 방시과는 굉장히 다름
    • 여기서는 특별히 용량이 정ㅎ져있지 않고 쿼리를 처리하기 위해 사용한 리소스에 해당하는 비용 지불
    • 즉 Snowlake와 BigQuery가 훨씬 더 스케일하는 데이터베이스 기술이라 볼 수 있음
    • 장단점 존재 -> 비용의 예측이 불가능하다는 단점 존재

 

Redshift의 레코드 분배와 저장 방식

  • Redshift가 두 대 이상의 노드로 구성되면 그 시점부터 테이블 최적화가 중요
    • 한 테이블의 레코드들을 어떻게 다수의 노드로 분배할 것이냐!
  • Distkey, Diststyle, Sortkey 세 개의 키워드를 알아야함
    • Diststype은 레코드 분배가 어떻게 이뤄지는지를 결정  (디폴트는 "even")
      • all : 모든 노드에 같은 데이터를 저장
      • even : 각 노드에 골고루 저장
      • key : 특정 key(unique column)를 이용해 해당 모아서 저장
    • Distkey는 레코드가 어떤 컬럼을 기준으로 배포되는지 나타냄 (diststyle이 key인 경우)
    • Sortkey는 레코드가 한 노드내에서 어떤 컬럼을 기준으로 정렬되는지 나타냄
      • 이는 보통 타임스탬프 필드가 됨
  • Diststyle이 key인 경우 컬럼 선택 잘못되면?
    • key별로 분배 시 특정 key가 많으면 레코드 분포에 Skew(하나의 노드에 만 적재가 많이 되는 현상) 발생 -> 분산처리의 효율성이 사라짐
    • BigQuery나 Snowflake에서는이런 속성을 개발자가 지정할 필요가 없음 (시스템이 알아서 선택)
  • Redshift의 레코드 분배와 저장 방식 예

AWS Redshift Serverless 런칭 및 셋팅

  • AWS Free trial 계정 생성 (3개월 동안 300달러 내로 무료사용)
  • Redshift 검색 후 Redshift Serverless free trial 선택
  • admin 계정 생성 : Redshift Serverless 메인 페이지 -> 네임스페이스 구성 -> 관리자 암호 변경
  • 네트워크 셋팅