#Greenplum_Database
[1] GPDB vs. PostgreSQL
- 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
- 마스터 (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로 인수되었다고 한다. ㅎㅋ
'Data Engineering' 카테고리의 다른 글
Greenplum Database의 Architecture (0) | 2023.11.10 |
---|---|
반정규화 (의미, 목적, 대안, 방법) (0) | 2023.11.10 |
데이터 엔지니어링 (0) | 2021.12.20 |
True/False Positive/Negative 정리 (0) | 2020.05.07 |
Spark/Hadoop 이용할 CentOS VM 세팅하기 (2) | 2020.04.16 |
댓글