Amazon RedShift

lv2dev·2024년 2월 2일
0

AWS

목록 보기
1/2

RedShift란?

  • AWS에서 완전관리형으로 제공해주는 클라우드 데이터웨어하우스
  • 클러스터(노드집합)을 생성하고, 클러스터가 사용할 준비가 되면(프로비저닝 완료) 데이터 적재 및 분석 가능
  • PostgreSQL을 기반으로 해서 표준 SQL을 이용한 데이터처리를 지원하고, BI도구로 분석할 수 있다.

데이터웨어하우스

  • 정보(data) + 창고(warehouse)가 결합한 의미로 의사결정에 도움을 주기 위해 분석가능한 형태로 변환한 데이터들이 저장되어있는 중앙저장소
  • 트랜잭션 시스템, RDB 및 기타 소스의 데이터들이 데이터 웨어하우스에 들어간다.
  • 어플리케이션이나 운영시스템 내부에서 raw data들을 모아두고 이들 중 분석할 수 있는 데이터들을 창고처럼 쌓아둔 다음에, 이 데이터들을 데이터사이언티스트같은 사람들이 BI나 SQL을 이용해서 데이터를 엑세스한다.

데이터웨어하우스는 왜 필요할까?

  • 대규모 데이터의 분석작업을 처리하는데는 한계가 있기 때문에 데이터웨어하우스가 필요하다.

RedShift 구성요소

  • 리더노드와 하나이상의 컴퓨팅 노드로 구성되어 있다.

Leader Node

  • SQL연결 엔드포인트, 외부 어플리케이션은 리더노드와 통신
  • 노드간의 통신을 관리하는 노드로 메타데이터를 저장하고, 클러스터의 모든 쿼리수행을 관리한다.

Compute Node

  • 실제 작업을 수행하는 노드로 각 노드마다 여러개의 슬라이스를 보유하고 있다.
  • 병렬로 쿼리를 수행하고 S3 기반으로 백업 및 복구를 수행할 수 있다.

Slices

  • 각 노드는 여러개의 슬라이스로 구성되어 있다.
  • 각 슬라이스는 별도의 메모리, cpu, 디스크공간이 할당되어 있다.
  • 슬라이스별로 독립적인 워크로드를 병렬적으로 실행한다.

RedShift 특징

대용량 '병렬'처리(Massive Parallel Processing(MPP))

  • 분산형(MPP) 시스템
  • 클러스터를 리더노드와 컴퓨팅 노드로 구성
  • 컴퓨팅 노드는 하나 이상의 슬라이스로 구성
  • 슬라이스에 데이터를 포함한다.
  • 데이터를 병렬로 처리할 수 있도록 테이블의 행을 계산노드에 배포하고, 각 테이블마다 분산키를 선택하거나, All이나 Even 방식 중 하나의 방법으로 슬라이스를 선택한다. 그리고 쿼리들은 모든 슬라이스들에 걸쳐 병렬수행을 한다.

컬럼기반 데이터스토리 (Columnar data storage)

  • 데이터베이스에 저장하는 테이블 정보를 행 기반이 아닌 컬럼(열)기반으로저장한다
  • 컬럼으로 압축함으로써 데이터를 읽는 크기를 줄여 디스크io를 줄이고 쿼리성능을 향상시킬 수 있다.
  • 압축기능의 자동 적용을 위해 copy명령으로 redshift로 데이터를 로딩하면서 데이터분석 할 수 있도록 압축 수행

분산

DISTKEY(Distribution Key)

  • 명시적으로 지정한 컬럼을 기준으로 각 레코드의 슬라이스 배치가 결정됨
  • 컬럼 카디널리티에 따라 슬라이스간 상당한 편차가 발생 가능함
  • 예) 여러 테이블에서 조인의 대상이 되는 경우 DISTKEY로 분산

ALL

  • 모든 레코드가 각 컴퓨팅 노드에 동일하게 복제함
  • 예) 작은 테이블은 ALL(마스터 테이블)

EVEN

  • 각 레코드가 슬라이스에 라운드로빈 방식으로 분산, 균등하게 데이터 저장함
  • 예) 조인을 자주하지 않고 비정규화 된 테이블을 EVEN으로 분산

기능

Copy 명령 : 데이터로딩

  • COPY 명령을 통해 S3, DynamoDB, EMR에 있는 데이터들을 병렬적으로 로딩할 수 있다.
  • INSERT 명령을 사용하여 데이터를 테이블에 추가하는 것 보다 더 빠름

신속한 확장과 백업

  • 클라우드 기반이다보다 필요할때마다 설정을 변경해서 db를 확장하거나 축소할 수 있다.
  • s3에 자동으로 백업 데이터가 저장된다. 필요에 따라 수동으로 스냅샷을 생성해서 백업을 할 수도 있다.

PostgreSQL과 다른점

보조인덱스 없음

  • 보조인덱스 작업 같이 소규모 OLTP 처리에 적합한 postgreSQL 기능은 성능개선을 위해 제외

지원하지 않는 쿼리 형식

  • ALTER COLUMN 타입의 명령 불가
  • ADD COLUMN은 각 ALTER TABLE명령 당 한개 컬럼만 가능
  • INSERT, UPDATE, DELETE 사용 시 WITH caluse를 지원하지 않음

OLTP-OLAP

  • OLTP DB는 주로 서비스 운영에 활용되는 데이터베이스이며, ROW 단위 UPDATE와 INSERT가 잦은 서비스 형태로 사용된다.
  • OLAP DB는 상대적으로 큰 규모의 데이터에 분석적인 쿼리, aggregation을 위한 무거운 쿼리가 요구된다.
  • 당연히 Redshift는 OLAP 목적으로 사용된다.

참고

profile
언제나 레벨업을 하고 싶은 영원한 lv1

0개의 댓글