AWS Redshift 01 : 특징과 아키텍쳐 (MPP, 리더노드, 컴퓨팅노드, 슬라이스)

Gbuum·2022년 10월 10일
1

🔮 Redshift의 특징

  • PostgreSQL과 ParAccel DB기반으로 개발된 DW이다.
    업계 표준 PostgreSQL로 쿼리 작성이 가능하다. 다만, Redshift와 PostgreSQL 쿼리에 약간의 차이는 있을 수 있다.
  • MPP
    대량병렬처리, MPP(Massively Parrallel Processing)로 설계된 DW로 적은 횟수의 대용량의 쿼리를 빠르게 수행하는 것이 가능하다.
  • 칼럼기반 스토리지 아키텍쳐를 가진다.
    칼럼기반 DB이기 때문에, Group By와 Join 이 많고, 특정 칼럼만 조회하는 OLAP에 적합한다.
    또한, 칼럼의 데이터 타입에 따라서 적합한 압축방식을 지원한다.
  • WORM
    Write Once Read Many, 데이터 업데이트나 삭제보다 조회 분석 쿼리에 최적화되었다.
  • AWS의 서비스와 유연하게 융합이 가능하다.
    예를 들어, Amazon Athena를 통해 Federated Query를 통해 Amazon의 다양한 DB로 부터 ETL을 수행할 수 있다.
    S3의 특정 경로에 저장된 복수의 파일들을, Copy 구문을 통해서 병렬로 한 번에 빠르게 데이터를 ETL할 수 있다.
    Unload구문을 통해, S3로 병렬로 빠르게 데이터를 업로드 할 수 있다.

🔮 Redshift 아키텍쳐

  • 클라이언트 어플리케이션
    Redshift는 DW로서 다양한 클라이언트 어플리케이션과 통합이 가능하다. 다른 DB로의 ETL 또는, BI 툴과의 통합이 대표적인 예시이다.

  • 클러스터
    클러스터(Cluster)는 Redshift 아키텍쳐에서 최상위의 개념이다. 클러스터는 한 개 이상의 컴퓨팅 노드로 구성된다. 두개 이상의 컴퓨팅 노드부터는 한 개의 리더 노드가 추가된다.
    클러스터는 DW의 용량에 따라서 리사이징/스케일 업이 가능하다. 클러스터의 종류에 따라서, Redshift의 크기를 조정할 수 있다.
    클러스터는 스냅샷으로 S3에 백업이 가능하다.

  • 리더노드
    리더노드는 클라이언트 프로그램과 일어나는 통신을 비롯해 컴퓨팅 노드와 일어나는 모든 통신을 관리한다. 또한 리더노드에는 메타데이터가 저장되어 있으며 쿼리 구문을 분석하여 쿼리 실행 계획을 작성한다. 리더노드에서 작성된 실행 계획에 따라서 컴파일된 코드는 컴퓨팅 노드로 배포 및 할당된다. 다만, 리더 노드에서 컴퓨팅 노드로 배포되는 쿼리는 컴퓨팅 노드에 저장된 테이블을 참조하는 경우에 한정된다. 즉, 컴퓨팅노드를 거치지 않고 리더노드에서만 실행되는 SQL 함수들도 존재한다.

  • 컴퓨팅 노드
    리더노드가 할당한 컴파일 코드는 각 컴퓨팅 노드에서 실행된 이후 그 결과값을 리더 노드로 다시 보낸다. 리더 노드에서는 각 컴퓨팅 노드의 결과물들을 종합하여 통신하는 client로 결과를 전달한다.
    각 컴퓨팅 노드는 전용으로 할당된 CPU,메모리,디스크,스토리지가 있다. 클러스터의 리사이징에 따라서 각 컴퓨팅 노드에 할당되는 용량 조절이 가능한 것이다.
    각 컴퓨팅 노드에는, 분산키에 따라서 테이블의 데이터가 분해되어 저장된다. 따라서, 특정 컴퓨팅 노드에 데이터가 밀집하여 적재되지 않도록 분산키를 적절하게 설정하는 것이 중요하다. (분산키 설정 방식 :https://velog.io/@qja1357/AWS-Redshift-02-Distkey)

  • 노드 슬라이스(조각)
    각 컴퓨팅 노드는 다수의 슬라이스로 분할된다. 분할된 슬라이스는 다시 각 컴퓨팅 노드의 메모리 및 디스크 공간을 할당 받는다. 즉 각 슬라이스가 실질적으로 데이터를 처리하는 주체이며, Redshift 아키텍쳐의 최하위 개념이다.
    컴퓨팅 노드에 할당된 각 분산키에 따라서 테이블의 Row는 각 슬라이스에 저장된다.

  • 내부 네트워크
    Redshift는 고 대역폭으로 연결된, 통신 프로토콜을 활용하여 리더노드와 컴퓨팅 노드 사이에 고속 네트워크 통신을 제공한다. 다만, 내부 네트워크를 통해서 데이터가 통신되는 것은 불필요한 경우 쿼리 비용으로 산정된다. 내부 네트워크 비용을 분석하기 위해서는 쿼리 플랜을 면밀하게 분석하여, 쿼리튜닝 또는 테이블 재설계를 하는 것이 중요하다.
    (쿼리 계획, Explain 분석 : https://velog.io/@qja1357/AWS-Redshift-03-QueryExplain)


출처

데이터 웨어하우스 시스템 아키텍처

profile
BI/DATA Engineer

0개의 댓글