Amazon Redshift 와 MPP(Massively Parallel Processing) 에 대하여

jkim2791·2021년 8월 4일
1

1.Redshift 란?

Amazon Redshift delivers up to 3x better price-performance than other cloud data warehouses. Amazon Redshift takes advantage of AWS designed-hardware and machine learning (ML) to deliver the best price performance at any scale. This includes using the AWS Nitro System to accelerate data compression and encryption, ML techniques to analyze queries, and graph optimization algorithms to automatically organize and store data for faster query results.
Credit

위의 내용은 AWS 공식 사이트에서 가져온 원문이고 한마디로 정리하면 Cloud Data Warehouse 라는 말이다.

2. Redshift 특징

  • Column oriented storage
  • OLAP 워크로드에 적합하다.
  • Modified PostgreSQL 형식이다.
  • Cloud Managed system 이다.
  • 대부분의 관계형 데이터베이스(RDB)는 각각의 쿼리가 돌아갈 때마다 하나의 머신에서 하나의 CPU에서 처리된다. 하지만 Redshift는 Table Partitioning 을 통한 병렬 처리로, 하나의 쿼리가 여러대의 CPU에서 처리된다. 이 방식을 MPP(Massively Parallel Processing) 라고 한다.

2.1 MPP (Massively Parallel Processing)

  • MPP를 사용하면 대용량 데이터에 대한 복잡한 쿼리를 빠르게 실행할 수 있다.
  • Redshift에서는 여러 컴퓨팅 노드가 병렬로 작동하고 모든 쿼리 처리를 처리하여 최종 집계 결과를 얻는다.
  • 각 노드는 할당된 데이터 부분에 대해 동일한 컴파일된 쿼리 세그먼트를 실행한다.
  • Redshift는 데이터를 병렬로 처리할 수 있도록 테이블의 Columns을 컴퓨팅 노드에 배포한다.

2.2. Columnar Data Storage

  • Columnar data storage는 Amazon Redshift의 최고의 속성 중 하나이다.
  • 데이터베이스 테이블을 위한 Columnar data storage는 전체 디스크 I/O 요구 사항을 줄인다. 이는 분석 쿼리 성능을 최적화하는 데 중요한 요소이다. 이렇게 하면 디스크에서 로드해야 하는 데이터의 양이 줄어든다. 메모리에 더 적은 데이터를 로드하면 쿼리를 실행할 때 Redshift가 더 많은 In Memory 처리를 수행할 수 있다.

2.3 Data Compression - 데이터 압축

  • Data Compression은 저장할 때 데이터 크기를 줄이는 column level 작업이다.
  • Redshift는 데이터를 압축하여 디스크 I/O 요구 사항을 줄여 결국 쿼리 성능을 향상시킨다.
  • 쿼리 실행 시 압축된 데이터를 메모리로 읽은 다음 압축을 해제한다.
  • 실행을 위해 메모리에 더 적은 데이터를 로드하면 Redshift가 데이터 분석을 위해 더 많은 메모리를 할당할 수 있다.
  • Redshift는 Columnar data storage를 사용하여 유사한 데이터를 순차적으로 저장하므로 Columnar data 유형에 연결된 적응형 압축 인코딩이 가능하다.
  • 압축(Compression)을 적용하는 가장 좋은 방법은 Redshift가 최적의 압축 인코딩을 적용하도록 하는 것이다.

2.4 Query Optimizer

  • Redshift 쿼리 옵티마이저는 MPP 및 Columnar data storage 속성을 활용하여 대규모 데이터 세트에 대한 복잡한 분석 쿼리를 처리하기 위한 상당한 개선 사항을 구현한다.
  • 이는 빠른 쿼리 실행을 수행하기 위해 최적화된 쿼리 실행 계획을 생성한다.

2.5 Result Caching

  • Redshift는 최근 쿼리 결과를 리더 노드의 메모리에 버퍼링한다. 이렇게 하면 구문 분석(syntax check, Symantec check etc.)을 수행하고 실행 계획을 생성하는 것을 방지할 수 있다. 이는 쿼리 실행 시간을 줄이고 쿼리 및 DB 성능을 향상시키는 데 도움이 된다. 실행을 위한 쿼리가 수신되면 Redshift는 버퍼에서 유효한 일치 항목이 있는지 확인한 다음 버퍼링된 결과를 사용자에게 반환한다.
  • Default로 활성화되어 있다.

2.6 Compiled Code

  • 리더 노드는 클러스터의 사용 가능한 모든 노드에 최적화된 컴파일된 코드를 배포한다.
  • 쿼리를 컴파일하면 인터프리터와 관련된 오버헤드가 제거되므로 사용자 쿼리 속도가 빨라진다.
  • 컴파일된 코드는 버퍼링되고 동일한 클러스터의 모든 세션에서 공유되므로 다른 매개변수를 사용하여 동일한 쿼리의 후속 실행이 더 빨라진다.
  • 실행 엔진은 JDBC, ODBC 및 PSQL 연결 프로토콜에 대해 서로 다른 코드를 컴파일한다. 예를 들어 처음으로 동일한 쿼리를 실행하는 다른 프로토콜을 사용하는 두 클라이언트는 처음 컴파일 코드를 갖게 된다.

