LLM WikiAccess-protected knowledge portal
← 스터디 홈
148편 · 약 14분

Apache Cloudberry 2.1.0: PostgreSQL 기반 MPP에 UDP2 인터커넥트·ORCA 개선·MCP 지원을 추가한 분산 분석 DB

요약

Apache Cloudberry (Incubating) 2.1.0이 2026년 4월 13일 출시됐다. Greenplum Database의 오픈소스 후계자인 Cloudberry는 PostgreSQL 기반 MPP(Massively Parallel Processing) 분석 데이터베이스다.

참고: 이 챕터는 릴리스 후 137일 시점 작성으로, 90일 기준을 벗어난다. 2026-08-28 기준 동등한 아키텍처 변화를 다루는 90일 이내 MPP 분석 DB 릴리스가 없어 180일 기준을 적용했다.

2.1.0의 핵심 변화:

  1. UDP2 인터커넥트 프로토콜: 세그먼트 간 통신 효율을 높이는 새 네트워킹 레이어.
  2. ORCA 옵티마이저 개선: CTE 프루닝, 부분 집계 푸시다운, 정확성·메모리 수정 다수.
  3. MCP 서버 지원: LLM 기반 도구와의 통합을 위한 Model Context Protocol 서버 내장.
  4. LZ4 컬럼 압축, AO 테이블 fast ANALYZE.

Greenplum/Cloudberry 운영자에게는 업그레이드 경로가 명확하다. 신규 도입자에게는 ClickHouse·Trino·StarRocks와 어디가 다른지 이해하는 것이 먼저다.


Cloudberry란 무엇인가

Apache Cloudberry는 Greenplum Database를 기반으로 한 공개 소스 MPP 분석 데이터베이스다. Greenplum이 Broadcom 인수 이후 상업화 방향으로 선회하자, 커뮤니티가 독립 포크로 Apache Incubator에 기증한 것이 Cloudberry다.

Apache Cloudberry MPP 아키텍처 클라이언트 / BI 도구 PostgreSQL 프로토콜 (JDBC/ODBC) Master / Coordinator 쿼리 파싱 → ORCA 플래너 → 분산 실행 계획 글로벌 카탈로그, 트랜잭션 관리 (PostgreSQL) UDP2 인터커넥트 프로토콜 (v2.1.0 신규) 세그먼트 간 데이터 재분배 (hash/broadcast/gather motion) — 성능·안정성 개선 Segment 0 Primary + Mirror PostgreSQL 실행 엔진 AO/Heap 테이블, 로컬 인덱스 Segment 1 Primary + Mirror PostgreSQL 실행 엔진 AO/Heap 테이블, 로컬 인덱스 Segment 2 Primary + Mirror PostgreSQL 실행 엔진 AO/Heap 테이블, 로컬 인덱스 ··· Segment N Primary + Mirror PostgreSQL 실행 엔진 AO/Heap 테이블, 로컬 인덱스 공유 스토리지 레이어 (로컬 디스크 or S3/오브젝트 스토리지 via PXF)
Apache Cloudberry 아키텍처 개요

Greenplum과의 관계

  • Cloudberry는 Greenplum 7 코드베이스에서 파생됐다.
  • 라이선스: Apache 2.0
  • PostgreSQL 14 커널 기반 (16 업그레이드 진행 중)
  • 기존 Greenplum SQL과의 높은 호환성

UDP2 인터커넥트 프로토콜

기존 인터커넥트의 문제

MPP 쿼리에서 세그먼트 간 데이터 교환(Motion)은 핵심 병목이다. Hash join, GROUP BY, ORDER BY 등 재분배가 필요한 연산은 네트워크 이동 없이 불가능하다.

기존 UDP 기반 인터커넥트는:

  • 패킷 재전송 처리가 단순했다
  • 대규모 클러스터(수십 노드)에서 단편화(fragmentation)가 성능에 영향을 줬다
  • 고속 네트워크(25GbE/100GbE) 활용에 최적화되지 않았다

