본문 바로가기
DBMS

Greenplum mpp dbms의 github 알아보기 - source code layout

by developer's warehouse 2023. 12. 6.

이 글에서는 Greenplum mpp dbms의 github readme 페이지의 내용에 대해서 설명합니다.

Greenplum mpp dbms의 github 알아보기 썸네일

Greenplum github readme

Greenplum의 github는 다음과 같습니다.

https://github.com/greenplum-db/gpdb

Greenplum 데이터베이스(GPDB)는 완전한 기능을 갖춘 고급 오픈 소스 데이터 웨어하우스로, PostgreSQL을 기반으로 합니다. 페타바이트 규모의 데이터에 대한 강력하고 신속한 분석을 제공합니다. 빅데이터 분석에 특화된 Greenplum 데이터베이스는 세계에서 가장 진보된 cost based(비용 기반) 쿼리 최적화 도구로 구동 되어 대용량 데이터에 대해 높은 분석 쿼리 성능을 제공합니다.

Greenplum 프로젝트는 Apache 2 라이선스에 따라 출시됩니다. 과거와 현재의 모든 커뮤니티 기여자에게 감사드리며, 새로운 잠재적 기여에 많은 관심을 갖고 있습니다. Greenplum 데이터베이스 커뮤니티에는 어떤 기여도 작은 것이 아니며, 모든 유형의 기여를 장려합니다.

Overview

Greenplum 클러스터는 코디네이터 서버와 여러 세그먼트 서버로 구성됩니다. 모든 사용자 데이터는 세그먼트에 상주하며, 코디네이터는 메타데이터만 포함합니다. 코디네이터 서버와 모든 세그먼트는 동일한 스키마를 공유합니다.
사용자는 항상 코디네이터 서버에 연결하며, 이 서버는 쿼리를 세그먼트에서 실행되는 조각으로 나누고 결과를 수집합니다.
자세한 내용은 프로젝트 웹사이트에서 확인할 수 있습니다.

 

Building Greenplum Database with GPORCA

GPORCA는 비용 기반 옵티마이저로, 그린플럼 데이터베이스에서 PostgreSQL 플래너와 함께 사용합니다. 그냥 ORCA, 또는 피보탈 옵티마이저라고도 합니다. GPORCA의 코드는 src/backend/gporca에 있습니다. 기본적으로 자동으로 빌드 됩니다.
 
종속성 설치하기(macOS 개발자용)
다음 macOS 단계에 따라 시스템을 GPDB에 맞게 준비하세요.
 
종속성 설치하기(Linux 개발자)
적절한 리눅스 단계에 따라 시스템을 GPDB에 맞게 준비하세요.
 

Build the database

# Initialize and update submodules in the repository
git submodule update --init

# Configure build environment to install at /usr/local/gpdb
./configure --with-perl --with-python --with-libxml --with-gssapi --prefix=/usr/local/gpdb

# Compile and install
make -j8
make -j8 install

# Bring in greenplum environment into your running shell
source /usr/local/gpdb/greenplum_path.sh

# Start demo cluster
make create-demo-cluster
# (gpdemo-env.sh contains __PGPORT__ and __COORDINATOR_DATA_DIRECTORY__ values)
source gpAux/gpdemo/gpdemo-env.sh

#The directory, the TCP ports, the number of segments, and the existence of standbys for segments and coordinator for the demo cluster can be changed on the fly. Instead of make create-demo-cluster, consider:

DATADIRS=/tmp/gpdb-cluster PORT_BASE=5555 NUM_PRIMARY_MIRROR_PAIRS=1 WITH_MIRRORS=false make create-demo-cluster

#The TCP port for the regression test can be changed on the fly:

PGPORT=5555 make installcheck-world

#To turn GPORCA off and use Postgres planner for query optimization:

set optimizer=off;

#If you want to clean all generated files

make distclean
  

