본문 바로가기
DBMS

Alibaba PolarDB 오픈소스 파해치기 - github 분석 1

by developer's warehouse 2023. 11. 25.

이 글에서는 https://github.com/ApsaraDB/PolarDB-for-PostgreSQL 주소에 오픈된 Alibaba PolarDB 오픈소스에 대해서 설명합니다. 

Alibaba PolarDB 오픈소스 파해치기 - github 분석 1

Overview


PostgreSQL용 PolarDB(이하 PolarDB로 약칭)는 Alibaba Cloud에서 독자적으로 개발한 클라우드 네이티브 데이터베이스 서비스입니다. 이 서비스는 PostgreSQL과 100% 호환되며, 컴퓨팅과 스토리지가 분리된 공유 스토리지 기반 아키텍처를 사용합니다. 이 서비스는 유연한 확장성, 밀리초 수준의 지연 시간, 하이브리드 트랜잭션/분석 처리(HTAP) 기능이 특징입니다.

유연한 확장성(Flexible scalability): 

이 서비스를 사용하여 비즈니스 요구 사항에 따라 컴퓨팅 클러스터 또는 스토리지 클러스터를 확장할 수 있습니다.

컴퓨팅 성능이 부족한 경우 컴퓨팅 클러스터만 스케일아웃할 수 있습니다.

스토리지 용량 또는 스토리지 I/O가 부족한 경우, 서비스 중단 없이 스토리지 클러스터를 스케일아웃할 수 있습니다.

밀리초 수준의 지연 시간(Millisecond-level latency):

미리 쓰기 로깅(WAL) 로그가 공유 스토리지에 저장됩니다. WAL 레코드의 메타데이터만 Read-Write 노드에서 Read-Only 노드로 복제됩니다.

PolarDB에서 제공하는 LogIndex 기술은 지연 재생과 병렬 재생의 두 가지 레코드 재생 모드를 제공합니다. 이 기술은 읽기-쓰기 노드에서 읽기 전용 노드로의 레코드 복제 지연 시간을 최소화하는 데 사용할 수 있습니다.

HTAP (hybrid transactional/analytical processing): 

HTAP는 공유 스토리지 기반의 대규모 병렬 처리(MPP) 아키텍처를 사용하여 구현됩니다. 이 아키텍처는 온라인 트랜잭션 처리(OLTP) 시나리오에서 온라인 분석 처리(OLAP) 쿼리를 가속화하는 데 사용됩니다. PolarDB는 OLTP 시나리오에서 사용되는 모든 데이터 유형을 지원합니다. PolarDB는 이러한 유형의 데이터를 처리할 수 있는 두 가지 컴퓨팅 엔진을 지원합니다:

 

  • 독립 실행형: 높은 동시성을 특징으로 하는 OLTP 쿼리를 처리합니다.
  • 분산 실행: 대규모 OLAP 쿼리를 처리합니다.
PolarDB 개요
 

 

Branch Introduction


https://github.com/ApsaraDB/PolarDB-for-PostgreSQL 브랜치는 POLARDB_11_STABLE 입니다.

POLARDB_11_STABLE은 컴퓨팅-저장소 분리 아키텍처를 지원하는 PostgreSQL 11.9 기반의 안정 브랜치입니다. The distributed branch supports distributed architecture.
 

Architecture and Roadmap


PolarDB는 컴퓨팅과 스토리지가 분리된 공유 스토리지 기반 아키텍처를 사용합니다. 기존의 Shared-nothing 아키텍처가 Shared-storage 아키텍처로 변경됩니다. 
 
컴퓨팅 클러스터의 데이터 복사본 N개와 스토리지 클러스터의 데이터 복사본 N개가 컴퓨팅 클러스터의 데이터 복사본 N개와 스토리지 클러스터의 데이터 복사본 1개로 변경됩니다. 
공유 스토리지에는 하나의 데이터 사본이 저장되지만 메모리의 데이터 상태는 다릅니다. 
 
Architecture PolarDB
데이터 일관성을 보장하기 위해 WAL 로그를 기본 노드(Primary)에서 읽기 전용(Read-Only) 노드로 동기화 해야 합니다. 
또한 기본 노드가 더티 페이지를 플러시할 때 읽기 전용 노드가 그 페이지를 읽지 못하도록 제어해야 합니다. 
한편, 읽기 전용 노드는 메모리에서 올바르게 replay되지 않은 오래된 페이지(적절하게 Redo되지 않은)를 읽지 못하도록 해야 합니다. 
이 문제를 해결하기 위해 PolarDB는 페이지 replay 기록을 유지하기 위한 인덱스 구조 LogIndex를 제공합니다. 
LogIndex는 기본(Primary) 노드에서 읽기 전용(Read-Only) 노드로 데이터를 동기화하는 데 사용할 수 있습니다.
 
컴퓨팅이 스토리지에서 분리되면 I/O latency와 throughput이 증가합니다. 단일 읽기 전용 노드를 사용하여 분석 쿼리를 처리하는 경우, 다른 읽기 전용 노드의 CPU, 메모리, I/O와 대용량 스토리지 I/O 대역폭을 충분히 활용할 수 없습니다. 
이 문제를 해결하기 위해 PolarDB는 공유 스토리지 기반 MPP 엔진을 제공합니다. 
이 엔진은 CPU를 사용해 SQL 수준에서 분석 쿼리를 가속화하고 HTAP용 OLAP 워크로드와 OLTP 워크로드의 혼합을 지원할 수 있습니다.

For more information, see Architecture.

Please refer to Online Documentation Website to see the whole documentations.
facebook twitter kakaoTalk kakaostory naver band shareLink