데이터 웨어하우스 시스템 아키텍처
이 섹션에서는 다음 그림과 같이 Amazon Redshift 데이터 웨어하우스 아키텍처를 구성하는 요소를 설명합니다.
클라이언트 애플리케이션
Amazon Redshift는 다양한 데이터 로드 및 추출, 변환, 로드(ETL) 도구, 비즈니스 인텔리전스(BI) 보고, 데이터 마이닝 및 분석 도구와 통합됩니다. Amazon Redshift는 개방형 표준 PostgreSQL을 기반으로 하므로 대부분의 기존 SQL 클라이언트 애플리케이션은 최소한의 변경만으로 작동합니다. Amazon Redshift SQL과 PostgreSQL의 중요한 차이점에 대한 정보는 Amazon Redshift 및 PostgreSQL 섹션을 참조하세요.
클러스터
Amazon Redshift 데이터 웨어하우스의 핵심 인프라 구성 요소는 클러스터입니다.
클러스터는 하나 이상의 컴퓨팅 노드로 구성됩니다. 클러스터에 두 개 이상의 컴퓨팅 노드가 제공된 경우 추가 리더 노드가 컴퓨팅 노드를 조정하고 외부 통신을 처리합니다. 클라이언트 애플리케이션은 리더 노드와만 직접 상호작용합니다. 컴퓨팅 노드는 외부 애플리케이션에서 인식됩니다.
리더 노드
리더 노드는 클라이언트 프로그램과 일어나는 통신을 비롯해 컴퓨팅 노드와 일어나는 모든 통신을 관리합니다. 또한 구문을 분석하여 데이터베이스 작업, 특히 복합 쿼리의 결과를 얻는 데 필요한 단계를 연이어 실행하기 위한 실행 계획을 작성합니다. 리더 노드는 이렇게 작성된 실행 계획에 따라 코드를 컴파일하여 컴퓨팅 노드로 배포한 후 데이터 구간을 각 컴퓨팅 노드로 할당합니다.
리더 노드는 쿼리가 컴퓨팅 노드에 저장된 테이블을 참조할 때만 SQL 문을 컴퓨팅 노드에 배포합니다. 다른 모든 쿼리는 리더 노드에서만 실행됩니다. Amazon Redshift는 리더 노드에서만 특정 SQL 기능을 구현하도록 설계되었습니다. 이러한 함수를 사용하는 쿼리는 컴퓨팅 노드에 저장되어 있는 테이블을 참조할 경우 오류를 반환합니다. 자세한 내용은 리더 노드에서 지원되는 SQL 함수 단원을 참조하십시오.
노드 계산
리더 노드는 실행 계획을 구성하는 개별 요소마다 코드를 컴파일하여 각 컴퓨팅 노드에 할당합니다. 그러면 컴퓨팅 노드가 컴파일 코드를 실행한 후 최종 집계를 위해 중간 결과를 리더 노드에 다시 보냅니다.
각 컴퓨팅 노드마다 전용 CPU와 메모리가 따로 있으며, 이는 노드 유형에 따라 결정됩니다. 그래도 워크로드가 증가하더라도 노드 수를 늘리거나, 노드 유형을 업그레이드하거나, 혹은 두 가지 방법 모두 사용하여 클러스터의 컴퓨팅 용량을 늘릴 수 있습니다.
Amazon Redshift에서는 컴퓨팅 요구에 맞는 여러 노드 유형을 제공합니다. 각 노드 유형의 자세한 내용은 Amazon Redshift 관리 가이드의 Amazon Redshift 클러스 섹션을 참조하세요.
Redshift 관리형 스토리지
데이터 웨어하우스 데이터는 별도의 스토리지 계층 Redshift 관리형 스토리지(RMS)에 저장됩니다. RMS는 Amazon S3 스토리지를 사용하여 스토리지를 페타바이트로 확장할 수 있는 기능을 제공합니다. RMS를 사용하면 컴퓨팅 및 스토리지에 대해 독립적으로 확장하고 비용을 지불할 수 있으므로 컴퓨팅 요구 사항에 따라서만 클러스터 크기를 조정할 수 있습니다. 자동으로 고성능 SSD 기반 로컬 스토리지를 Tier-1 캐시로 사용합니다. 또한 데이터 블록 온도, 데이터 블록 기간 및 워크로드 패턴과 같은 최적화를 활용하여 고성능을 제공하는 동시에 필요한 경우 조치 없이 스토리지를 Amazon S3로 자동 확장합니다.
노드 조각
컴퓨팅 노드는 다수의 조각으로 분할됩니다. 분할된 조각은 다시 각각 노드의 메모리 및 디스크 공간으로 할당되고, 여기에서 노드에 할당되는 워크로드를 처리합니다. 리더 노드는 조각에 대한 데이터 분산을 관리하면서 쿼리 워크로드 또는 기타 데이터베이스 작업 워크로드를 각 조각으로 할당합니다. 그러면 각 조각이 병렬 방식으로 실행되어 작업을 완료합니다.
노드당 조각 수는 클러스터의 노드 크기에 따라 달라집니다. 각 노드 크기의 슬라이스 수에 대한 자세한 내용은 Amazon Redshift 관리 가이드의 클러스터 및 노드 정보 섹션을 참조하세요.
테이블을 생성할 때는 열 1개를 분산 키로 지정할 수 있습니다(선택 사항). 이후 테이블에 데이터를 로드하면 테이블에 정의되어 있는 분산 키에 따라 행이 노드 조각으로 분산됩니다. 좋은 배포 키를 선택하면 Amazon Redshift가 병렬 처리를 사용하여 데이터를 로드하고 쿼리를 효율적으로 실행할 수 있습니다. 분산 키 선택에 대한 자세한 내용은 최상의 배포 스타일 선택 단원을 참조하세요.
내부 네트워크
Amazon Redshift는 고 대역폭 연결, 근접성 및 맞춤형 통신 프로토콜을 활용하여 리더 노드와 컴퓨팅 노드 사이에 개인 고속 네트워크 통신을 제공합니다. 컴퓨팅 노드는 클라이언트 애플리케이션이 절대로 직접 액세스하지 못하도록 격리된 네트워크에서 실행됩니다.
데이터베이스
클러스터에는 하나 이상의 데이터베이스가 포함되어 있습니다. 사용자 데이터는 컴퓨팅 노드에 저장됩니다. SQL 클라이언트는 리더 노드와 통신하며, 리더 노드는 컴퓨팅 노드로 쿼리 실행을 조정합니다.
Amazon Redshift는 관계형 데이터베이스 관리 시스템(RDBMS)이므로 다른 RDBMS 애플리케이션과 호환됩니다. 데이터 삽입 및 삭제와 같은 온라인 트랜잭션 처리(OLTP) 기능을 포함하여 일반적인 RDBMS와 동일한 기능을 제공하지만, Amazon Redshift는 매우 큰 데이터 집합의 고성능 분석 및 보고를 위해 최적화되어 있습니다.
Amazon Redshift는 PostgreSQL을 기반으로 합니다. Amazon Redshift와 PostgreSQL은 데이터웨어 하우스 애플리케이션을 설계하고 개발할 때 고려해야 할 몇 가지 매우 중요한 차이점이 있습니다. Amazon Redshift SQL이 PostgreSQL과 어떻게 다른지 자세히 알아보려면 Amazon Redshift 및 PostgreSQL 섹션을 참조하세요.