hotamul의 개발 이야기

[GPDB] Architecture 본문

Dev./Greenplum DB

[GPDB] Architecture

hotamul 2022. 12. 17. 00:13

병렬 처리 구조

Greenplum 데이터베이스(이하 GPDB)는 Postgresql 기반의 데이터베이스로 OLAP 시스템에 적합한 데이터베이스이다. GPDB는 MPP(massively parallel processing) 데이터베이스로 병렬 처리 구조 아키텍처를 가지고 있다는 특징이 있다.

 

Scale-out

GPDB는 위의 그림과 같이 Scale-out 방법으로 병렬처리를 구현했다(기존 서버를 높은 사양으로 업그레이드 하는 것이 Scale-up, 기존 서버에 추가로 서버를 연결해 데이터 용량 및 서버 부하를 분담하는 것을 Scale-out이라고 한다).

 

Master Hosts, Interconnect, Segment Hosts

GPDB는 크게 Master Hosts, Interconnect, Segment Hosts 3가지 Component로 이루어져 있다.
Master Hosts는 Client가 접근할 수 있는 유일한 입구라고 생각하면 된다. Interconnect는 GPDB의 Segment Hosts(Segment Instance)간의 연결 네트워크로 Segment Hosts(Segment Instance)간의 데이터가 이동할 수 있는 통로이다. Segment Hosts는 물리적 서버일 수도 있고 동일한 Host OS 내의 VM일 수도 있다. Segment Hosts 안에는 여러개의 Segment Instance가 있는데 이 각각의 Instance가 데이터베이스의 Worker인 엔진 Process들이다.

 

Distribution, Skew

Segment Instance가 데이터베이스의 Worker 역할을 하는 엔진 Process라고 하였는데 GPDB의 모든 테이블은 이 Segment에 분산되어 저장된다(Distribution Key를 명시하지 않을 경우 Primary Key를 기본으로 하고 Primary Key가 없을 경우 테이블의 첫 번째 컬럼으로 지정된다). GPDB는 병렬 처리가 핵심이기 때문에 데이터가 각각의 Segment에 잘 분산되어 있는 것이 가장 중요하다.

 

전체 Segment에 데이터가 분산되지 않고 특정 Segment에 데이터가 불균형하게 저장되어 있는 경우르 Skew 현상이라고 하는데 Skew에는 Data Skew, Processing Skew가 있다. 아래 그림은 Distribution과 Skew에 대한 이해를 돕기 위한 그림이다.

 

즉 GPDB는 데이터가 전체 Segment에 골고루 분산될 수 있도록 Cardinality가 높은 컬럼으로, Processing Skew가 발생하지 않도록 Join 컬럼으로 잘 사용될 수 있는 컬럼으로 Distribution Key를 설정하는 것이 매우 중요하다.

 

참고: About the Greenplum Architecture, Distribution and Skew

Comments