UDP2가 다른 점

UDP2는 동일한 UDP 프로토콜 위에서 전송 제어 레이어를 재작성했다.

항목기존 UDPUDP2
흐름 제어고정 윈도적응형 윈도
재전송 단위패킷 단위청크 단위
단편화 처리단순최적화
고속 네트워크 지원보통개선

업그레이드 시 별도 설정 없이 기본 활성화된다. 클러스터 내 모든 노드가 동일 버전이어야 한다(혼합 버전 비지원).


ORCA 옵티마이저 개선

ORCA(Orca Query Optimizer)는 Greenplum/Cloudberry에서 사용하는 비용 기반 쿼리 옵티마이저다. 카탈로그 통계, 실행 계획 탐색 공간 추론, 비용 모델 계산을 담당한다.

CTE 프루닝

CTE(Common Table Expression)에서 사용되지 않는 컬럼을 조기에 제거한다. 와이드 테이블에서 WITH 절을 사용하면서 소수의 컬럼만 참조할 때 불필요한 데이터 이동이 줄어든다.

-- CTE에서 col3, col4는 사용되지 않음
WITH events AS (
  SELECT col1, col2, col3, col4 FROM large_table
)
SELECT col1, col2 FROM events WHERE col1 > 100;
-- ORCA가 col3, col4 스캔·이동을 프루닝

부분 집계 푸시다운(Partial Aggregate Pushdown)

GROUP BY 집계를 세그먼트 로컬에서 부분적으로 먼저 수행한 뒤, 코디네이터로 전송해 최종 집계한다. 네트워크 전송 데이터량이 대폭 줄어든다.

기존: 각 세그먼트의 모든 행 → Motion → 코디네이터 GROUP BY
신규: 각 세그먼트에서 로컬 GROUP BY → Motion → 코디네이터 최종 집계

TPC-H 집계 중심 쿼리에서 효과가 크다.


MCP 서버 내장

2.1.0의 주목할 만한 기능은 MCP(Model Context Protocol) 서버를 데이터베이스에 직접 내장한 것이다. LLM 에이전트가 Cloudberry에 직접 연결해 스키마 탐색, 쿼리 실행, 결과 반환을 수행할 수 있다.

작동 방식

LLM 에이전트
  └─ MCP 클라이언트 (Claude Code, Cursor 등)
        └─ MCP 프로토콜 (HTTP/stdio)
              └─ Cloudberry MCP 서버
                    ├─ 도구: list_schemas, list_tables, describe_table
                    ├─ 도구: execute_query (읽기 전용 기본값)
                    └─ Cloudberry SQL 실행 엔진

운영 주의사항

  • MCP 서버는 별도 포트에서 실행된다(기본값: 확인 필요).
  • execute_query 도구는 기본적으로 읽기 전용이다. 쓰기를 허용하려면 명시적 구성 필요.
  • LLM이 생성한 SQL이 대형 전체 스캔이나 카르티전 곱을 만들 수 있다. statement_timeout 설정 권장.
  • 감사 로그(audit log)가 MCP를 통한 쿼리를 일반 쿼리와 동일하게 기록하는지 확인 필요.

LZ4 컬럼 압축과 fast ANALYZE

LZ4 컬럼 압축

AO(Append-Optimized) 테이블의 컬럼 압축 코덱으로 LZ4가 추가됐다.

압축 방식압축률CPU 비용용도
zstd level 1~9높음높음콜드 데이터, 비용 우선
quicklz중간낮음범용
lz4 (신규)중간매우 낮음쿼리 집약 워크로드
snappy중간낮음범용

LZ4는 압축 해제 속도가 빠르다. 읽기 집약적인 분석 쿼리에서 압축 해제 CPU 비용을 줄이면서 스토리지 절감을 유지한다.

CREATE TABLE fact_sales (
  sale_date date,
  amount    numeric,
  product   text
)
WITH (
  appendoptimized = true,
  orientation = column,
  compresstype = lz4,        -- 신규
  compresslevel = 1
)
DISTRIBUTED BY (sale_date);

