기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Redshift 데이터 웨어하우스 아키텍처 구성 요소
Amazon Redshift 데이터 웨어하우스의 핵심 아키텍처 구성 요소를 기본적으로 이해하는 것이 좋습니다. 이 지식은 최적의 성능을 위해 쿼리와 테이블을 설계하는 방법을 더 잘 이해하는 데 도움이 될 수 있습니다.
Amazon Redshift의 데이터 웨어하우스는 다음과 같은 핵심 아키텍처 구성 요소로 구성됩니다.
-
클러스터 - 하나 이상의 컴퓨팅 노드로 구성된 클러스터는 Amazon Redshift 데이터 웨어하우스의 핵심 인프라 구성 요소입니다. 컴퓨팅 노드는 외부 애플리케이션에 투명하지만 클라이언트 애플리케이션은 리더 노드와만 직접 상호 작용합니다. 일반적인 클러스터에는 두 개 이상의 컴퓨팅 노드가 있습니다. 컴퓨팅 노드는 리더 노드를 통해 조정됩니다.
-
리더 노드 - 리더 노드는 클라이언트 프로그램 및 모든 컴퓨팅 노드에 대한 통신을 관리합니다. 또한 리더 노드는 쿼리가 클러스터에 제출될 때마다 쿼리 실행 계획을 준비합니다. 계획이 준비되면 리더 노드는 코드를 컴파일하고 컴파일된 코드를 컴퓨팅 노드로 배포한 후 쿼리 결과를 처리하도록 각 컴퓨팅 노드에 데이터 조각을 할당합니다.
-
컴퓨팅 노드 - 컴퓨팅 노드에서 쿼리를 실행합니다. 리더 노드는 쿼리를 실행하는 계획의 개별 요소에 대해 코드를 컴파일하고 개별 컴퓨팅 노드에 코드를 할당합니다. 그러면 컴퓨팅 노드가 컴파일 코드를 실행한 후 최종 집계를 위해 중간 결과를 리더 노드에 다시 보냅니다. 각 컴퓨팅 노드에 전용 CPU와 메모리 그리고 연결된 디스크 스토리지가 있습니다. 그래도 워크로드가 증가하더라도 노드 수를 늘리거나, 노드 유형을 업그레이드하거나, 혹은 두 가지 방법 모두 사용하여 클러스터의 컴퓨팅 용량과 스토리지 용량을 늘릴 수 있습니다.
-
노드 조각 - 컴퓨팅 노드는 조각이라는 단위로 분할됩니다. 컴퓨팅 노드의 분할된 조각은 노드의 메모리 및 디스크 공간의 일부로 할당되고, 여기에서 노드에 할당되는 워크로드 일부를 처리합니다. 그러면 각 조각이 병렬 방식으로 실행되어 작업을 완료합니다. 데이터는 특정 테이블의 분산 스타일 및 분산 키를 기반으로 여러 조각에서 분산됩니다. 데이터를 균등하게 배포하면 Amazon Redshift가 조각에 워크로드를 균등하게 할당하고 병렬 처리의 이점을 극대화할 수 있습니다. 컴퓨팅 노드당 조각 수는 노드 유형에 따라 결정됩니다. 자세한 내용은 Amazon Redshift 설명서의 Amazon Redshift의 클러스터 및 노드를 참조하세요.
-
대량 병렬 처리(MPP) - Amazon Redshift는 MPP 아키텍처를 사용하여 복잡한 쿼리와 방대한 양의 데이터도 빠르게 처리합니다. 여러 컴퓨팅 노드가 데이터의 일부에서 동일한 쿼리 코드를 실행하여 병렬 처리를 극대화합니다.
-
클라이언트 애플리케이션 - Amazon Redshift는 다양한 데이터 로드, 데이터 추출, 전환, 적재(ETL), 비즈니스 인텔리전스(BI) 보고, 데이터 마이닝 및 분석 도구와 통합됩니다. 모든 클라이언트 애플리케이션은 리더 노드를 통해서만 클러스터와 통신합니다.
다음 다이어그램에서는 Amazon Redshift 데이터 웨어하우스의 아키텍처 구성 요소가 함께 작동하여 쿼리를 가속화하는 방법을 보여줍니다.
쿼리 수명 주기에는 7단계가 있습니다.
-
쿼리 수신 및 구문 분석:
-
리더 노드가 쿼리를 수신하고 SQL 구문을 분석합니다.
-
구문 분석기에서 원래 쿼리에 대한 논리적 구조를 나타내는 초기 쿼리 트리를 생성합니다.
-
Amazon Redshift는 이 쿼리 트리를 쿼리 옵티마이저에 제공합니다.
-
-
쿼리 최적화:
-
옵티마이저가 쿼리를 평가하고 필요한 경우 효율성을 극대화하기 위해 쿼리를 재작성합니다.
-
이 최적화 프로세스에는 여러 관련 쿼리를 생성하여 단일 쿼리를 대체하는 작업이 포함될 수도 있습니다.
-
-
쿼리 계획 생성:
-
옵티마이저는 실행을 위한 쿼리 계획(또는 필요한 경우 여러 계획)을 생성합니다.
-
쿼리 계획에서는 조인 유형, 조인 순서, 집계 방법, 데이터 분산 요구 사항과 같은 실행 옵션을 지정합니다.
-
-
실행 엔진 변환:
-
실행 엔진이 쿼리 계획을 단계, 세그먼트 및 스트림으로 변환합니다.
-
단계 - 쿼리 실행 중에 필요한 개별 작업을 나타냅니다. 컴퓨팅 노드에서 쿼리, 조인 또는 기타 데이터베이스 작업을 수행할 수 있도록 단계를 결합할 수 있습니다.
-
세그먼트 - 단일 프로세스에서 실행할 수 있는 여러 단계를 결합합니다. 이는 컴퓨팅 노드 조각에서 실행할 수 있는 가장 작은 컴파일 단위입니다. (조각은 Amazon Redshift의 병렬 처리 단위입니다.)
-
스트림 - 사용 가능한 컴퓨팅 노드 조각에 분산된 세그먼트 모음.
-
-
실행 엔진은 이러한 단계, 세그먼트 및 스트림을 기준으로 컴파일된 코드를 생성합니다. 컴파일된 코드는 해석된 코드보다 실행 속도가 빠르고 소비하는 컴퓨팅 용량도 적습니다.
-
리더 노드는 컴파일된 코드를 컴퓨팅 노드로 브로드캐스트합니다.
-
-
병렬 실행:
-
이 단계는 각 스트림에 대해 한 번 수행됩니다.
-
컴퓨팅 노드 조각에서 쿼리 세그먼트를 병렬로 실행합니다.
-
이때 Amazon Redshift는 최적화된 네트워크 통신, 메모리 사용, 디스크 관리를 최적화하여 한 쿼리 계획 단계의 중간 결과를 다음으로 전달합니다.
-
이 최적화는 보다 빠른 쿼리 실행 속도에 기여합니다.
-
-
스트림 처리:
-
이 단계는 각 스트림에 대해 한 번 수행됩니다.
-
엔진은 효율적인 병렬 처리를 위해 각 스트림에 대해 실행 가능한 세그먼트를 생성합니다.
-
-
최종 정렬 및 집계:
-
리더 노드는 쿼리에 필요한 모든 최종 정렬 또는 집계를 처리합니다.
-
완료 후 리더 노드는 결과를 클라이언트로 반환합니다.
-
시스템 아키텍처에 대한 자세한 내용은 데이터 웨어하우스 시스템 아키텍처를 참조하세요.