3. Redshift 아키텍쳐

Reference of this part

3.1 Cluster 클러스터

  • Redshift 측면에서 클러스터는 하나 이상의 컴퓨팅 노드 집합이다.
  • 아래에 설명된 두 가지 유형의 노드 리더 노드컴퓨팅 노드가 있다.
  • 클러스터에 2개 이상의 컴퓨팅 노드가 있고 모든 컴퓨팅 노드 및 클라이언트 애플리케이션과의 외부 통신과 조정하기 위해 추가 리더 노드가 있는 경우가 있다.
  • 단일 컴퓨팅 노드의 경우 컴퓨팅 노드와 리더 노드 역할을 동시에 수행한다.

3.2 Leader Node 리더 노드

  • 리더 노드는 클라이언트 애플리케이션과 상호 작용하고 컴퓨팅 노드와 통신하여 작업을 수행한다.
  • DB 작업을 수행하기 위한 실행 계획을 구문 분석하고 생성한다.
  • 실행 계획에 따라 코드를 컴파일 한 후, 컴파일된 코드는 프로비저닝된 모든 컴퓨팅 노드에 배포되고 해당 데이터 부분은 각 노드에 배포된다.

3.3 Compute Node 컴퓨트 노드

  • 리더 노드의 주요 책임은 코드를 컴파일하고 외부 응용 프로그램 및 클라이언트 응용 프로그램과 상호 작용하는 것이다.

  • 각 컴퓨팅 노드에는 기본적으로 노드 유형에 따라 결정되는 자체 전용 CPU, 메모리 및 스토리지가 있다.

  • 리더 노드는 실행 계획의 각 단계를 컴파일하고 모든 컴퓨팅 노드에 할당한다.

  • 컴퓨팅 노드는 주어진 컴파일된 코드의 실행을 수행하고 중간 결과를 리더 노드로 다시 보내 클라이언트 애플리케이션의 각 요청에 대한 최종 결과를 집계한다.

  • 워크로드, 컴퓨팅 용량에 따라 노드 수를 추가하거나 노드 유형을 업그레이드하거나 둘 다 추가하여 클러스터의 스토리지를 향상할 수 있다.

  • AWS Redshift는 상위 수준에서 두 가지 노드 유형을 제공한다.
    · Dense storage nodes (ds1 or ds2)
    · Dense compute nodes (dc1 or dc2)
    Max Total tables — 900 [For large and xlarge cluster node types and 20000 for 8xlarge cluster node types]

3.4 Node Slices 노드 슬라이스

  • Compute Node는 슬라이스로 더 분할된다.
  • 각 슬라이스에는 노드 메모리의 일부, 즉 노드에 주어진 작업 부하를 수행하는 디스크 공간이 할당된다.
  • 리더 노드는 슬라이스에 대한 쿼리 또는 기타 데이터베이스 작업을 위해 슬라이스에 데이터를 배포하는 것을 관리한다.
  • 모든 슬라이스는 병렬로 작동하여 작업을 완료한다. 슬라이스 수는 클러스터의 노드 크기에 따라 결정됨.

3.5 Internal Network 내부 네트워크

  • Internal Network는 리더 노드와 컴퓨팅 노드 간의 통신을 통해 다양한 데이터베이스 작업을 수행한다.
  • Redshift는 리더 및 컴퓨팅 노드 전반에 걸쳐 고속의 개인용 보안 통신을 제공하기 위해 고대역폭 연결, 다양한 통신 프로토콜을 제공한다.

3.6 Database 데이터베이스

  • 클러스터에는 하나 이상의 데이터베이스가 포함된다.
  • 사용자 데이터는 컴퓨팅 노드에 저장된다.
  • Redshift는 RDBMS이므로 다른 RDBMS 애플리케이션과 호환된다. - DML과 같은 OLTP 기능을 포함하여 일반적인 RDBMS와 동일한 기능을 제공하지만 대용량 데이터 세트에 대한 고성능 분석 및 보고에 최적화되어 있다.
  • 사용자 정의 데이터베이스 60/클러스터 및 총 스키마 9900/클러스터의 제한이 있음

3.7 Connections 커넥션

  • Redshift는 Postgre SQL용 JDBC 및 ODBC 드라이버를 사용하여 클라이언트 애플리케이션과 상호 작용한다.

3.8 Client Applications 클라이언트 어플리케이션

  • AWS Redshift는 ETL, 비즈니스 인텔리전스 보고 및 분석 도구와 같은 다양한 클라이언트 도구와 연결할 수 있는 유연성을 제공(for e.g. Matillion for Redshift).
  • 업계 표준 PostgreSQL을 기반으로 하며 대부분의 기존 SQL 클라이언트 응용 프로그램은 호환되며 변경 사항이 거의 또는 전혀 없이 작동.

이 외에도 기능 및 보안등 다른 자세한 특징들은 잘 정리된 이 링크를 참고해주세요.


틀린부분이나 개선사항이 있다면 피드백 환영합니다 :)
Feedback is welcome :)


References

0개의 댓글