Redshift란?

yjbenkang·2024년 10월 31일

Redshift의 특징

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

  • 2PB의 데이터까지 처리 가능

    • 최소 160GB로 시작해서 점진적으로 용량 증감 가능
  • Still OLAP

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

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

    • 레코드가 들어있는 파일을 S3로 복사 후 COPY 커맨드로 Redshift로 일괄 복사
  • 고정 용량/비용 SQL 엔진

    • 최근 가변 비용 옵션도 제공 (Redshift Serverless)
  • 데이터 공유 기능 (Datashare):

    • 다른 AWS 계정과 특정 데이터 공유 가능. Snowflake의 기능을 따라함
  • 다른 데이터 웨어하우스처럼 ㅔrimary key uniqueness를 보장하지 않음

    • 프로덕션 데이터베이스들은 보장함
  • Postgresql 8.x와 SQL이 호환됨

    • 하지만 Postgresql 8.x의 모든 기능을 지원하지는 않음

    • 예를 들어 text 타입이 존재하지 않음

  • Postgresql 8.x를 지원하는 툴이나 라이브러리로 액세스 가능

    • JDBC/ODBC
  • SQL이 메인 언어라는 점

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

Redshift 옵션과 가격 정책 (미국 동부 기준)

2023년 5월 기준 가격

Dense Storage : Storage에 비중을 둔 옵션 (데이터 크기)
Dense Compute : Compute(메모리나 CPU)에 비중을 둔 옵션 (처리 속도 위주이므로 SSD 사용하는 걸 볼 수 있음)
Managed Storage : 위 두 옵션 모두에 비중을 둔 옵션

Redshift의 스케일링 방식

  • 용량이 부족해질 때마다 새로운 노드를 추가하는 방식으로 스케일링
  • Scale Out 방식과 Scale Up 방식
    • dc2.large 하나인 상황이라면 최대 0.16TB의 용량을 갖게 된다
      • dc2.large 한대를 더 추가. 총 0.32TB -> Scale Out
      • 아니면 사양이 더 좋은 것으로 업그레이드 (dc2.8xlarge 한 대로 교체) -> Scale Up
  • 이를 Resizing이라 부르며 Auto Scaling 옵션을 설정하면 자동으로 이뤄짐

    snowflake, BigQuery의 방식과는 굉장히 다름 (이들은 가변 비용)
    여기서는 특별히 용량이 정해져있지 않고 쿼리를 처리하기 위해 사용한 리소스에 해당하는 비용 지불
    Snowflake와 BigQuery가 훨씬 더 스케일하는 데이터베이스 기술이라고 볼 수 있음
    장단점이 존재함 -> 가변비용은 비용의 예측이 불가능하다는 단점이 존재함
    Redshift에도 가변비용 옵션이 존재함 -> Redshift Serverless

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

  • Redshift가 두 대 이상의 노드로 구성되면 그 시점부터 테이블 최적화가 중요

  • Distkey, Diststyle, Sortkey 세 개의 키워드를 알아야함

    • Diststyle은 레코드 분배가 어떻게 이뤄지는지를 결정
      • all, even, key (디폴트는 "even")
    • Distkey는 레코드가 어떤 컬럼을 기준으로 배포되는지 나타냄 (diststyle이 key인 경우)
    • Sortkey는 레코드가 한 노드내에서 어떤 컬럼을 기준으로 정렬되는지 나타냄
      - 이는 보통 타임스탬프 필드가 됨
  • Diststyle이 key인 경우 컬럼 선택이 잘못되면 ?

    • 레코드 분포에 Skew가 발생 -> 분산 처리의 효율성이 사라짐
    • BigQuery나 Snowflake에서는 이런 속성을 개발자가 지정할 필요가 없음 ( 시스템이 알아서 선택)
profile
keep growing

0개의 댓글