

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Redshift 데이터 웨어하우스 아키텍처 구성 요소
<a name="data-warehouse-arch-components"></a>

Amazon Redshift 데이터 웨어하우스의 핵심 아키텍처 구성 요소를 기본적으로 이해하는 것이 좋습니다. 이 지식은 최적의 성능을 위해 쿼리와 테이블을 설계하는 방법을 더 잘 이해하는 데 도움이 될 수 있습니다.

Amazon Redshift의 데이터 웨어하우스는 다음과 같은 핵심 아키텍처 구성 요소로 구성됩니다.
+ **클러스터** - 하나 이상의 컴퓨팅 노드로 구성된 클러스터는 Amazon Redshift 데이터 웨어하우스의 핵심 인프라 구성 요소입니다. 컴퓨팅 노드는 외부 애플리케이션에 투명하지만 클라이언트 애플리케이션은 리더 노드와만 직접 상호 작용합니다. 일반적인 클러스터에는 두 개 이상의 컴퓨팅 노드가 있습니다. 컴퓨팅 노드는 리더 노드를 통해 조정됩니다.
+ **리더 노드** - 리더 노드는 클라이언트 프로그램 및 모든 컴퓨팅 노드에 대한 통신을 관리합니다. 또한 리더 노드는 쿼리가 클러스터에 제출될 때마다 쿼리 실행 계획을 준비합니다. 계획이 준비되면 리더 노드는 코드를 컴파일하고 컴파일된 코드를 컴퓨팅 노드로 배포한 후 쿼리 결과를 처리하도록 각 컴퓨팅 노드에 데이터 조각을 할당합니다.
+ **컴퓨팅 노드** - 컴퓨팅 노드에서 쿼리를 실행합니다. 리더 노드는 쿼리를 실행하는 계획의 개별 요소에 대해 코드를 컴파일하고 개별 컴퓨팅 노드에 코드를 할당합니다. 그러면 컴퓨팅 노드가 컴파일 코드를 실행한 후 최종 집계를 위해 중간 결과를 리더 노드에 다시 보냅니다. 각 컴퓨팅 노드에 전용 CPU와 메모리 그리고 연결된 디스크 스토리지가 있습니다. 그래도 워크로드가 증가하더라도 노드 수를 늘리거나, 노드 유형을 업그레이드하거나, 혹은 두 가지 방법 모두 사용하여 클러스터의 컴퓨팅 용량과 스토리지 용량을 늘릴 수 있습니다.
+ **노드 조각** - 컴퓨팅 노드는 조각이라는 단위로 분할됩니다. 컴퓨팅 노드의 분할된 조각은 노드의 메모리 및 디스크 공간의 일부로 할당되고, 여기에서 노드에 할당되는 워크로드 일부를 처리합니다. 그러면 각 조각이 병렬 방식으로 실행되어 작업을 완료합니다. 데이터는 특정 테이블의 [분산 스타일](https://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-best-dist-key.html) 및 분산 키를 기반으로 여러 조각에서 분산됩니다. 데이터를 균등하게 배포하면 Amazon Redshift가 조각에 워크로드를 균등하게 할당하고 병렬 처리의 이점을 극대화할 수 있습니다. 컴퓨팅 노드당 조각 수는 노드 유형에 따라 결정됩니다. 자세한 내용은 Amazon Redshift 설명서의 [Amazon Redshift의 클러스터 및 노드](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#rs-about-clusters-and-nodes)를** **참조하세요.
+ **대량 병렬 처리(MPP)** - Amazon Redshift는 MPP 아키텍처를 사용하여 복잡한 쿼리와 방대한 양의 데이터도 빠르게 처리합니다. 여러 컴퓨팅 노드가 데이터의 일부에서 동일한 쿼리 코드를 실행하여 병렬 처리를 극대화합니다.
+ **클라이언트 애플리케이션** - Amazon Redshift는 다양한 데이터 로드, 데이터 추출, 전환, 적재(ETL), 비즈니스 인텔리전스(BI) 보고, 데이터 마이닝 및 분석 도구와 통합됩니다. 모든 클라이언트 애플리케이션은 리더 노드를 통해서만 클러스터와 통신합니다.

다음 다이어그램에서는 Amazon Redshift 데이터 웨어하우스의 아키텍처 구성 요소가 함께 작동하여 쿼리를 가속화하는 방법을 보여줍니다.



![클라이언트에서 쿼리를 처리하는 Amazon Redshift 클러스터의 리더 노드 및 컴퓨팅 노드.](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/query-best-practices-redshift/images/redshift-data-warehouse.png)


쿼리 수명 주기에는 7단계가 있습니다.

1. 쿼리 수신 및 구문 분석:
   + 리더 노드가 쿼리를 수신하고 SQL 구문을 분석합니다.
   + 구문 분석기에서 원래 쿼리에 대한 논리적 구조를 나타내는 초기 쿼리 트리를 생성합니다.
   + Amazon Redshift는 이 쿼리 트리를 쿼리 옵티마이저에 제공합니다.

1. 쿼리 최적화:
   + 옵티마이저가 쿼리를 평가하고 필요한 경우 효율성을 극대화하기 위해 쿼리를 재작성합니다.
   + 이 최적화 프로세스에는 여러 관련 쿼리를 생성하여 단일 쿼리를 대체하는 작업이 포함될 수도 있습니다.

1. 쿼리 계획 생성:
   + 옵티마이저는 실행을 위한 쿼리 계획(또는 필요한 경우 여러 계획)을 생성합니다.
   + 쿼리 계획에서는 조인 유형, 조인 순서, 집계 방법, 데이터 분산 요구 사항과 같은 실행 옵션을 지정합니다.

1. 실행 엔진 변환:
   + 실행 엔진이 쿼리 계획을 단계, 세그먼트 및 스트림으로 변환합니다.
     + **단계** - 쿼리 실행 중에 필요한 개별 작업을 나타냅니다. 컴퓨팅 노드에서 쿼리, 조인 또는 기타 데이터베이스 작업을 수행할 수 있도록 단계를 결합할 수 있습니다.
     + **세그먼트** - 단일 프로세스에서 실행할 수 있는 여러 단계를 결합합니다. 이는 컴퓨팅 노드 조각에서 실행할 수 있는 가장 작은 컴파일 단위입니다. (조각은 Amazon Redshift의 병렬 처리 단위입니다.)
     + **스트림** - 사용 가능한 컴퓨팅 노드 조각에 분산된 세그먼트 모음.
   + 실행 엔진은 이러한 단계, 세그먼트 및 스트림을 기준으로 컴파일된 코드를 생성합니다. 컴파일된 코드는 해석된 코드보다 실행 속도가 빠르고 소비하는 컴퓨팅 용량도 적습니다.
   + 리더 노드는 컴파일된 코드를 컴퓨팅 노드로 브로드캐스트합니다.

1. 병렬 실행:
   + 이 단계는 각 스트림에 대해 한 번 수행됩니다.
   + 컴퓨팅 노드 조각에서 쿼리 세그먼트를 병렬로 실행합니다.
   + 이때 Amazon Redshift는 최적화된 네트워크 통신, 메모리 사용, 디스크 관리를 최적화하여 한 쿼리 계획 단계의 중간 결과를 다음으로 전달합니다.
   + 이 최적화는 보다 빠른 쿼리 실행 속도에 기여합니다.

1. 스트림 처리:
   + 이 단계는 각 스트림에 대해 한 번 수행됩니다.
   + 엔진은 효율적인 병렬 처리를 위해 각 스트림에 대해 실행 가능한 세그먼트를 생성합니다.

1. 최종 정렬 및 집계:
   + 리더 노드는 쿼리에 필요한 모든 최종 정렬 또는 집계를 처리합니다.
   + 완료 후 리더 노드는 결과를 클라이언트로 반환합니다.

시스템 아키텍처에 대한 자세한 내용은 [데이터 웨어하우스 시스템 아키텍처](https://docs.aws.amazon.com/redshift/latest/dg/c_high_level_system_architecture.html)를 참조하세요.