본문 바로가기
Data Engineering

GPDB (vs. PostgreSQL, Architecture, Query)

by 행뱁 2021. 5. 16.

#Greenplum_Database

 

[1] GPDB vs. PostgreSQL

SMP/MPP, OSS/Commercial을 기준으로 DBMS를 비교한 표 (https://rfriend.tistory.com/377)

- GPDB는 PostgreSQL을 기반으로 하는 MPP* DBMS임 (PostgreSQL은 SMP*)

- 여러 개의 디스크 기반 DB 인스턴스들이 하나의 DBMS처럼 작동함 (분산 병렬 처리)

- SQL 지원, 특징, Config 옵션, 사용자 기능 측면은 PostgreSQL과 매우 비슷함

 

- GPDB가 PostgreSQL에 비해 추가 지원하는 기능들은...

. Postgres Planner 뿐만 아니라 GPORCA도 쿼리 플래닝에 사용

. 시스템 카탈로그, Optimizer, 쿼리 실행기, 트랜젝션 매니저 수정/강화 (for 병렬 구조)

. 외부 테이블 병렬 로딩, 자원 관리, 쿼리 최적화, 스토리지 강화 (Append-Optimized Storage, Column Storage) (for BI 워크로드)

 

정리하자면...

GPDB는 대용량 분산 처리용 PostgreSQL의 확장 버전이며 서로 대체될 수 있는 위치의 DBMS다.

GPDB보다는 PostgreSQL이 더 많이 쓰이는 듯하며, PostgreSQL은 Uber, Netflix, Instagram, Spotify, Twitch, Reddit 등 많은 회사에서 사용 중이다.

 

 

[2] MPP (= Massively Parallel Processing)

- 각각의 CPU가 독립된 Memory와 Disk를 할당받아 분산 병렬 처리가 가능하며 "Shared Noting Architecture" 라고도 함

- 반대 개념은 SMP (= Symmetric Multi Processing) 로, CPUs가 Memory와 Disk를 공유함 → "Shared Everything Architecture"

- MPP는 노드 수에 비례해 연산 속도가 빠르고 Scale out 하기 편리하지만, 복잡하고 관리가 어려우며 비용이 비쌈

- 구조 그림은 여기를 참고

 

 

[3] GPDB Architecture

https://gpdb.docs.pivotal.io/6-16/admin_guide/intro/arch_overview.html

 

- 마스터 (mdw)

. 클라이언트 커넥션 담당 (with psql, JDBC, ODBC, libpq)

. 클라이언트의 SQL문을 받아서

. 세그먼트들에 워크로드를 분담하고

. 그 결과들을 모아 조정한 다음 (sort 등) 클라이언트에 결과 반환

. global system catalog*를 저장하며, 유저 데이터는 저장하지 않음 (유저 데이터는 세그먼트에만 존재)

※ Global system catalog: GPDB의 메타를 저장하는 System table의 집합

 

- 스탠바이 마스터 (smdw)

. 장애를 대비해 스탠바이

 

- 세그먼트 (sdw)

. 유저 테이블과 인덱스를 저장

. 테이블 별 분산키에 의해 세그먼트에 나눠서 저장되며, 각 세그먼트에는 distinct 데이터가 저장됨

. 어떤 세그먼트 내의 데이터를 제공해야 하는 경우, 그 세그먼트에서 프로세스가 실행됨

. 세그먼트는 세그먼트 호스트라는 서버에서 실행됨 (1세그먼트 호스트에 2~8세그먼트)

 

 

[4] GPDB Query

- Volcano-style Query engine

. 실행 계획을 수립하고 물리 연산자의 트리를 생성 → 물리 연산자로 테이블을 평가 → 쿼리 결과 전달

 

---> To be continued... "About Greenplum Query Processing"

 

 


Reference

GPDB Official Documentation - "About the Greenplum Architecture" [1], [2], [4]

https://gpdb.docs.pivotal.io/6-16/admin_guide/intro/arch_overview.html

 

GPDB vs. PostgreSQL - 각각을 사용하는 회사들 [1]

https://stackshare.io/stackups/greenplum-database-vs-postgresql#decisions

 

MPP와 SMP 등 GPDB 전반적 내용 [1], [2]

https://rfriend.tistory.com/377 

 

GPDB Architecture [3]

https://stricky.tistory.com/43 (읽어볼 만한 글 많음)

http://blog.naver.com/eastjun1354/221749994758 (실제 설치)

 

GPDB Official Documentation - "About Greenplum Query Processing" [4] (정리 안함)

https://gpdb.docs.pivotal.io/6-16/admin_guide/query/topics/parallel-proc.html#topic1

 

GPDB 속도 개선 (대충 읽음)

https://m.blog.naver.com/jesus4sk/220991727284 (읽어볼 만한 글 많음)

 

여담으로... GPDB 개발사인 Pivotal이 2019년 말에 vmware로 인수되었다고 한다. ㅎㅋ

댓글