fast ANALYZE for AO 테이블

Append-Optimized 테이블의 ANALYZE가 빨라졌다. AO 테이블 특성상 새로 추가된 데이터 블록만 샘플링해 통계를 업데이트할 수 있어 전체 스캔이 불필요한 경우에도 그동안 전체 재분석을 수행했다. 2.1.0은 증분 통계 수집 경로를 최적화했다.


Cloudberry vs 동종 분석 DB

Cloudberry를 선택하는 시나리오와 그렇지 않은 시나리오를 명확히 구분해야 한다.

기준CloudberryClickHouseTrinoStarRocks
쿼리 언어PostgreSQL SQLClickHouse SQLANSI SQLMySQL-방언 SQL
실행 모델공유-nothing MPP컬럼형 단일 노드/클러스터분산 SQL (외부 스토리지)공유-nothing MPP
트랜잭션 지원PostgreSQL 트랜잭션제한적없음 (읽기 전용)제한적
운영 복잡도높음 (미러, 세그먼트 관리)중간중간 (카탈로그 관리)중간
적합한 워크로드복잡한 OLAP + DML이벤트 분석, 시계열레이크하우스 쿼리실시간 OLAP

Cloudberry가 빛나는 시나리오는 PostgreSQL 호환 SQL이 필요하면서 대규모 병렬 집계가 필요한 경우다. 기존 Greenplum 환경의 마이그레이션이 가장 자연스러운 경로다.


운영 체크리스트

2.0 → 2.1.0 업그레이드

□ 모든 세그먼트와 마스터를 동시 업그레이드 (UDP2 혼합 버전 비지원)
□ UDP2 활성화 후 인터커넥트 트래픽 패턴 모니터링
  - 패킷 재전송률 확인: gp_interconnect_transmit_timeout
□ ORCA 옵티마이저 변경사항 검증
  - 주요 쿼리의 EXPLAIN 계획 비교 (2.0 vs 2.1.0)
  - CTE 프루닝으로 계획이 바뀐 쿼리의 정확성 검증
□ MCP 서버 활성화 여부 결정
  - 불필요하면 비활성화
  - 활성화 시 인증·권한·statement_timeout 설정
□ LZ4 압축 대상 테이블 선정
  - 읽기 집약 AO 테이블부터 시범 적용

핵심 모니터링 지표

-- 세그먼트 헬스
SELECT dbid, role, status FROM gp_segment_configuration;

-- 인터커넥트 통계 (UDP2)
SELECT * FROM gp_stat_interconnect;

-- AO 테이블 용량 및 압축률
SELECT relname,
       pg_size_pretty(pg_relation_size(oid)) AS size
FROM pg_class
WHERE relname = 'fact_sales';

Open questions

  • UDP2가 Greenplum 7과의 상호 운용에서 어떻게 동작하는지 (마이그레이션 중 혼합 버전 환경)
  • MCP 서버가 공식적으로 지원하는 인증 방식 (mTLS, API key 등) 세부 사항
  • PostgreSQL 14 → 16 커널 업그레이드 일정 (현재 진행 중, v3.0에서 완료 예정)

References

  • https://cloudberry.apache.org/blog/announce-apache-cloudberry-2.1.0/ — Apache Cloudberry 2.1.0 릴리스 발표 (2026-04-13)
  • https://www.postgresql.org/about/news/apache-cloudberry-210-released-postgresql-based-mpp-database-for-analytics-ai-workloads-3274/ — PostgreSQL News: Cloudberry 2.1.0
  • https://github.com/apache/cloudberry/releases — Apache Cloudberry GitHub 릴리스
  • https://github.com/apache/cloudberry/discussions/868 — Apache Cloudberry 로드맵 토론
  • https://incubator.apache.org/clutch/cloudberry.html — Apache Cloudberry 인큐베이터 상태