Running tests

  • The default regression tests
    make installcheck-world
  • 최상위 타깃인 installcheck-world는 실행 중인 클러스터에 대해 GPDB에서 모든 회귀 테스트(regression tests)를 실행합니다. 개별 부분을 테스트하기 위해 각 타깃을 별도로 실행할 수 있습니다.
  • PostgreSQL check 테스트는 실행되지 않습니다. Greenplum 클러스터를 설정하는 것은 단일 노드 PostgreSQL 설치보다 더 복잡하며, make check는 클러스터를 생성을 자동으로 하지 않습니다. 클러스터를 수동으로 생성하거나 gpAux/gpdemo/(아래 예제)를 사용하여 클러스터를 생성하고 이에 대해 최상위 디렉토리에서 make installcheck-world를 실행하세요.
  • PostgreSQL의 installcheck 역시 실행되지 않습니다. Greenplum에서 해당 테스트는 실패하기 때문입니다. src/test/regress 의 installcheck-good은 이와 같은 테스트들을 제외합니다.
  • 신규 테스트를 추가할 때에는 업스트림으로부터 상속받은 PostgreSQL 테스트에 넣지 말고 greenplum_schedule의 GPDB-specific에 추가해야 합니다. 최신 PostgreSQL 릴리스와의 병합을 더 쉽게 하기 위해 gpdb의 테스트를 PostgreSQL의 업스트림 테스트 버전과 동일하게 유지하려고 노력합니다..
PostgreSQL upstream은 공식 postgresql git 저장소를 의미하며, 해당 테스트를 PostgreSQL upstream 테스트라고 합니다.
 
PostgreSQL 공식 git 리파지토리는 아래 링크에서 찾을 수 있으며 "git://git.postgresql.org/git/postgresql.git"와 같습니다.
 
그 외에 github의 공식 미러 사이트는 다음과 같습니다.

GPDB Code layout

리포지토리의 디렉터리 레이아웃은 업스트림 PostgreSQL과 동일한 일반 레이아웃을 따릅니다. 코드베이스 전체에 걸쳐 PostgreSQL과 비교하여 변경된 사항이 있지만, 주목할 만한 몇 가지 큰 추가 사항이 있습니다:

gpMgmt/

클러스터 관리를 위한 Greenplum 전용 명령줄 도구가 포함되어 있습니다. gpinit, gpstart, gpstop과 같은 스크립트가 여기에 있습니다. 대부분 Python으로 작성되어 있습니다.

gpAux/

Greenplum 관련 릴리스 관리 스크립트 및 공급업체 종속성이 포함되어 있습니다. 일부 추가 디렉터리는 서브모듈이며 시간이 지남에 따라 제공될 예정입니다.

gpcontrib/

이 디렉터리에는 PostgreSQL contrib/ 디렉터리와 마찬가지로 Greenplum에 특화된 gpfdist와 같은 확장자가 포함되어 있습니다.

doc/

PostgreSQL에서는 사용자 설명서가 여기에 있습니다. Greenplum에서는 사용자 설명서가 별도로 유지 관리되며 매뉴얼 페이지를 작성하는 데 사용되는 참조 페이지만 여기에 있습니다.

gpdb-doc/

DITA XML 형식의 Greenplum 설명서를 포함합니다. 문서를 빌드하고 작업하는 방법에 대한 자세한 내용은 gpdb-doc/README.md를 참조하세요.

ci/

GPDB 연속 통합 시스템용 구성 파일이 포함되어 있습니다.

src/backend/cdb/

더 큰 규모의 Greenplum 전용 백엔드 모듈을 포함합니다. 예를 들어, 세그먼트 간 통신, 계획을 병렬화 가능한 계획으로 전환, 미러링, 분산 트랜잭션 및 스냅샷 관리 등 cdb는 클러스터 데이터베이스를 의미하며, 초기에 사용하던 작업명이었습니다. 이 이름은 더 이상 사용되지 않지만 cdb 접두사는 남아 있습니다.

src/backend/gpopt/

Greenplum과 함께 GPORCA 옵티마이저를 사용하기 위한 소위 번역기 라이브러리가 포함되어 있습니다. 번역기 라이브러리는 C++ 코드로 작성되며, GPORCA에서 사용하는 DXL 형식과 PostgreSQL 내부 표현 간에 Plan 및 쿼리를 번역하기 위한 글루 코드(glue code)가 포함되어 있습니다.

src/backend/gporca/

GPORCA 옵티마이저 코드와 테스트가 포함되어 있습니다. C++로 작성되었습니다. 자세한 정보와 GPORCA를 단위 테스트하는 방법은 README.md를 참조하세요.

src/backend/fts/

FTS는 코디네이터 노드에서 실행되는 프로세스로, 주기적으로 세그먼트를 폴링하여 각 세그먼트의 상태를 유지합니다.

facebook twitter kakaoTalk kakaostory naver band shareLink